Docs
API ReferencePaymentsGet Payment Status

Get Payment Status

GET/api/v1/payments/{id}/statusCore

Confirmation-only projection of a payment: seven fields selected directly in the query, with no invoice join and no chain or address metadata. This is the cheap endpoint to poll while a transaction confirms โ€” compare confirmations against requiredConfirmations, which is fixed per chain when the payment is created. Prefer the payment.completed webhook where you can; poll this only as a reconciliation backstop.

Authentication

Signature Pattern

HMAC-SHA256(apiSecret, "{t}\nGET\n/api/v1/payments/{id}/status\n{sha256(\"\")}")
HeaderValueDescription
X-API-Key7f3b9c1e4a26d508bf71ac93e2d64f08Merchant point API key, issued in the merchant dashboard. Treat it as opaque โ€” depending on how the point was created it is 32 or 64 hex characters, so never validate on length. Identifies the point whose payments you can reach.
X-Signaturet=1787739243,v1=9c4f2ab7e1d6538042bfa9c7e31d685f0a2c94b7e6d813fa50c9b2e74a1d6f38Literal form t={unix_seconds},v1={hex_hmac_sha256}; t must sit within ยฑ300s of server time or the guard raises SIGNATURE_EXPIRED
Content-Typeapplication/jsonAlways application/json. These reads carry no body, so the body hash in the canonical string is sha256 of the empty string.

Request Parameters

NameTypeRequiredDescription
idstringRequiredPath parameter โ€” the payment CUID. Scoped to the merchant point behind the API key; an id outside that scope yields 404 PAYMENT_NOT_FOUND.

Response Parameters

FieldTypeExample
idstring"clx7k4m2s0007qz8fd5v3n8q1"
referenceIdstring"PAY-260826-052D"
statusstring"CONFIRMING"
confirmationsinteger46
requiredConfirmationsinteger128
expiresAtstring"2026-08-26T11:02:18.000Z"
completedAtnullnull

Response Example

JSONResponse
{
  "success": true,
  "data": {
    "id": "clx7k4m2s0007qz8fd5v3n8q1",
    "referenceId": "PAY-260826-052D",
    "status": "CONFIRMING",
    "confirmations": 46,
    "requiredConfirmations": 128,
    "expiresAt": "2026-08-26T11:02:18.000Z",
    "completedAt": 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