View as Markdown

Errors

Machine-readable codes. Request errors abort the whole call; item errors leave the rest of the batch free to accept.


Request errors

CodeHTTPMeaning
unauthorized401Missing, invalid, or revoked key
forbidden_scope403Valid key, wrong kind or missing scope (pk_plp_ on a write route)
rate_limited429Over limit; see Retry-After + X-RateLimit-*
malformed_json400Body is not valid JSON
batch_too_large400More than 250 orders (or spend batch cap)
payload_too_large413Body over 4 MB
unknown_source409Orders before PUT /v1/source
source_locked409Currency/timezone change after first accepted order

Error body shape: { "error": string, "code"?: string }.


Item errors

Returned inside the batch result; the HTTP status is still 200 when the request itself is well-formed.

CodeMeaning
money_must_be_stringJSON number in a money field
money_invalid / money_scaleRegex or scale violation
sum_mismatchIdentity failure; detail includes computed vs supplied
rounding_adjustment_too_largeBeyond currency cash-rounding bound
refunds_exceed_orderSum of refund totals > order total
refund_split_exceeds_totaltax + shipping portions > refund total
refund_line_exceeds_orderRefund line qty > order line qty
timestamp_missing_offsetBare local timestamp
timestamp_in_futureMore than 48h ahead of server clock
duplicate_in_batchSame natural key twice with differing payloads
duplicate_line_idline_id not unique within the order
pii_rejectedcustomer.id looks like PII
unknown_fieldRequest field not in the v1 schema
expense_invalidExpense validation failure

superseded is an outcome, not an error: older updated_at acknowledged as a no-op.