Collect Payments Automatically
SEPA Direct Debit lets you pull funds directly from customer accounts — ideal for subscriptions, recurring billing, and scheduled collections. Inventi routes your direct debits through CENTROlink (Bank of Lithuania) and EKS (Bank of Latvia) to reach accounts across Europe.What happens when you collect a payment:
- You submit a direct debit request via API with a valid mandate
- Inventi validates and forwards to CENTROlink or EKS
- The debtor’s bank processes the collection
- You receive status updates via webhooks
Supported Schemes
SDD Core
Consumer direct debits with extended refund rights (8 weeks unconditional, 13 months for unauthorized)
SDD B2B
Business-to-business collections with limited refund rights and faster settlement
API Reference
Create SDD Payment
Initiate a direct debit collection
Cancel SDD Payment
Cancel a pending collection
Return SDD Payment
Return funds before settlement
Reverse SDD Payment
Reverse after settlement
Business Requirements
Valid mandate is required
Valid mandate is required
Every direct debit must reference a valid SEPA mandate signed by the debtor. Store mandate details including:
- Mandate reference (unique identifier)
- Signing date
- Debtor name and IBAN
- Sequence type (FRST, RCUR, OOFF, FNAL)
Respect collection timing
Respect collection timing
Submit collections with appropriate lead time:
- SDD Core: 2 business days before due date (D-2) for recurring, 5 days (D-5) for first collection
- SDD B2B: 1 business day before due date (D-1)
Late submissions may be rejected or processed on the next available settlement date.
Handle refunds and returns
Handle refunds and returns
Debtors can dispute direct debits:
- Core scheme: 8 weeks unconditional refund right, 13 months for unauthorized debits
- B2B scheme: No refund right (pre-authorized by debtor’s bank)
Use idempotency for collections
Use idempotency for collections
Always send an
Idempotency-Key header when creating direct debits. If your request times out, retry with the same key to prevent duplicate collections.Transaction Lifecycle
Transaction Statuses
- Collection Flow
- Return/Refund
- Error States
| Status | Description | Timing |
|---|---|---|
Created | Direct debit initiated | Immediate |
To sign | Awaiting approval (if configured) | Until signed |
Signed | Approved, queued for due date | Until D-2/D-1 |
Accepted | Submitted to debtor’s bank | Settlement date |
Completed | Funds collected | D+0 to D+2 |
Create a Direct Debit
Request Fields
Your collection account IBAN
Your company name
Customer’s IBAN to debit
Customer’s name as on mandate
Amount in cents
Currency code (EUR)
Unique mandate reference
Mandate signing date (YYYY-MM-DD)
FRST (first), RCUR (recurring), OOFF (one-off), FNAL (final)Payment description shown to debtor
Handle Returns and Reversals
- Return (Pre-Settlement)
- Reversal (Post-Settlement)
Return a direct debit before settlement when the collection cannot be processed.Common return reasons:
| Code | Description |
|---|---|
AM04 | Insufficient funds |
AC04 | Closed account |
MD01 | No valid mandate |
MS02 | Missing information |
Collection Flow
Webhook Integration
Each status transition triggers a webhook notification:Transaction identifier
OUTBOUND for collections you initiatedCurrent transaction status
Amount in cents
Mandate reference for the collection
Reason code if returned or rejected
Data Model
Store these fields for complete tracking:Platform transaction ID (primary key)
Reference to customer mandate
FRST, RCUR, OOFF, or FNAL
Your generated key for retry safety
Latest transaction status
Reason code if returned
Integration Checklist
1
Implement mandate management
Store valid mandates with references, dates, and sequence tracking
2
Use idempotency
Generate and persist an
Idempotency-Key for each collection3
Submit with correct timing
Ensure collections are submitted with appropriate lead time (D-2/D-5 for Core, D-1 for B2B)
4
Handle returns and reversals
Build automated processing for failed collections and customer disputes
5
Track sequence types
Update sequence type from FRST to RCUR after first successful collection
6
Implement webhook receiver
Process status updates to keep your billing system synchronized