Skip to main content

Errors

Every Thiqwave error uses one JSON envelope. Provider raw payloads and stack traces are never returned.

Error shape

{
"error": {
"code": "TXN_0001",
"message": "Transaction not found",
"correlation_id": "req_01HN8KDI6C",
"details": null
}
}
FieldMeaning
codeStable DOMAIN_NNNN code. Safe to switch on.
messageSafe for end users; never a stack trace or provider payload.
correlation_idEchoes your X-Request-ID (auto-generated if absent). Quote in support tickets.
detailsField-level errors for VAL_0001; null otherwise.

HTTP status map

StatusMeaning
400Validation / bad input
401Missing/invalid auth (ATH_0001)
403Authenticated but not allowed (ATH_0002, CMP_0001)
404Not found or not visible to your key
409Conflict — idempotency, duplicate, invalid state
422Compliance decision pending (CMP_0002)
429Rate limited (see Idempotency & Rate Limits)
500Unexpected error (GEN_0001, LED_0001)

Domain code prefixes

TXN Transaction · QTE Quote · LED Ledger · CMP Compliance · PTN Partner · CNT Participant · BEN Beneficiary · PAY Payment · SET Settlement · FX FX/Liquidity · WAL Wallet · CHN Chain · WEB Webhook · REC Reconciliation · AUD Audit · IDM Idempotency · ATH Auth · VAL Validation · GEN General

Common codes

CodeHTTPMeaning
VAL_0001400DTO validation failed (see details)
ATH_0001401Missing authentication
ATH_0002403Insufficient scope
TXN_0001404Transaction not found
TXN_0002409Transaction state conflict
QTE_0001400Quote expired
QTE_0002409Quote already accepted
CMP_0001403Compliance check failed
CMP_0002422Compliance decision pending
IDM_0001409Idempotency key reused with different payload
IDM_0002400Missing Idempotency-Key on a money-moving endpoint
LED_0001500Ledger posting failed
GEN_0001500Unexpected internal error

Validation example

{
"error": {
"code": "VAL_0001",
"message": "DTO validation failed",
"correlation_id": "req_01HXYZ",
"details": { "source_amount_minor": ["must be a numeric string"] }
}
}

Correlation

Send X-Request-ID on every call. Log it alongside the response correlation_id — without it, support cannot trace the request.