Appearance
Get payment status for an order
GET
/rest/v1/checkout/payment-status/{orderId}
Returns {orderId, orderSerial, status, payway, transactionId} for an order the authenticated customer owns.
status IS THE PAYMENT VERDICT. An order is SETTLED when status is PAID or PENDING_ACCEPTED, is AWAITING PAYMENT when it is PENDING, and is cancelled when it is CANCELED.
⚠️ PENDING_ACCEPTED IS A TERMINAL STATE, NOT AN INTERMEDIATE ONE. It is where the three offline payways (delivery, bank_transfer, paid_at_store) settle at placement, and they NEVER reach PAID. A client that treats only PAID as settled renders every cash-on-delivery and bank-transfer order as unpaid forever.
isPaid WAS REMOVED from this response (#754) and must not be re-derived from anywhere. It published shop_order.is_paid, a reconciliation marker meaning "someone has checked this order" — written by the admin order action and a cron, not by the payment path — so a genuinely paid order routinely reported itself unpaid: always for paybybank, whose PAID callback never stamps the flag, and as a race for vivawallet. The column still exists and is still published where it genuinely means reconciliation: filter[isPaid], the isPaid sort and the isPaid property on GET /rest/order/order.
transactionId is the gateway reference; for paybybank it is the bank payment code the customer pays with, also returned by POST /rest/checkout/place-order (#724).
Authorizations
bearerAuth
JWT access token obtained from /rest/auth/admin/login or /rest/auth/customer/login
Type
HTTP (bearer)
Parameters
Path Parameters
orderId*
Type
Requiredinteger
Responses
Payment status