Every API error comes with a short code and a plain message. These are the ones merchants meet most.
Credentials and access
- unauthenticated / invalid_credentials: the project key or secret is missing or wrong. Check for spaces, and that the secret belongs to this project.
- project_inactive: you used the live secret before the project was approved. Use the test secret until then, see Project review: what we check and when.
- project_disabled: the project is suspended or was not approved.
- ip_not_allowed: the call came from an address that is not on the project's API IP allow-list.
Your request
- invalid_request: a field is missing or has the wrong form. The message names the field.
- duplicate_order_id: a payment with this order ID already exists in this mode. Use a new one, or look the existing payment up.
- insufficient_funds: the balance is too low for a skin purchase. The message says how much is needed.
Rate limits
A project can make up to 600 calls a minute. Above that you get rate_limited with a hint when to try again. Wait instead of retrying in a tight loop.
When the market is busy
If the payment network does not answer, you get a message asking you to try again in a minute. Order IDs and custom IDs are unique per project, so a retry can never create a second payment or purchase. A repeated purchase call with the same custom ID returns the existing purchase.
The full list of errors, fields and examples is in the API reference.