Instant Payment (IP OUT)

Send money in seconds

Create a beneficiary

Before being able to perform an instant transfer, it is necessary to add the transfer recipient to one's list of beneficiaries.

The 🔗 Create a beneficiary endpoint is used in order to create and associate an external beneficiary account in order to perfom a Sepa Out operation.

  • The BIC (Bank Identifier Code) is optionnal to add a beneficiary.

  • The IBAN (International Bank Account Number) is mandatory to create the beneficiary

The following sequence diagram shows the API workflow to add a beneficiary :


sequenceDiagram
Title: Create a beneficiary
autoNumber
Actor User
Participant Partner
Participant XPO
Participant sca as SCA Partner
User ->> Partner : Add bank account
Partner ->> XPO : post /api/sca/v2.0/users/{appUserId}/beneficiary
XPO -->> Partner :return OK (201)
XPO ->> sca : Authentication<br/>requested
Partner -->> User : Authentication required<br/>{authenticationId}
sca -->> User : Authentication push notification request
User ->> sca : Authentication
sca -->> XPO : Authentication<br/>result
XPO -->> XPO : Authentication OK
XPO --) Partner : Callback 36<br/>{beneficiaryId}
❗️

When the add beneficiary feature is triggered by a manual action from an end user, it is mandatory to use the sca route to add a beneficiary as user authentication is required for security / compliance reasons.



Initiate an IP OUT

State diagram

stateDiagram
[*] --> Created: http 200 <br/> [synch]
Created --> Approved: *Internal status* <br/> transaction validated by <br/> the Xpollens Payment Decision system
Approved --> Completed : Checks between XPO and <br/> BPCE OK <br/> [Callback]
Approved --> Rejected : Checks between XPO and <br/> BPCE KO <br/>[Callback]
Completed --> [*]
Rejected --> [*]



IP OUT succeeded

sequenceDiagram

Title: Initiate an IP OUT
autoNumber
Actor User
Participant Partner
Participant XPO
Participant BPCE PS
User ->> Partner : Initiate an IP OUT
Partner ->> XPO : post /api/v3.0/sepa-instant-payments
XPO --) XPO : Check Beneficiary exist and active
XPO --) XPO : Check RefBip eligibility
XPO --) XPO : Check Payment allowed amount
XPO --) XPO : Create transaction

rect rgb(0, 255, 0, 0.1)
XPO ->> Partner :return OK http 201 (status:Created)
Note over XPO, BPCE PS: Checks between XPO and BPCE PS <br/> Need to answer in less than 8 secondes
XPO --) BPCE PS : Processing
BPCE PS --)XPO : IP accepted
XPO -->> Partner :Callback InstantPaymentCreatedOrUpdated {status:Completed, direction:debit}
end
Partner -->> User : Notification

🔗sepa-instant-payments

🔗Callback "InstantPaymentCreatedOrUpdated"

Succeeded during the post sepa-instant-payments Check Eligibility

Synchrone reponse

stateDiagram
[*] --> Created: http 200


Succeeded during the process between Xpollens and BPCE PS

Asynchrone reponse

stateDiagram
     Created --> Completed



IP OUT failed

sequenceDiagram
Title: Initiate an IP OUT
autoNumber
Actor User
Participant Partner
Participant XPO
Participant BPCE PS
User ->> Partner : Initiate an IP OUT
Partner ->> XPO : post /api/v3.0/sepa-instant-payments
XPO --) XPO : Check Beneficiary exist and active
XPO --) XPO : Check RefBip eligibility
XPO --) XPO : Check Payment allowed amount
XPO --) XPO : Create transaction 


alt Synchronous checks KO
        rect rgb(255, 0, 0, 0.1)
    XPO ->> Partner : http 40x
    Partner -->> User : Notification
        end
        
else Checks KO between XPO and BPCE PS
	rect rgb(0, 255, 0, 0.1)
			XPO ->> Partner : http 201
	end

   rect rgb(255, 0, 0, 0.1)
    Note over XPO, BPCE PS: Checks between XPO and BPCE PS <br/> Need to answer in less than 8 secondes
    XPO --) BPCE PS : Processing
    BPCE PS --)XPO : IP Rejected
    XPO -->> Partner : Callback InstantPaymentCreatedOrUpdated {status:Rejected}
   end
        
end

Partner -->> User : Notification


Failed during the post sepa-instant-payments

Status HTTPError codeReasonDefinition
400715ERR_API_PARAMETER_INVALIDNon éligble à l'ip
400715"type": "https://www.rfc-editor.org/rfc/rfc9110#name-400-bad-request",
"code": 715,
"detail": "Invalid parameters. Invalid beneficiaryId",
"title": "The operation cannot be completed",
"instance": null,
"priority": 2,
"date": "2026-01-23T15:22:37.1416661Z",
"traceId": "4e53030722b64e46821b9b2d22b1fb32",
"status": 400
Invalid beneficiaryId
400710"type": "https://www.rfc-editor.org/rfc/rfc9110#name-400-bad-request",
"code": 710,
"detail": "Duplicate Id.",
"title": "The operation cannot be completed",
"instance": null,
"priority": 2,
"date": "2026-01-23T15:20:16.1461765Z",
"traceId": "ce2828b4a2c5c642ed1bf1bd06657073",
"status": 400
Duplicate Id
400"type": "https://tools.ietf.org/html/rfc9110#section-15.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"traceId": "00-65cefcf6c550187978f34cec371fe975-be5e0cca96caa3bd-01"
Wrong request
404147"type": "https://www.rfc-editor.org/rfc/rfc9110#name-404-not-found",
"code": 147,
"detail": "Account not found. Account not found partner=xxx, accountPartnerReference=YYY",
"title": "The operation cannot be completed",
"instance": null,
"priority": 2,
"date": "2026-01-23T15:23:45.3769109Z",
"traceId": "9837553ef064326d05a64d0cc2f81c9e",
"status": 404
Account not found
404302ERR_IBAN_NOT_FOUND

201Created
500XPOLLENS INTERNAL ERROR

Failed during the process between Xpollens and BPCE PS

StatusSepaRejectCodesepaRejectReason
Rejected500Reason not communicated, please contact Xpollens
RejectedAB05Transaction stopped due to timeout at the creditor agent
RejectedAB06Transaction stopped due to timeout at the Instructed Agent
RejectedAB07Agent of message is not online. Generic usage if it cannot be determined who exactly is not online
RejectedAB08Creditor Agent is not online
RejectedAB09Transaction stopped due to error at the Creditor Agent
RejectedAB10Transaction stopped due to error at the Instructed Agent
RejectedAC01Account identifier invalid or incorrect (i.e. invalid IBAN or account number does not exist)
RejectedAC04Account closed
RejectedAC06Account blocked
RejectedAG01Credit transfer forbidden on this account
RejectedAAM02Not allowed amount
RejectedAM04Insufficient funds on the account
RejectedAM05Duplicate payment
RejectedAM09Wrong amount
RejectedCNORBeneficiary bank is not registered under this BIC in the CSM
RejectedFF01Operation/transaction code
RejectedFRADFraudulent originated (instant) credit transfer
RejectedISSUE-DISPCHECK-TIMEOUT-RESPONSETimeout on PSP communication, please retry
RejectedMS01Reason not specified
RejectedMS02By order of the Beneficiary
RejectedMS03Reason not specified, please contact Xpollens
RejectedRR02Missing Debtor’s Name Or Address
RejectedRR04Regulatory Reason
RejectedTM01Time-out – maximum execution time has been exceeded

Recall IP

Recall IP OUT

How the partner can do a recall > Zendesk ticket to Xpollens' banking production department

Succeeded

sequenceDiagram
Title: Request an Recall IP OUT
autoNumber
Actor User
Participant Partner
Actor Xpollens/Production Bancaire
Participant XPO
Participant Counter part Bank

User --) Partner: Recall request
Partner --) Xpollens/Production Bancaire : Recall request (Zendesk)
Xpollens/Production Bancaire --) XPO : Recall Request 
XPO --) XPO : Check initial operation exist ( Debit )
XPO --) XPO : Check initial operation is successed / Completed
XPO --) XPO : Created recall transaction ( Created / Credit )
XPO --) Counter part Bank: Recall
Counter part Bank --) XPO : OK
Note over  XPO, Counter part Bank: 10 days to answer
XPO -->> Partner : Callback InstantPaymentCreatedOrUpdated {status:Completed, isRTransaction:true, direction:credit}
Partner -->> User: Notification


👍

Account credited

Failed

sequenceDiagram
Title: Request an Recall IP OUT
autoNumber
Actor User
Participant Partner
ACTOR Xpollens/Production Bancaire
Participant XPO
Participant Counter part Bank
Participant Partner

User --) Partner: Recall request
Partner --) Xpollens/Production Bancaire : Recall request (Zendesk)
 Xpollens/Production Bancaire ->> XPO : Recall Request
XPO --) XPO : Check initial operation exist ( Debit )
XPO --) XPO : Check initial operation is successed / Completed
XPO --) XPO :Created recall transaction ( Created / Credit )
XPO ->> Counter part Bank: Recall
Counter part Bank ->> XPO : KO
Note over  XPO, Counter part Bank: 10 days to answer
XPO -->> Partner : Callback InstantPaymentCreatedOrUpdated {status: Rejected, isRTransaction:true}
Partner -->> User: Notification



❗️

Account not debited

How to test

IP OUT

Only the ibans of unmocked environment pass the Luhn key checks and can be used.

POST /api/v2.0/users/{appUserId}/beneficiary

{
  "displayName": "Compte Xpollens 1",
  "iban": "FR7630001007941234567890185",
  "bic": "SMOEFRP1",
  "firstName": "John",
  "lastName": "Doe",
  "companyName": "Xpollens",
  "zipCode": "75001",
  "email": "[email protected]",
  "phoneNumber": "0123456789"
}

Response

{
[...]
"beneficiaryId": "YourBeneficiaryId",
[...]
}

POST /api/v3.0/sepa-instant-payments

{
  "sepaInstantPaymentId": "Ip-out-1",
  "accountId": "account-partner-reference",
  "creditor": {
    "beneficiaryId": "YourBeneficiaryId"
  },
  "amount": {
    "value": "5.00",
    "currency": "EUR"
  },
  "reference": "Reference-Ip-Out",
  "description": "Ip-Out-Description"
}



FAQ

Coming soon


Did this page help you?