Docs

Get Payment

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

Read one payment in full, together with a four-field stub of the invoice it settles. The lookup is keyed on id AND merchantPointId, so a payment owned by another merchant point returns 404 PAYMENT_NOT_FOUND rather than 403. The body is the same shape the list endpoint emits per item โ€” the extra invoice columns loaded by the query are dropped before serialisation.

Authentication

Signature Pattern

HMAC-SHA256(apiSecret, "{t}\nGET\n/api/v1/payments/{id}\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 returned by checkout or carried on the payment.completed webhook. The human referenceId (PAY-260826-041C) is not accepted here.

Response Parameters

FieldTypeExample
idstring"clx7k2p9a0001qz8fh3n2v4m6"
referenceIdstring"PAY-260826-041C"
statusstring"COMPLETED"
blockchainstring"ethereum"
networkstring"MAINNET"
isTestnetbooleanfalse
cryptoCurrencystring"USDT"
amountstring"149.50"
expectedAmountstring"149.50"
receivedAmountstring"149.50"
addressstring"0x5c9E7A1fD2B84c0d3aE617F9b8cB2fA0d431ecB7"
confirmationsinteger12
requiredConfirmationsinteger12
transactionHashstring"0x3f7d1c9a48b2e05f6d1a7c94e2b83f05c1d6a9โ€ฆ
expiresAtstring"2026-08-26T10:44:03.000Z"
createdAtstring"2026-08-26T10:14:03.000Z"
completedAtstring"2026-08-26T10:21:47.000Z"
invoiceobject{โ€ฆ}
invoice.idstring"clx7k2p8v0000qz8f2r6b1w9d"
invoice.referenceIdstring"INV-260826-039C"
invoice.orderIdstring"ORDER-2026-04417"
invoice.statusstring"PAID"

Response Example

JSONResponse
{
  "success": true,
  "data": {
    "id": "clx7k2p9a0001qz8fh3n2v4m6",
    "referenceId": "PAY-260826-041C",
    "status": "COMPLETED",
    "blockchain": "ethereum",
    "network": "MAINNET",
    "isTestnet": false,
    "cryptoCurrency": "USDT",
    "amount": "149.50",
    "expectedAmount": "149.50",
    "receivedAmount": "149.50",
    "address": "0x5c9E7A1fD2B84c0d3aE617F9b8cB2fA0d431ecB7",
    "confirmations": 12,
    "requiredConfirmations": 12,
    "transactionHash": "0x3f7d1c9a48b2e05f6d1a7c94e2b83f05c1d6a94b72e83f01c5a9d6b47e2f08a1",
    "expiresAt": "2026-08-26T10:44:03.000Z",
    "createdAt": "2026-08-26T10:14:03.000Z",
    "completedAt": "2026-08-26T10:21:47.000Z",
    "invoice": {
      "id": "clx7k2p8v0000qz8f2r6b1w9d",
      "referenceId": "INV-260826-039C",
      "orderId": "ORDER-2026-04417",
      "status": "PAID"
    }
  },
  "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