Third-Party SEPA Payins

How incoming SEPA payments from third parties behave on Payment Accounts

With Payment Accounts enabled and the user's consent recorded, incoming SEPA transfers whose sender is not the account holder are accepted and credited immediately for SEPA Instant payments per scheme rules.

Without the feature (or without consent), third-party payins keep the previous behavior: they are held for compliance review and only credited if approved. Recording consent affects future payins; it does not retroactively release earlier holds - those follow the normal review process.

What changes for your integration

No new webhook types. No schema changes. Every field in the SEPA_PAYIN_COMPLETED payload (see Bank Transfer Webhooks) and in transaction rows is unchanged. If your consumer switches exhaustively on txType, nothing new will appear in the stream. Four behavioral notes:

1. SEPA_PAYIN_COMPLETED arrives at receipt

For Payment Account payins the SEPA_PAYIN_COMPLETED TRANSACTION webhook is delivered when the payment arrives and the funds are immediately credited.

2. The payin fee is collected after mandatory screening clears

The APPLICATION_FEE webhook and the fee debit on the statement now follow the screening verdict rather than the credit itself — typically seconds later, occasionally up to ~10 minutes. The fee amount and payload shape are unchanged.

3. Standing orders trigger after screening clears

A payin credit row for a Payment Account does not carry standingOrderId / standingOrderSpanId even when the account has an active standing order. The standing order executes after the screening verdict, under its own transaction span. Don't infer "no standing order ran" from the credit row.

4. A payin can be reverted and can come back

If there is a compliance reason found on an already-credited payin, the credited amount is taken back: the statement shows a SEPA_PAYIN_REVERTED debit carrying the same bankingTransactionId and sender fields as the original payin. If the case is later dismissed, the funds return as a SEPA_PAYIN_COMPLETED credit - again with the original payin's bankingTransactionId but a new row id.

Key your row ingestion on the row id, not on bankingTransactionId alone otherwise the returning credit may be dropped by your deduplication.

These rows appear in /wallets/get/account/statement, /wallets/account/get-transactions-by-id, and their business and corporate equivalents. No webhook is sent for either row.

Outcomes of a payin

Monitoring outcomeWhat happensWhat you see
ClearFee collected, standing order (if any) runsAPPLICATION_FEE webhook; normal statement rows
MatchThe credited amount is taken back pending reviewA SEPA_PAYIN_REVERTED debit on the statement; no webhook
Match dismissedFunds returned to the accountA SEPA_PAYIN_COMPLETED credit (same bankingTransactionId, new row id); no webhook
Match confirmedThe payment is returned to the sender's IBANNothing further — the earlier SEPA_PAYIN_REVERTED debit already completed the account's arithmetic; no additional webhook is sent for the refund

Rare MANUAL_ADJUSTMENT rows can still appear on statements for adjustments made by Lightspark Payments Europe outside any payment context; render them neutrally.

First-party payins

Payins where the sender name matches the account holder are unaffected — same behavior, same timing, same webhooks as today.

Trying it out

You can simulate third-party payins — including the sanctions-match flow — on the sandbox environment. See Testing in Sandbox.