Poll Invoice Status
GET
/checkout/api/v1/invoices/{id}/statusRecommendedThree-field polling projection for the payment page: the invoice status, the id of the most recently created payment (null before the buyer picks a coin), and paidAt. Unlike the full invoice read this stays 200 for EXPIRED and CANCELLED invoices, so it is the safe thing to poll on a timer.
Authentication
Signature Pattern
None โ public endpoint, no signature required.| Header | Value | Description |
|---|---|---|
Accept | application/json | No API key, signature or idempotency key โ the checkout surface is public |
Request Parameters
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Required | Path parameter โ invoice CUID |
Response Parameters
| Field | Type | Example |
|---|---|---|
status | string | "PAYMENT_PENDING" |
paymentId | string | "clx7k2p9a0007qz8f1d0s9k2r" |
paidAt | null | null |
Response Example
JSONResponse
{
"success": true,
"data": {
"status": "PAYMENT_PENDING",
"paymentId": "clx7k2p9a0007qz8f1d0s9k2r",
"paidAt": null
},
"timestamp": "2026-08-26T13:41:02.477Z",
"requestId": "req_V1StGXR8_Z5j"
}Error shape
JSONError
{
"success": false,
"error": {
"code": "NOT_FOUND",
"message": "Resource not found"
},
"timestamp": "2026-08-26T13:41:02.477Z",
"requestId": "req_V1StGXR8_Z5j"
}Status Codes
200Success
201Created
400Bad Request
401Unauthorized
404Not Found
429Rate Limited
Try itMockapi2.havala.io
GEThttps://api2.havala.io