ePostman docs
Console

Error codes

The SAPI error response shape and the full list of codes with HTTP status and retryability.

2 min read
  • #sapi
  • #error codes
  • #retryable
  • #correlation_id

Every SAPI error has the same shape and tells you whether retrying makes sense.

{
  "error": {
    "category": "VALIDATION",
    "code": "SAPI-VAL-003",
    "message": "payload is not well-formed XML",
    "correlation_id": "b1f0c2d4-7e19-4a3c-8f52-6d0e91ab7c33",
    "retryable": false,
    "timestamp": "2026-07-13T09:14:22.310Z"
  }
}
CodeHTTPRetryWhen it happens
SAPI-AUTH-001401noInvalid credentials or token
SAPI-AUTH-002403noThe Peppol identifier is not yours
SAPI-AUTH-003401noMissing or invalid Authorization header
SAPI-AUTH-004403noThe account is suspended or not yet approved
SAPI-AUTH-005423noAccount temporarily locked after repeated failures
SAPI-VAL-001400noMalformed Peppol identifier
SAPI-VAL-002400noA required header or the body is missing
SAPI-VAL-003400noThe payload is not well-formed XML
SAPI-VAL-006400noIdempotency-Key is not a valid UUID
SAPI-VAL-008400noMalformed pageToken
SAPI-VAL-009409noSame idempotency key, different body
SAPI-VAL-010413noThe document exceeds 10 MB
SAPI-VAL-020400noThe page token expired (15 minutes)
SAPI-PROC-003502yesA transient error on our side
SAPI-PROC-004402noNot enough credit to send
SAPI-PERM-002409noA document with the same number, supplier and type (invoice/credit note) is already in progress or was already dispatched
SAPI-PERM-003404noThe document does not exist
SAPI-PERM-004410noThe document’s retention period has lapsed
SAPI-TEMP-001503yesThe authentication service is temporarily down
SAPI-TEMP-002429yesRate limit exceeded — wait as told by Retry-After

Wrong method and unknown path

A wrong HTTP method returns 405 with an Allow header naming the right one — e.g. GET on /sapi/document/receive/{id}/acknowledge (the endpoint is POST) answers 405 with Allow: POST. The code in the envelope is SAPI-VAL-002.

An unknown path under /sapi/ returns 404 with code SAPI-PERM-003. Both use the same error envelope as the table above.