Skip to main content
An order moves through a small number of states. Knowing which are final is the difference between fulfilling an order correctly and fulfilling one that never got paid.

The flow

1

Initiated

Create an order returns statusId: 1, status: "Initiated". No money has been requested yet — the customer hasn’t picked a method.
2

Pending

Pay an order moves it to statusId: 2. The exact message depends on the method: pending-authenticaion for a card awaiting 3-D Secure, pending bank notification for a bank transfer awaiting funds.
3

Final

The order settles as Successful (statusId: 5) or fails. At this point isFinalStatus is true and you can stop polling.

Status values

Treat isFinalStatus in the order status response as authoritative rather than hard-coding the statusId list — it is the field the API is telling you to branch on.

Response codes

statusCode appears on every response and is a string, not a number.

Polling

After Pay an order, poll Get order status until isFinalStatus is true.
1

Poll every few seconds for the first two minutes

Most card payments resolve within seconds of the customer completing 3-D Secure.
2

Back off after that

Bank transfers depend on the customer actually sending the money, which can take much longer.
3

Stop after about five minutes

If the status still has not changed, treat the order as genuinely pending. Tell the customer you will confirm once the payment completes, and reconcile from your backend later — do not tell them it failed.
The response also carries requeryNeeded, a hint from the API that the status is not yet settled and another poll is worthwhile.
Poll from your backend before you fulfil an order, and confirm with Verify an order using your secret key. A status read with a public key is fine for updating your UI, but it is not proof of payment.

Fees

Fees are added on top of the order amount, not deducted from it. An order for 500 with a fee of 30 charges the customer 530 — the totalChargedAmount in the status response. Check the fee before you charge with Get order fee, which breaks it down into subsidiaryFee (your share) and customerFee (theirs).