Skip to main content

Get Checkout Status

Poll the status of a previously submitted checkout. Returns the latest CheckoutResult.

URL​

GET /api/c2a/offer/checkout/{trackingId}/status

Request Parameters​

NameTypeDescription
trackingIdstringPath parameter, required. The trackingNumber from the original Submit Checkout response.

Response Parameters​

CheckoutResult (HTTP 200). Same shape as the submit response. The status.messageCode is the source of truth.

messageCodeStageAction
CHECK_OUT_PROCESSINGWorker still processing.Keep polling, respect Retry-After.
CHECK_OUT_3DS_REQUIREDPSP requires 3DS challenge.Present redirectInstructions.htmlContent or .redirectUrl to the end-user.
CHECK_OUT_DONEPayment captured, entitlements delivered.Terminal success.
CHECK_OUT_FAILEDAuthorization, capture, or fulfilment failed.Terminal failure. Inspect message.

RedirectInstructions​

Returned when status = CHECK_OUT_3DS_REQUIRED or any redirect-bound state.

NameTypeDescription
redirectUrlstringHosted page to navigate the user to.
htmlContentstringInline HTML form to post (3DS step-up).
threeDIdentifierstringPSP-side 3DS reference.
isRedirectRequiredbooleanWhether the client must act.
hasNextStepsbooleanMore steps after this redirect (resume polling after the browser returns).
showHtmlContentbooleanRender htmlContent instead of a redirect.

Sample Response — terminal success​

{
"trackingNumber": "trk_01HZ9XPZ3K2A8E0VBVQH7N9XGB",
"status": { "messageCode": "CHECK_OUT_DONE" },
"followUpInstructions": { "canFollowUp": false }
}

3DS required​

{
"trackingNumber": "trk_01HZ9XPZ3K2A8E0VBVQH7N9XGB",
"status": { "messageCode": "CHECK_OUT_3DS_REQUIRED" },
"redirectInstructions": {
"redirectUrl": "https://psp.example/3ds/abc",
"isRedirectRequired": true,
"hasNextSteps": true,
"showHtmlContent": false
},
"followUpInstructions": { "retryAfterSeconds": 3, "canFollowUp": true }
}

Not Found (HTTP 404)​

trackingId unknown for this tenant.

{
"status": { "messageCode": "ORDERED_ITEM_NOT_FOUND" }
}

Conflict (HTTP 409)​

State conflict (e.g. tracking belongs to another tenant). Body is ProblemDetails.

Polling Pattern​

1. POST /checkout                       -> 202, trackingNumber, Retry-After: 2
2. wait `retryAfterSeconds`
3. GET /checkout/{trackingId}/status -> 200, status = CHECK_OUT_PROCESSING
4. repeat until status ∈ { CHECK_OUT_DONE, CHECK_OUT_FAILED, CHECK_OUT_3DS_REQUIRED }
5. if 3DS: drive the user through redirectInstructions, then resume polling

Sample Codes​

curl --location \
'https://acme.sandbox.azotte.com/api/v1/c2a/offer/checkout/trk_01HZ9XPZ3K2A8E0VBVQH7N9XGB/status' \
--header 'x-tn: e2a1c7b2-4f3a-4b8e-9c2d-1a2b3c4d5e6f' \
--header 'x-api-key: sk_dev_acme_sample_123456789'