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 held under a lien until the sender's sanctions screening concludes — nothing is credited before the verdict. For a clear sender that is typically a matter of seconds; a sender the platform has already cleared before credits effectively immediately.
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.
The lien, step by step
- The payment arrives and is matched to the account. If the sender's name is the account holder's, it is a first-party payin — credited as always, nothing below applies.
- While screening runs, the funds are held under a lien. The account object carries a
lienAmount({ amount, currency }) for the total held, and the first page of/wallets/get/account/statementshows a provisional row for the payment:status: "LIEN",lien: true,txType: "SEPA_PAYIN_COMPLETED", with the full sender fields (bankingSenderName,bankingSenderIban,bankingSenderBic, reference). The held amount is not part of the available balance. - Clear verdict → automatic credit. The lien releases, the credit lands on the account, the
SEPA_PAYIN_COMPLETEDTRANSACTION webhook is delivered at credit time, and the payin fee (if configured) is collected. The provisionalLIENrow is replaced by the ordinary credited row (a different rowid— treatLIENrows as provisional, don't key long-lived state on their ids). - Screening keeps one record per counterparty name, shared across your users: once a sender has been cleared, further payments from that person — even from a different bank account — credit without a visible hold.
When a hold needs a human
If the verdict needs manual compliance review, the payment simply stays held. After a hold has stood for roughly five minutes, a neutral TRANSACTION_UNDER_REVIEW event is delivered once on the TRANSACTION webhook channel so you can tell your user the payment is under review: { type, transactionId, accountId, userId|businessId, txType, amount, currency, heldAt }. No reason is included. The hold then ends in one of two ways:
| Outcome | What happens | What you see |
|---|---|---|
| Review approved | Lien releases, funds credit, fee collects | SEPA_PAYIN_COMPLETED webhook at credit time; normal statement rows |
| Review denied | The payment is returned to the sender in full | The provisional LIEN row leaves the statement; nothing is ever credited |
Behavioral notes for your integration
SEPA_PAYIN_COMPLETEDarrives at credit, not at receipt. For most third-party payins that is seconds after arrival; for a held payment it is whenever the review clears.- Standing orders trigger on credit. A standing order on the account executes after the funds actually credit, under its own transaction span; the payin credit row does not carry
standingOrderId/standingOrderSpanId— don't infer "no standing order ran" from the credit row. - Rare post-credit reverts still exist. Independently of the lien flow, compliance can in rare cases revert an already-credited payin: the statement shows a
SEPA_PAYIN_REVERTEDdebit carrying the originalbankingTransactionId; if the case is dismissed the funds return as a newSEPA_PAYIN_COMPLETEDcredit (samebankingTransactionId, new rowid). Key your row ingestion on the rowid, not onbankingTransactionIdalone, or the returning credit may be dropped by your deduplication. - Rare
MANUAL_ADJUSTMENTrows can still appear on statements for adjustments made by Lightspark Payments Europe outside any payment context; render them neutrally.
These rows appear in /wallets/get/account/statement, /wallets/account/get-transactions-by-id, and their business and corporate equivalents.
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 and payouts — including every screening and Verification of Payee outcome — on the sandbox environment. See Testing in Sandbox.

