Skip to content
Last updated

Percents errors include an HTTP status and an error instance identifier. Record the identifier when escalating an issue.

{
  "code": 401,
  "httpStatusCode": 401,
  "message": "Unauthorized",
  "uuid": "aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa",
  "name": "UnauthorizedError"
}

Common statuses

StatusMeaningAction
400Malformed auth header, invalid UUID, unsupported query value, or invalid requestCorrect the request; do not retry unchanged
401Invalid token or issuer not enabled for the Omni/upload capabilityVerify credentials and onboarding configuration
403File uploads are disabled for the issuerContact Percents before retrying
404The offer or merchant is not visible to the authenticated issuerVerify the ID and issuer/channel-network association
429Request rate exceededRetry with bounded exponential backoff and jitter
5xxPercents or dependency failureRetry idempotent GET requests with backoff; retain upload state for support

Upload troubleshooting

  • A successful presign response does not prove that the file bytes were uploaded.
  • A successful storage PUT does not mean schema validation or transaction processing succeeded.
  • A schema failure is reported in the result webhook with schemaValidationSuccess: false.
  • The final webhook can wait for automated and human review. Escalate after three business days, not immediately after upload.

When contacting support, provide the upload filename, environment, approximate upload time, response error uuid if present, and webhook ID if one was received. Never send API or signing tokens.