Account closure

Account closure

The closure of Xpollens accounts may occur in the following use cases:

  • Account closure during an ongoing relationship
  • End of relationship with a client (closure of all the client’s accounts)
  • At the client’s initiative (e.g. changing banks)
  • At the bank’s initiative (e.g. in the context of fraud detection)
  • Closure of a single account without ending the relationship, at the client’s initiative (e.g. in the case of multiple accounts)
❗️

Important

A request to close an account is irreversible.


State diagram of the account in the context of account closure

stateDiagram

state fork_state <<fork>>
Initialized	--> fork_state
Activated --> fork_state
Frozen --> fork_state

fork_state --> PendingClosure
PendingClosure --> fork_state
PendingClosure --> Closed: Accounting Balance €0 <br/> all operations are completed
Closed --> [*]


State diagram of the closure request

stateDiagram

    [*] --> InNoticePeriod : Account closure created </br> (with notice period)
    InNoticePeriod --> ClosureInProgress : 60 days notice period
    [*] --> ClosureInProgress : Account closure created </br> (without notice period)
    ClosureInProgress --> AwaitingBeneficiaryUpdate : Accounting Balance > 0€ </br> transfer failed</br> Beneficiary not found
    AwaitingBeneficiaryUpdate --> ClosureInProgress : Beneficiary Updated by Xpollens 
    ClosureInProgress --> AwaitingFundsReturn : Accounting Balance > 0€ </br> Fraud closure reason
    AwaitingFundsReturn --> Completed : Funds return manually by Xpollens </br> Accounting Balance = 0€
    ClosureInProgress --> Completed : AccountingBalance = 0€</br> Account closed
    InNoticePeriod --> Canceled : Closure request</br> cancellation
    AwaitingBeneficiaryUpdate --> Canceled : Closure request </br> cancellation
    AwaitingFundsReturn --> Canceled : Closure request</br> cancellation



Closure duration


Caseresultduration
Enduser initiatedaccount balance = 0€
all operations have a final status
immediate
Bank initiatedaccount balance = 0€
all operations have a final status
immediate
Bank initiatedexcept if motif = CommercialRelationshipEnd60 days




Account closure initiated by enduser

Overview

The account is closed as soon as:

  • the balance is €0
  • all operations have a final status

As a consequence, the account can be closed immediately if these 2 conditions are validated.

(AccountClosure_ClientInitiated_overview.png

📘

Note

The account is closed as soon as the closure SCT OUT is sent to the interbank market. As with any SCT OUT, we cannot guarantee that the transfer will be successfully credited.

If the closure SCT OUT is returned — for example, if the external account is unavailable and the client account has already been closed — the funds will be credited to the partner's suspense account.




Closure reason & Notice period

MotifDescriptionNotice period
CommercialRelationshipEndEnd of commercial relationship with the clientNo
BankingMobilityChange of bank as part of a banking mobilityNo
RetractationTermination of relationship under the right of withdrawal applicable after account opening. This right allows the account holder to revoke his or her decision to open an account, without penalty, within 14 working days..No





Best practise

In the case where the end user requests an account closure, make sure the user has no outstanding debts before sending the API request.On Xpollens’ side, there is no condition related to the existence of debts before closing the account.


Proposed Closure Request Process (with VOP Controls for SCT OUT):

  1. Client Initiates Closure Request
    • The client submits a closure request through the application.
  2. System Displays Waiting Page
    • Once the request is received, your system shows a “processing” page to the client.
    • In the background, your application performs all necessary calculations to determine whether any money exchanges are required.
  3. Execute Money Exchanges (if needed)
    • Your system automatically carries out all required money exchanges.
  4. Initiate SCT OUT Transfer
    • The SCT OUT transfer is triggered and passes through the VOP control check:
      • a. Match:
        • If the VOP control matches successfully, the SCT OUT is accepted.
        • The system displays a success confirmation screen of the closure request.
      • b. No Match / Close Match / Verification Impossible:
        • If the VOP control does not match, the system displays a validation screen.
        • The end user must manually approve the SCT OUT transfer.
        • Upon approval, the system executes the transfer and displays a success confirmation screen of the closure request.

VOP documentation : https://docs.xpollens.com/docs/verification-of-payee-vop#/



Account closure initiated by the bank, with or without a notice period

Overview

In this case, the account remains available for 60 days. After this "notice period", the closure process starts.Please note that this case does not apply when the account is closed due to fraud.

The account is closed after a minimum of 60 calendar days, as soon as one of the following conditions is met:

  • the balance is €0
  • all operations have a final status

Functionnal diagram

(AccountClosure_BankInitiated_overview.png

📘

Note

The account is closed as soon as the closure SCT OUT is sent to the interbank market. As with any SCT OUT, we cannot guarantee that the transfer will be successfully credited.

If the closure SCT OUT is returned — for example, if the external account is unavailable and the client account has already been closed — the funds will be credited to the partner's suspense account.



Closure reason & Notice period

MotifDescriptionNotice period
InactiveClientNo activity on account and no contact between the bank and the clientNo
DeceasedClientThe client is deceasedNo
FraudThe client has confirmed fraudulent behaviourNo
ClientNotCompliantToUClient not compliant with Xpollens Terms Of UseNo
CommercialRelationshipEndEnd of commercial relationship with the client60 days

Closure condition

Case: account balance is 0 or beneficiaryAccountId available

As soon as the balance is €0, and all operations have a final status, the account is closed.

If the holder's balance has been credited during this period, all funds are automatically sent to the beneficiaryAccountId indicated in the request made for the closure-request.

sequenceDiagram
Title: Close the account
autoNumber
Actor User
Participant Partner
Participant XPO

alt Balance != 0
	XPO -->> User: SCT {beneficiaryAccountId}
	XPO -->> Partner: callback SepaCreditTransferCreatedOrUpdated
end
XPO -->> XPO: Account closure
XPO -->> Partner: callback 45 {accountStatus:Closed}
XPO -->> Partner: callback ClosureRequestCreatedOrUpdated {status:Completed}


Case: missing beneficiaryAccountId and non-zero balance during account closure request

When the closure is requested by the Client, but the beneficiaryAccountId is either not available or not provided, and the account still has a non-zero balance, it becomes impossible to execute the SCT OUT.

The affected account IDs are included in a specific report, listing all accounts that cannot be closed due to missing IBAN information.

Then next steps are manual:

  • A Zendesk ticket is created and sent to you, containing the list of accounts requiring the IBAN.
  • As a partner, you contact your end users to request the necessary IBAN information.
  • Once retrieved, you update the Zendesk ticket with the required IBANs.
  • The banking team modifies the closure request, and then processes a corrective SCT to transfer the remaining balance.
sequenceDiagram
Title: Close the account
autoNumber
Actor User
Participant Partner
Participant XPO

XPO -->> Partner: callback ClosureRequestCreatedOrUpdated {status:AwaintingBeneficiaryUpdate}

XPO -->> Partner: zendesk
Partner  -->> User: iban requested
User -->> Partner : iban completed
Partner -->> XPO: zendesk completed

XPO -->> XPO: manual actions to add beneficiary to the closure request and create SCT OUT

XPO -->> Partner: callback SepaCreditTransferCreatedOrUpdated {"direction": "Debit", "isCorrective": true}

XPO -->> XPO: Account closure
XPO -->> Partner: callback 45 {accountStatus:Closed}
XPO -->> Partner: callback ClosureRequestCreatedOrUpdated {status:Completed}
📘

Note

Corrective SCT operations are only available for Xpollens teams.




ClosureRequest cancellation

A closure request can be canceled only when its status is not Completed. Once the closure has taken effect, the account cannot be reopened.

If a card has been canceled during the account closure, it remains canceled. The end user will need to order a new one.

This action can only be performed by Xpollens.



Transaction accepted or refused

During the PendingClosure period

Type of transactionAcceptation
SCT OUTRefused
SCT INRefused
Recall SCT OUTAccepted
Recall SCT INRefused
IP INRefused
IP OUTRefused
Recall IP INRefused
Recall IP OUTRefused
SDD INRefused
SDD OUTRefused
Top-upRefused
Refund Top-upRefused
Top-up contestationAccepted
Card out authorisationRefused
Card out settlementAccepted
Card out offlineAccepted
Card in (card out refund)Accepted
Card out contestationAccepted
P2PRefused
DebtAccepted
Corrective operation (internal XPO)Accepted

📘

Note

If charges are to be levied, it is important to do so before the account closure request.


As soon as the account is closed


Type of transactionAcceptation
SCT OUTRefused
SCT INRefused
Recall SCT OUTRefused
Recall SCT INRefused
IP INRefused
IP OUTRefused
Recall IP INRefused
Recall IP OUTRefused
SDD INRefused
SDD OUTRefused
Top-upRefused
Refund Top-upRefused
Top-up contestationCharged to the Xpollens's holding account
Card out authorisationRefused
Late card out settlementCharged to the Xpollens's holding account
Card out offlineCharged to the Xpollens's holding account
Card in (card out refund)Charged to the Xpollens's holding account
Card out contestationCharged to the Xpollens's holding account
P2PRefused
DebtCharged to the Xpollens's outstanding account
Corrective operation (internal XPO)Accepted

📘

Note

Operations credited in the Xpollens's outstanding account are refunded manually to the enduser.



Suspended operations

In the event of receiving a credit or debit transaction on a closed account, the transaction is created with a "Suspended" status. The end user's account is not debited or credited; instead, the partner's suspense account is impacted.

sequenceDiagram
Title: Transaction on a closed account	
autoNumber
Actor User
Participant Partner
Participant XPO
Participant BPCE

Note over Partner, XPO: Account closed
BPCE -->> XPO: operation
XPO -->> Partner: callback CardOperationCreatedOrUpdated {"status": "Suspended", <br>"cardOperationType": "CardPayment"}


Technical items

Closure request

POST /api/v3.0/accounts/accountId/closure-request

❗️

Warning

  • if the end user is a prospect, with no funds in their bank account: you can use the API without the beneficiaryAccountId .

  • if the enduser's account is validated or has funds, the request must include the beneficiaryAccountId . Without this, the account can never be closed, as the account balance will never be €0.:::

In the case that the external account used to receive the funds is frozen / blocked / closed / ..., the funds cannot be returned.In this case, a manual intervention by Xpollens will be necessary to return the accounts to another account.


Get closure request

GET closure request

Callback account status (45)

Webhook account 45


Callback ClosureRequestCreatedOrUpdated

    "Payload": {
        "type": "ClosureRequestCreatedOrUpdated",
        "partnerCode": "oney",
        "closureRequestId": "5a6e23fe-38e2-4e40-bba8-38d53c55adea",
        "accountId": "7tidihh3np",
        "reason": "KycEconomicDocument",
        "initiative": "Bank",
        "status": "InNoticePeriod",
        "noticeEndDate": "2025-07-02T14:04:29.1829217Z",
        "beneficiaryId": "a3b13f91-96a4-471b-a310-034dc228c490"
    }

Best pratices

Collect debts before closing the account

Commission cannot be taken out once the account has been closed.It is therefore essential to collect debts before closing the account.

Remove the charges taken from these accounts in the batches

Commission cannot be taken out once the account has been closed.It is therefore essential that accounts in ClosureRequested, Pendingclosure and Closed status are removed from the fee-taking batches.



FAQ

FAQ1: What should your application do when a customer requests account closure?

When a customer initiates an account closure request, your application should immediately restrict access to the following functionalities:

  • SEPA Transfers: Block both standard SEPA Credit Transfers (SCT) and Instant Payments (IP).
  • Card Creation: Disable the ability to request or issue new cards
  • Mandate & SDD Creation: Prevent the creation of new mandates and SEPA Direct Debits (SDD).

If a request is made to any of these functionalities after the account closure request, a 40x error will be returned.


FAQ2: When is the latest account statement available?

The last account statement is generated in the first few days after the account status is changed to Closed.

FAQ3: how to test

To allow testing, the closing delay time in sandbox is immediate. As a consequence, the expectedCloseDate is set to the date of the closure request.


To achieve "Closed" status, the following prerequisites must be met:

  • All operations must have a final status (i.e., all card authorizations are either completed or expired).
  • The account balance must be €0, both in terms of authorization balance and accounting balance.:::




How to test

On sandbox, the closure period is setted to 1 min.
As a result, each account closed during the day will be fully closed at night during our daily batch process.


Did this page help you?