SEPA Direct Debit (pain.008)
Create pain.008 files to collect invoice amounts via SEPA direct debit — you upload the file yourself in your bank's online banking.
Contents
SEPA Direct Debit (pain.008)
SEPA Direct Debit lets you automatically collect invoice amounts from your customers' bank accounts instead of waiting for manual transfers. dVersum generates the ISO 20022-compliant pain.008 XML file, which you upload in your bank's online banking.
Important: dVersum is purely a file generator. We never access your bank account and never store bank credentials — you stay in full control.
Prerequisites
| Requirement | Where |
|---|---|
| Creditor ID (Gläubiger-Identifikationsnummer) | Apply for free at the Deutsche Bundesbank — takes ~5 minutes online |
| Business account with SEPA direct debit privileges | At your bank — all Sparkassen, Volksbanken, Commerzbank, Deutsche Bank, DKB and Postbank support it |
| Signed mandate per customer | Paper or PDF — physically signed by the customer |
Setup in dVersum
- Open Settings → SEPA Direct Debit (admin-only).
- Enter Creditor ID, company name (as it appears on bank statements), and collecting IBAN.
- Select the pain.008 version:
- pain.008.001.02 (default) — accepted by virtually all German banks.
- pain.008.001.08 — newer variant, check whether your bank supports it.
- Save.
Creditor ID and IBAN are stored AES-256-GCM-encrypted and never returned in plaintext.
Add a mandate per customer
Each customer you want to collect from signs a one-time SEPA mandate. Here's how to record it in dVersum:
- Open the customer's detail page.
- Scroll to the Mandates section.
- Click + New mandate.
- Pick the scheme:
- CORE (default) — for consumers and businesses. Debtor has 8 weeks to demand a refund without giving any reason.
- B2B — businesses only. No refund right, but the debtor must register the mandate at their own bank in advance (Sperreintrag).
- Enter signed date, account holder, and debtor IBAN.
- Save — dVersum generates a unique mandate reference (e.g.
MNDT-2026-000001).
Switch an invoice to SEPA
On any invoice you want to collect via direct debit:
- In the invoice editor, set Payment channel to "SEPA Direct Debit".
- A second dropdown appears showing this client's active mandates — pick the right one.
- Save and send the invoice as usual.
The invoice email automatically switches into pre-notification mode. Instead of "Please transfer …" the customer reads:
We will debit EUR 500 on 2026-06-15 according to SEPA mandate MNDT-2026-000042 from your account …1234. Please do not transfer manually.
This avoids the most common support ticket — customer transfers AND gets debited.
Build a batch & submit
Typically once a month:
- Open Finance → SEPA Direct Debit.
- Step 1: Pick the collection date (default: next business day, minimum D-1 TARGET2 business day).
- Step 2: Tick the invoices — the table shows all invoices with payment channel "SEPA Direct Debit" and status NULL/returned.
- Live preview on the right: number of transactions, control sum, breakdown by (scheme, sequence). FRST = first collection, RCUR = recurring collection.
- Click Generate & download file — the pain.008 XML file (
SEPA-2026-00001.xml) downloads and the invoices are marked as "in batch".
Upload to online banking
Steps vary slightly by bank, but the principle is the same everywhere:
| Bank | Path in portal |
|---|---|
| Sparkasse | Banking → "Datei einreichen" → SEPA-Lastschriften |
| Volksbank/VR | "Aufträge" → "Sammler" → SEPA-Lastschrift-Datei einreichen |
| Commerzbank | Banking → "Datentransfer" → SEPA-Datei importieren |
| Deutsche Bank | "Banking" → "Datenträgeraustausch" |
| DKB | Banking-Postfach → "Sammlerauftrag SEPA-Lastschrift" |
| Postbank | "Aufträge" → "Datei-Upload" |
- Select the XML file.
- The bank shows a preview (count, total, collection date) — confirm.
- Authorise with your usual 2FA (TAN / push notification).
Mark as submitted
Back in dVersum:
- Finance → SEPA Direct Debit → History.
- On the submitted batch, click Mark as submitted.
dVersum then:
- Sets all invoices in the batch to status "submitted"
- For mandates used for the first time: the date of first collection is stored. The next collection against that mandate is then RCUR (recurring) instead of FRST (first).
Returns / Rücklastschrift
If the bank rejects a collection (e.g. insufficient funds):
- Open the batch in History.
- On the affected invoice, click Mark as returned.
The invoice goes back to open status and can be re-bundled in the next batch or chased manually.
Proactive nudges
dVersum reminds you automatically (daily 7-8 AM German time):
| Nudge | Trigger |
|---|---|
| "You have N unsubmitted SEPA direct debits — build a batch?" | At least one SEPA invoice is due within the next 7 days |
| "Mandate MNDT-… is expiring" | Mandate hasn't been used in 30 months (SEPA mandates auto-expire after 36 months) |
Region restriction
SEPA Direct Debit is currently available for organisations in Germany, Austria and Switzerland. The pain.008 file itself works across all 36 SEPA countries, but the surrounding accounting (DATEV export, VAT return) is tuned for DE/AT/CH for now.
FAQ
Does dVersum store my bank credentials? No. dVersum only generates the XML file. You upload it yourself at your bank. We have neither access to your account nor do we store any credentials.
Do I need BaFin approval? No. Since no money flows through dVersum and no bank API is used, you are not regulated — you're just using your bank's normal online banking.
What if I notice a mistake after generating the file? As long as you haven't submitted it to the bank: no impact — the batch is in "generated" status, the invoices are flagged "in batch" but not yet collected. Just build a new batch.
Can I mix CORE and B2B in a single batch? Yes. The generated pain.008 file contains a separate PmtInf group per (scheme, sequence) combination — banks accept it.
Last updated: 7/9/2026
