pain.008 is the inverse of pain.001: the creditor pulls funds from the debtor's account instead of pushing them. It is the foundation of SEPA SCC (CORE direct debit) and SEPA SDD B2B.
The message envelope mirrors pain.001 — GroupHdr + N PmtInf blocks + N DrctDbtTxInf blocks per PmtInf. The key additions are: a *sequence type* per transaction (FRST, RCUR, OOFF, FNAL) that tells the rail whether this is the first collection on a mandate, a recurring one, a one-off, or the final one; the mandate metadata (MndtId, DtOfSgntr); and creditor-scheme-identifier fields specific to SEPA SDD.
A critical rail-enforcement rule: under SEPA SDD CORE the first collection (FRST) must be presented to the debtor bank at least 5 banking days before the requested collection date; subsequent (RCUR) collections require at least 2. iso-compliant validates the *shape* of the request but does not enforce rail lead-times — that is a customer-side scheduling concern.
iso-compliant emits pain.008 deterministically at POST /v1/iso20022/pain.008 with CORE and B2B variants, sequence-type grouping enforcement, and mandate metadata validation. See apps/api/src/lib/pain008-builder.ts.