application/problem+json. Parse the HTTP status, problem type, and field-level error code; do not depend on human-readable wording.
422 validation_error also has an errors array; see field error codes. Each problem type links to a page that explains the error. The error index lists every problem type.
Error index
Every problemtype is https://docs.paypathiq.com/problems/<name>. Retryable means the same request can succeed later without changes. After the cause is fixed means you must fix something first, then send the request again.
Status codes
Route parameters are validated before the API key. A request with an invalid
clientCode or external ID returns 422 even if its key is also invalid.
Retry policy
Retry only429 and 503 responses. Use exponential backoff with jitter and honor Retry-After when present. Do not retry an unchanged 4xx request other than 429. An edge or network failure without a problem body can also be retried with backoff.
Choose the next action by operation, especially when a timeout leaves the outcome unknown:
See the worked reconciliation example.
Rate limits
Every request counts, includingGET.
In sandbox, the per-Client limits apply across every key granted for that Client, so two keys for the same Client share one budget. Over a limit, the API returns
429 rate_limit_exceeded. Send requests for one key one at a time, and wait for each response before sending the next.
Field error codes
A422 validation_error lists up to 20 problems in errors. Each has a JSON pointer to the field and one of these codes:
External IDs use 1–128 characters from
A-Z, a-z, 0-9, _, and -. This applies to IDs in the path (clientCode, externalCustomerId, externalReceivableId, externalPaymentObservationId) and in the body (externalContactId, responsibleCustomers[].externalCustomerId, and a Payment observation’s externalReceivableId and relatedExternalPaymentObservationId). They are rejected with sensitive_external_id if they look like an email address, an IBAN, an Irish PPS number, or a PayPathIQ API key, or if they contain only digits after removing - and _. sourceReference values (up to 200 characters) are rejected with sensitive_source_reference if they look like an email address, an IBAN, an Irish PPS number, a PayPathIQ API key, or a payment card number. Use opaque IDs from your integration mapping, not member, loan, or account numbers.
Request IDs and support
Every API response includesX-Request-Id, and every problem body repeats it as requestId. This includes 404 route_not_found for a path that does not exist and 405 method_not_allowed for a method a path does not support. Edge-protection 403 responses do not (see below).
If the response has a request ID, include it when you report a failed request to help@paypathiq.com. Do not send the API key or a full personal-data payload.
Edge protection
Before authentication, the edge also rate-limits requests by source address. Those responses are HTTP403 with no application/problem+json body and no
X-Request-Id. Treat a 403 without a problem body as transient: pause that
source, wait at least 60 seconds, and retry with backoff. An application 403
problem is a denied grant or scope and is not retryable.