Error codes
Every error response carries a stable error.code. The message is meant for people
and can change, the code does not.
| Status | Code | Meaning |
|---|---|---|
400 | request_failed | The request could not be processed. Used for any other client or server error status that has no more specific code; the HTTP status of the response tells which one. |
401 | unauthorized | The API key is missing, malformed, wrong, paused, expired or revoked. The response is always identical and never names the reason. |
403 | forbidden | Access to the resource is denied. |
403 | insufficient_scope | The API key is valid but lacks a scope the endpoint needs. details.required lists the scopes the endpoint requires, details.missing the ones your key lacks. |
404 | not_found | The path does not exist, the API is not enabled on this system, the order does not belong to the shop of your API client, the customer, address or label value is not known to your API client, or the manufacturer does not exist or was deleted. |
405 | method_not_allowed | The path exists, but not with this HTTP method (for example GET instead of POST). |
409 | conflict | The request conflicts with the current state of the resource. On updateOrder: a request with the same Idempotency-Key is still running. |
409 | manufacturer_has_articles | Articles are assigned to the manufacturer, and confirmed_articles_count is missing or does not match their number. details.articles_count is the current number. Nothing was deleted; repeat the request with that number to confirm. |
409 | order_deleted | An order existed for this external_order_id, but it has since been deleted. Do not retry; contact the shop operator. |
409 | order_locked | The order is finalised (invoiced), cancelled or shipped (or all its goods are booked out), and the request changes items, addresses or the payment method; or the new status would cancel a credit note that is settled in a collective invoice. Nothing was changed, unless the credit note was settled while the other changes of the request were being saved; then those changes stay saved and the message says so. The status of such an order can still be changed. |
409 | stock_locked | A running stocktake locks the stock, so picked goods of a changed item could not be put back. Nothing was changed; retry later. |
422 | ambiguous_article | The number matches more than one active article. Send sku instead of article_id, or ask the shop operator to resolve the duplicate. |
422 | article_inactive | The article exists but is not active. |
422 | article_reserved | The article was produced for another customer and is reserved for them. It cannot be sold to the customer of this order. |
422 | article_tax_unresolved | No tax rate is configured for this article in the delivery country. Contact the shop operator. |
422 | client_not_configured | Your API client is not fully set up for orders (no shop, deleted shop, or its default referrer is inactive or not assigned to the shop). Reading an order only needs the shop. Contact the shop operator. |
422 | customer_address_incomplete | Only a customer ID was sent, but the customer's default billing address is incomplete. Send billing with the order. |
422 | duplicate_value | The same value appears more than once in a list. |
422 | idempotency_key_reused | The Idempotency-Key was already used by your API client within the last 24 hours for a request with a different body. Use a new key for a new change. |
422 | invalid_format | Wrong type or format, for example text instead of a number, an invalid email address, a parcel locker customer number that is not 6 to 10 digits, or sku and article_id sent together. |
422 | invalid_value | The value is not one of the allowed values, for example mode or notification. |
422 | item_already_delivered | The item is already partly delivered. It cannot be removed, and its quantity cannot be lower than the quantity already delivered. |
422 | manufacturer_name_taken | Another manufacturer already has this name. Names are compared without regard to upper and lower case and accents (Muller equals Müller). |
422 | order_empty | After the change the order would have no items left. To empty an order, change its status to a cancelled status. |
422 | out_of_range | A number, date or list size is outside the allowed range, or a text is shorter than allowed (e.g. search). |
422 | payment_method_not_available | The payment method exists but is not offered in the shop of your API client: it is not assigned to the shop, or its provider is not set up. For the collective invoice, the customer (or, for a new customer, the default customer class) is also not approved for it. Use an ID from listPaymentMethods. |
422 | required | A required field is missing or empty. On updateManufacturer, also when the body contains no field to change. |
422 | required_for_packstation | For a parcel locker delivery (packstation), postnumber and house are required. |
422 | too_long | A text is longer than allowed. |
422 | unknown_article | No article matches the sku or article_id. |
422 | unknown_country | The country code is not known. |
422 | unknown_customer | The customer_id does not belong to an active, registered customer of your shop. Guest customers, blocked or deleted customers and customers of other shops cannot be referenced. |
422 | unknown_field | updateOrder, createManufacturer and updateManufacturer only: the request body contains a field that is not known on its level (for updateOrder: top level, billing, shipping, items, or an entry of items.add or items.update), usually a typo. The field is named in the message. Query parameters are not checked. |
422 | unknown_item | The item_id does not belong to an item of this order (unknown, removed, or an item of another order). |
422 | unknown_order_status | No order status has this ID (it does not exist or was deleted). Use an ID from listOrderStatuses. |
422 | unknown_payment_method | No active payment method has this ID (it does not exist, was deleted or is inactive). |
422 | unknown_referrer | The referrer does not exist, is inactive, or is not assigned to the shop of your API client. |
422 | unknown_value | The value refers to something that does not exist, for example an unknown label value or customer class. |
422 | unsupported_currency | The currency is not supported. Only EUR is accepted. |
422 | validation_failed | The request data is invalid. details lists every problem at once, per field, each with its own detail code (see the codes below with status 422). |
429 | rate_limited | Too many requests per minute for your API client, or too many failed authentications in a short time. Wait for the number of seconds in the Retry-After header. |
500 | server_error | An unexpected error occurred on our side. On POST /orders, details.reference identifies the case; pass it to the shop operator if the error persists. |