# Response codes

`code` is a 7-digit string. The first three digits match the HTTP status, the next two name the service, and the last two name the case.

## Success

| Code | HTTP | Meaning |
| --- | --- | --- |
| `2000000` | 200 | OK |
| `2010100` | 201 | Payment created |
| `2000101` | 200 | Payment canceled |
| `2010300` | 201 | Checkout created |
| `2000301` | 200 | Checkout canceled |
| `2010400` | 201 | Payment method created |
| `2000401` | 200 | Payment method removed |
| `2020200` | 202 | Webhook queued for repost |

## Errors

| Code | HTTP | Meaning |
| --- | --- | --- |
| `4000000` | 400 | The request body isn’t valid JSON. |
| `4010000` | 401 | The API key is missing, malformed, deleted or regenerated. |
| `4030000` | 403 | This key can’t make this request, for example from an address outside its IP allowlist. |
| `4030001` | 403 | A live key was sent from a browser page. Live keys belong on your server. |
| `4040000` | 404 | Not found in this mode for your account. |
| `4050000` | 405 | This method isn’t allowed on this path. |
| `4090001` | 409 | The `external_reference_id` (or Idempotency-Key) was already used with a different request. |
| `4090002` | 409 | The same request is still in progress. |
| `4090101` | 409 | The payment can’t be canceled: it’s no longer pending. |
| `4090102` | 409 | The payment can’t be canceled at the provider right now. |
| `4090201` | 409 | The webhook is still being sent. |
| `4090301` | 409 | The checkout can’t be canceled: it’s no longer open. |
| `4090302` | 409 | The checkout’s payment in progress can’t be canceled at the provider right now. |
| `4090401` | 409 | The saved card can’t be removed at the card processor right now. |
| `4220000` | 422 | Validation failed. `errors` lists each field, for example an amount outside your [payment limits](https://docs.weavpayments.com/reference/channels/list-channels), a reused `external_reference_id` or a private webhook URL. |
| `4220101` | 422 | The channel is off for your account. |
| `4220102` | 422 | The channel doesn’t accept that currency. |
| `4220103` | 422 | This payment method can’t be charged: it isn’t `ACTIVE`, or saving cards is off for your account. |
| `4220401` | 422 | Saving cards is off for your account. |
| `4290000` | 429 | Too many requests for your account. |
| `4290201` | 429 | This payment’s webhook was reposted less than 30 seconds ago. |
| `4290202` | 429 | Your account reposted 20 webhooks in this mode in the last minute. |
| `5000000` | 500 | Something went wrong on our side. |
| `5010100` | 501 | That channel isn’t live through the API yet. |

What to do for each: see [Errors](https://docs.weavpayments.com/errors#error-codes).

Service `00` is generic. Service `01` is payments. Service `02` is webhooks. Service `03` is checkouts. Once published, a code's meaning never changes.
