Errors use standard HTTP status codes and always have the same JSON shape, with a stable machine-readable code, a human-readable message, and the request_id:
Your monthly quota is used up. Wait for the next month or upgrade. See Rate limits and quotas.
404
not_found
The merchant ID or route does not exist.
429
rate_limited
Slow down and retry after the number of seconds in the Retry-After header.
500
internal_error
Retry with backoff. If it persists, contact us with the request_id.
No match is not an error
When we cannot identify a merchant, /v1/enrich still returns 200, with merchant: null and confidence: 0. These results are not billed.
Errors inside a batch
In /v1/enrich/batch, an invalid item gets an error object in its place (with code and message) and the other items are processed normally. See Batch enrichment.
Retrying
Retry 429 after Retry-After, and 500 or network errors with exponential backoff. Do not retry 400, 401 or 402 without changing something first. Enrichment is safe to retry: the same descriptor gives the same answer.