The request is malformed or missing required parameters. The error field in the response describes which parameter is missing or invalid.
401 Unauthorized
Authentication Failed
No valid authentication token was provided. The token may be missing, expired, have an invalid signature, or be missing the required audience claim.
403 Forbidden
Insufficient Permissions
The token is valid but the authenticated user does not have permission for the requested action. Commonly returned when a tenant user tries to access admin-only endpoints.
404 Not Found
Resource Not Found
The requested resource does not exist, or it belongs to a different tenant. Phoenix Pay does not distinguish between "does not exist" and "belongs to another tenant" to prevent information leakage.
422 Unprocessable Entity
Processing Error
The request was syntactically valid but could not be processed. Common causes: no PSP configured for the currency, duplicate reference ID, or PSP rejected the request.
429 Too Many Requests
Rate Limited
You have exceeded the rate limit. Wait for the duration specified in the Retry-After header before retrying.
These are the possible values for the status field on payments, not HTTP status codes. See Payment Lifecycle for the full state machine.
Status
Description
Terminal?
pending
Payment record created, initial state
No
awaiting_payment
Waiting for customer to complete payment
No
processing
Payment detected, being confirmed by PSP
No
partial
Partial amount received (crypto deposits)
No
settled
Payment completed successfully
Yes
failed
Payment failed or was rejected
Yes
expired
Payment window expired before completion
Yes
cancelled
Payment was cancelled
Yes
Terminal means no further status changes are possible. Once a payment reaches a terminal state, all subsequent status update attempts are silently ignored.