پرسش‌ها

پرسش‌های متداول Pain001 برای خزانه‌داری، عملیات و مهندسی

پاسخ‌های روشن برای خزانه‌داران، عملیات پرداخت، مهندسان و حسابرسان، به همان زبانی که مردم واقعاً می‌پرسند.

پاسخ‌های روشن برای خزانه‌داران، عملیات پرداخت، مهندسان و حسابرسان. پرسش‌ها به همان شکلی نوشته شده‌اند که مردم واقعاً می‌پرسند. برای جزئیات فنی بیشتر، مرجع فنی را ببینید.


برای مدیران خزانه‌داری و مالی#

pain.001 همان پیام ISO 20022 است که مشتری برای آغاز انتقال‌های اعتباری به بانک خود می‌فرستد. این پیام جانشین XML قالب‌هایی مانند SWIFT MT101 و فایل‌های تخت داخلی است. بانک شما پیش از پذیرش، آن را در برابر یک طرحواره و یک آیین‌نامه طرح اعتبارسنجی می‌کند. Pain001 (نرم‌افزار) این فایل‌ها را از داده‌ای که هم‌اکنون در اختیار دارید می‌سازد و پیش از ارسال ثابت می‌کند که معتبرند.

جهت جریان پول. pain.001 انتقال اعتباری را آغاز می‌کند: پول را بیرون می‌فرستید. pain.008 برداشت مستقیم را آغاز می‌کند: پولی را که بر پایه یک مجوز به شما بدهکارند وصول می‌کنید. Pain001 هر دو را تولید می‌کند: ده نسخه pain.001 (.001.03 تا .001.12) و pain.008.001.02.

فوری. SWIFT پیام‌های دسته 1، 2 و 9 از خانواده MT را برای دستورهای پرداخت برون‌مرزی بین‌بانکی در نوامبر 2025 بازنشسته کرد؛ کانال‌های شرکتی که هنوز MT را می‌پذیرند، این کار را به صلاحدید هر بانک و در فرصتی عاریتی انجام می‌دهند. بارگذار MT101 جریان‌های موجود MT101 را بدون بازتایپ هیچ داده‌ای به pain.001 معتبر تبدیل می‌کند.

Swift قصد داشت از نوامبر 2026 پذیرش نشانی‌های پستی کاملاً بدون ساختار را در پرداخت‌های برون‌مرزی CBPR+ متوقف کند. در اوت 2026 این تاریخ را به تعویق انداخت و تاریخ جدید را تا دسامبر 2026 اعلام خواهد کرد، اما قاعده تغییری نکرده است: نشانی‌ها باید ساخت‌یافته یا ترکیبی باشند و از عناصری مجزا مانند شهر (<TwnNm>) و کشور (<Ctry>) به‌جای سطرهای متن آزاد استفاده کنند. اگر داده‌های مرجع شما نشانی‌ها را به‌صورت یک‌تکه نگه می‌دارد، کار اصلی در داده شماست، نه در اتصال بانکی. از همان‌جا آغاز کنید. گزارش 2026 جدول زمانی را با جزئیات پوشش می‌دهد.

هیچ. هسته با مجوز دوگانه Apache-2.0 / MIT عرضه می‌شود؛ بسته‌های همراه Apache-2.0 هستند. استفاده تجاری، تغییر و بازتوزیع همگی مجازند. برای درک مقیاس، تنها SDK ترجمه SWIFT سالانه €10,000–30,000 قیمت‌گذاری شده است.


برای عملیات پرداخت#

چهار علت تکرارشونده: نقض طرحواره (عنصر نادرست، نسخه نادرست، فضای نام نادرست)، شناسه‌های معیوب (شکست رقم کنترلی IBAN، BIC بدشکل)، مجموع‌های کنترلی ناسازگار (NbOfTxs / CtrlSum که با تراکنش‌ها نمی‌خواند) و نویسه‌های بیرون از مجموعه لاتین ISO 20022. Pain001 هر چهار مورد را پیش از آنکه فایلی وجود داشته باشد بررسی می‌کند: اعتبارسنجی JSON Schema برای هر رکورد، بررسی باقی‌مانده بر 97 برای IBAN و ساختار ISO 9362 برای BIC، بازمحاسبه مجموع‌های کنترلی، حرف‌نگاری نویسه‌ها و اعتبارسنجی نهایی XSD روی XML رندرشده.

بله. از pain001 --dry-run (یا زیرفرمان validate، یا POST /api/v1/validate) استفاده کنید. کد خروج 0 یعنی معتبر؛ 1 یعنی اعتبارسنجی با خطاهای سطح فیلد شکست خورده است. آن را در CI یا در سیاهه بررسی پیش از ارسال بگنجانید.

پنج آیین‌نامه طرح به‌صورت درون‌ساخت عرضه می‌شوند: انتقال اعتباری SEPA (sepa-sct)، SEPA Instant (sepa-inst)، برداشت مستقیم SEPA Core (sepa-sdd)، SEPA B2B (sepa-b2b) و انتقال اعتباری برون‌مرزی (xborder-ct). با --scheme <name> --explain می‌توانید هر قاعده موفق یا ناموفق را ببینید.

Excel رشته‌های شبیه IBAN را خاموشانه به عدد تبدیل می‌کند. بارگذار Excel فایل‌های .xlsx/.xlsm را مستقیماً می‌خواند و اگر ستون‌های IBAN حاوی سلول عددی باشند، کار را قاطعانه متوقف می‌کند؛ بنابراین خرابی هنگام بارگذاری گرفته می‌شود، نه در بانک.

--streaming ورودی را در تکه‌هایی با مصرف حافظه کران‌دار پردازش می‌کند (پیش‌فرض 1,000 تراکنش) و هر تکه به‌عنوان فایل XML مستقل خود، با مجموع‌های کنترلی درست و بازمحاسبه‌شده، منتشر می‌شود. رابط REST نیز به همین دلیل POST /api/v1/generate/async را همراه با پرس‌وجوی وضعیت کار ارائه می‌دهد.


برای مهندسان و معماران#

هر سه به‌عنوان سطوح درجه‌یک در دسترس‌اند: یک رابط Python نوع‌دار، یک CLI با کدهای خروج مناسب CI، و یک ریزخدمت FastAPI (pain001 serve) با نقاط انتهایی همگام، کار ناهمگام، سلامت و سنجه‌های Prometheus. خط لوله اعتبارسنجی زیرین یکی است، بنابراین نتایج میان این سطوح هرگز واگرا نمی‌شود.

مبالغ در تولید و اعتبارسنجی طرح، سرتاسر به‌صورت decimal.Decimal هستند. به‌شکل اعشاری دقیق تجزیه می‌شوند، به‌شکل اعشاری دقیق جمع می‌شوند و بدون بازنمایی شناور رندر می‌گردند. مجموع‌های کنترلی از روی رکوردهای اعتبارسنجی‌شده بازمحاسبه می‌شوند و هرگز از ورودی پذیرفته نمی‌شوند.

همه تجزیه‌های XML از مسیر defusedxml می‌گذرند (که حمله‌های XXE و انفجار موجودیت را مسدود می‌کند)؛ lxml در درخت وابستگی‌ها وجود ندارد. ورودی‌ها از یک اعتبارسنج پیمایش مسیر عبور می‌کنند. تصویر Docker با کاربر غیرروت اجرا می‌شود. برای انتشارهای هسته یک SBOM با قالب CycloneDX تولید می‌شود و شناسایی افزونه‌های شخص ثالث را می‌توان به‌کلی با PAIN001_DISABLE_PLUGINS=1 غیرفعال کرد.

پوشش 100% خطوط و شاخه‌ها به‌عنوان دروازه سخت CI روی هسته (به‌شکل قابل راستی‌آزمایی: 3,828 خط و 926 شاخه با پوشش 100%)، mypy سخت‌گیرانه، پوشش 100% رشته‌های مستندسازی، لینت امنیتی Bandit و pip-audit، و پویش CodeQL. بسته‌های همراه نیز همان انضباط پوشش 100% را رعایت می‌کنند.

بله، از طریق چهار گروه نقطه‌ورود افزونه (pain001.loaders، pain001.validators، pain001.schemes، pain001.writers). بارگذار Excel خود یک افزونه است که از پروتکل عمومی استفاده می‌کند، پس هم‌زمان نقش پیاده‌سازی مرجع را نیز ایفا می‌کند.


برای حسابرسان و انطباق#

بله. نسخه بسته را تثبیت کنید، همان ورودی را دوباره اجرا کنید و خروجی قطعی خواهد بود. چون زنجیره ابزار متن‌باز است، ردّ حسابرسی تا خودِ مسیر کد امتداد می‌یابد، نه فقط تا گواهی یک فروشنده.

خیر. هر مؤلفه (CLI، کتابخانه، REST API، سرور MCP و LSP) به‌صورت محلی اجرا می‌شود. هیچ تله‌متری، هیچ فراخوان بازگشتی به SaaS و هیچ سرویس اعتبارسنجی بیرونی در کار نیست. سرور MCP تنها با stdio سخن می‌گوید و هر 17 ابزار آن با برچسب فقط‌خواندنی و خودتوان حاشیه‌نویسی شده‌اند.

Sebastien Rousseau، مدیر مهندسی فین‌تک مستقر در لندن، به‌همراه مشارکت‌کنندگان جامعه. توسعه به‌صورت عمومی در GitHub انجام می‌شود، انتشارها در PyPI منتشر می‌گردد و سیاهه تغییرات با هر انتشار نسخه‌گذاری می‌شود.