Weav Docsv1

Guides / API basics

Errors

Errors use standard HTTP status codes. An error response never includes data, so you can’t read partial results from a failed request.

Error shape

json · 422 Unprocessable Content
{
    "code": "4220000",
    "success": false,
    "message": "The given data was invalid.",
    "errors": {
        "amount": [
            "The amount field must be greater than 0."
        ],
        "success_url": [
            "The success url field must be a valid URL."
        ]
    }
}

Fields

Field Type Description
code string A 7-digit code for the exact case, listed below. Branch on this, not on message.
success boolean Always false on an error.
message string What went wrong, for people. It can change; don’t parse it.
errors object Only on 422: each field that failed, with its messages.
json · 409 Conflict
{
    "code": "4090001",
    "success": false,
    "message": "This Idempotency-Key was already used with a different request."
}

Status codes

Status Meaning
200 Read or action succeeded.
201 A resource was created.
202 Accepted: queued to run shortly, such as a webhook repost.
400 The request body could not be read.
401 Missing or invalid API key.
403 The key can’t make this request, for example from an address outside its allowlist.
404 The resource doesn’t exist, or it belongs to another merchant or mode.
405 This method isn’t allowed on this path.
409 Conflict, such as an external_reference_id or Idempotency-Key reused with a different request, or canceling a payment that is no longer pending.
422 Validation failed. A number sent as a string also fails here.
429 Too many requests. Wait, then retry.
500 Something went wrong on our side. Retry the same request.
501 That channel isn’t live through the API yet.

Error codes

code HTTP When What to do
4000000 400 The request body isn’t valid JSON. Send a valid JSON body with Content-Type: application/json.
4010000 401 The API key is missing, malformed, deleted or regenerated. Send a current key as Authorization: Bearer wv_....
4030000 403 This key can’t make this request, for example from an address outside its IP allowlist. Call from an allowed address, or update the key’s allowlist in the dashboard.
4030001 403 A live key was sent from a browser page. Live keys belong on your server. Use a test key in the browser (Try It takes test keys only), and call Weav with live keys only from your server.
4040000 404 Not found in this mode for your account. Check the reference and that you use a live or test key to match.
4050000 405 This method isn’t allowed on this path. Check the method in the endpoint’s docs.
4090001 409 The external_reference_id (or Idempotency-Key) was already used with a different request. Use a new reference for a new payment; never change a request and keep its reference.
4090002 409 The same request is still in progress. Wait a moment, then retry it.
4090101 409 The payment can’t be canceled: it’s no longer pending. Retrieve the payment for its final status.
4090102 409 The payment can’t be canceled at the provider right now. Retry shortly. The payment stays pending until then.
4090201 409 The webhook is still being sent. Repost it once the current delivery finishes.
4090301 409 The checkout can’t be canceled: it’s no longer open. Retrieve the checkout for its status.
4090302 409 The checkout’s payment in progress can’t be canceled at the provider right now. Retry shortly. The checkout stays open until then.
4090401 409 The saved card can’t be removed at the card processor right now. Retry shortly. It stays chargeable until then.
4220000 422 Validation failed. errors lists each field, for example an amount outside your payment limits, a reused external_reference_id or a private webhook URL. Fix the fields named in errors and send again.
4220101 422 The channel is off for your account. Turn it on under Channels in the dashboard, or contact support.
4220102 422 The channel doesn’t accept that currency. Use a currency listed in errors.currency.
4220103 422 This payment method can’t be charged. Charge only an ACTIVE one. Ask your customer to save their card again if it failed or was removed.
4220401 422 Saving cards is off for your account. Contact support. Weav turns it on once it has your PCI DSS evidence.
4290000 429 Too many requests for your account. Wait for Retry-After seconds, then retry. See Rate limiting.
4290201 429 This payment’s webhook was reposted less than 30 seconds ago. Wait for Retry-After seconds. To check the payment’s status, retrieve the payment instead.
4290202 429 Your account reposted 20 webhooks in this mode in the last minute. Wait for Retry-After seconds. Weav already retries every webhook for about 7 days, so there’s no need to repost in bulk.
5000000 500 Something went wrong on our side. Retry the same request. If it keeps happening, contact support.
5010100 501 That channel isn’t live through the API yet. Use a test key for now, or contact support.

A code’s meaning never changes once published. New codes may be added, so treat an unknown one by its HTTP status.