Order Management Flow
This document describes the complete lifecycle of Payment Orders and FX Orders, including preparation, initiation, confirmation, and post-processing.
💸 Payment Order Flow​
1. Before Order Initiation​
Prefill order details and get price
POST /api/core/customers/{customerId}/payments/calculate-price
See: Post Calculate Payment Price
List contacts for the requested payment currency:
GET /contacts/customers/{customerId}/contacts?pageNumber=1&pageSize=20&name=¤cy=gbp
See: Get Contacts per Customer
(Optional) Upload supporting documents (one by one):
POST / DELETE /transaction-case/customers/{customerId}/file/upload
See: Upload Document / Delete Draft Document
- Specify
DocumentType: NoteDocument
- Save/cache IDs from the response for later use.
2. Initiate Payment Order​
POST /api/core/customers/{customerId}/payments/initiate
See: Post Initiate Payment Order
TIP: If paymentPurpose = "Other"
, pass free text to the paymentPurposeText
field.
Get list of order purposes
GET /api/core/customers/{customerId}/payments/order-purposes
See: Get Order Purposes
(Optional) Attach documents uploaded at the step 1.
3. Confirmation of Payee (CoP) — GBP Payments​
If payment is in GBP, the initiation response includes CoP-related fields.
Implementation recommendations:
- If
"copResponseCode": "match"
, immediately proceed to the next step. - For all other codes except
AC01
, require explicit confirmation before initiating the transfer. - If
AC01
is returned (account does not exist in the specified bank), the payment order will be cancelled during initiation.
GET list of CoP responses: /dictionaries/countries
See: Get COP Codes
"copNameMatch": null
→ returned account name is similar to the provided one (matched by the bank).
4. Fraud Alerts Handling​
The response may contain a FraudAlerts
array triggered by the anti-fraud system.
- You must obtain explicit user consent to dismiss these alerts (otherwise order won't be created).
- Pass a record of such consent during order confirmation for each alert.
5. Confirm Payment Order​
POST /api/core/customers/{customerId}/payments/{orderId}/confirm
See: Post Confirm Order
In your request:
- Pass list of Fraud Alert IDs.
- Pass
externalMfaConfirmed
(boolean). - (Optional) Pass your own
endToEndTransactionId
to track the transaction through the system.
Example Response:
{
"id": "019751ad-768c-748a-b2ce-cf82424c3a80",
"createdBy": "732c3dcf-d30e-4bb8-a900-990f6695ac58",
"createdUtc": "2025-06-08T22:33:32.831148+00:00",
"debtorAccountId": "0259c921-875d-46ad-84bf-d43b99715443",
"payeeContactId": "1cb96722-7a66-4fe8-8dde-de7511fbbd62",
"amount": {
"currencyCode": "gbp",
"value": 543
},
"currentState": "received",
"paymentPurposeText": "",
"reference": "xcvzxcv",
"endToEndTransactionId": "b6015b84-0268-4673-80c3-40ee69506f9f",
"fraudAlerts": {
"019751ad-7dfd-7ee6-a781-d983d4dfca10": "Consider double-checking details with payment receiver using another communication channel!"
},
"copResponseCode": "match",
"copNameMatch": null,
"standingOrder": null
}
💱 FX Order Flow​
1. Initiate FX Order (Get Quote)​
POST /api/core/customers/{customerId}/forex/initiate
See: Post Initiate Forex Order
- Specify the customer's accounts and the amount.
- The response includes:
orderId
quote
quote eligibility (expires_at)
2. Confirm FX Order​
POST /api/core/customers/{customerId}/forex/{orderId}/confirm
See: Post Confirm Forex Order
- Confirm the received quote before it expires.
- If it expires, request a new quote by initiating the FX order again.
Example Response:
{
"id": "019753b3-8efa-75b1-a50c-8b39984466b9",
"sourceAccountId": "0259c921-875d-46ad-84bf-d43b99715443",
"targetAccountId": "b730eff7-ea7c-4ed5-b264-6764d2a85932",
"sourceAmount": {
"currencyCode": "gbp",
"value": 555
},
"targetAmount": {
"currencyCode": "usd",
"value": 749.17
},
"state": "new",
"totalRate": 1.3498559,
"reason": "",
"expiresUtc": "2025-06-09T08:02:07.937454+00:00",
"createdUtc": "2025-06-09T07:59:26.440436+00:00",
"secondsToExpire": 59
}
📊 Retrieve Orders​
Get List of Customer Orders​
GET /api/core/customers/{customerId}/payments
See: Get List of Customer Orders
Get Order Details by ID​
GET /api/core/customers/{customerId}/payments/{orderId}
See: Get Order by ID