Partner API error catalog
Every Partner API error returns an error.code field. Use this catalog for alerting, runbooks, and support triage.
| Code | HTTP | Cause | Details |
|---|---|---|---|
invalid_request | 400 | Request failed validation — wrong query, path, or body parameter. | View runbook |
invalid_json_body | 400 | Request body is not valid JSON. | View runbook |
missing_api_key | 401 | Authorization header is missing or does not contain a gando_pk_ API key. | View runbook |
invalid_api_key | 401 | API key is unknown or malformed. | View runbook |
api_key_revoked | 401 | API key exists but has been revoked. | View runbook |
account_not_linked | 403 | Rental operator account is not linked to this partner. | View runbook |
account_revoked | 403 | The link between this partner and the rental operator account has been revoked. | View runbook |
deposit_not_found | 404 | No deposit exists with the given id, or it belongs to another partner context. | View runbook |
deposit_access_denied | 403 | Deposit exists but this partner cannot access it (wrong account link). | View runbook |
client_not_found | 404 | No client exists with the given id in this account context. | View runbook |
client_access_denied | 403 | Client exists but this partner cannot access it. | View runbook |
webhook_not_found | 404 | No webhook endpoint exists with the given id for this partner. | View runbook |
webhook_access_denied | 403 | Webhook exists but belongs to another partner. | View runbook |
capture_not_found | 404 | No successful capture exists for this deposit. | View runbook |
deposit_already_captured | 409 | Deposit has already been fully or partially captured. | View runbook |
deposit_invalid_status | 422 | Deposit is not in a valid state for this operation. | View runbook |
deposit_missing_payment_method | 422 | Deposit has no payment method attached — customer has not completed the card imprint. | View runbook |
deposit_missing_payment_intent | 422 | Deposit has no payment intent — PSP side was not initialized. | View runbook |
invalid_capture_amount | 400 | Capture amount is missing, zero, or not a positive number. | View runbook |
capture_amount_too_low | 400 | Capture amount is below the minimum allowed threshold. | View runbook |
capture_amount_exceeds_deposit | 400 | Capture amount exceeds the remaining deposit total. | View runbook |
account_not_capture_ready | 422 | Rental operator account is not ready for captures — onboarding or PSP setup incomplete. | View runbook |
payment_processor_unavailable | 503 | Payment processor (PSP) is temporarily unavailable. | View runbook |
payment_processor_error | 502 | Payment processor returned an error during capture or cancel. | View runbook |
invalid_client_id | 400 | clientId in the request does not belong to the linked rental operator account. | View runbook |
client_not_linked_to_deposit | 422 | The client on the deposit does not match the client requested for scoring. | View runbook |
scoring_not_found | 404 | No open-banking scoring data exists for this client. | View runbook |
invalid_idempotency_key | 400 | Idempotency-Key header is not a valid UUID v4. | View runbook |
idempotency_key_conflict | 409 | Same Idempotency-Key was reused with a different request body. | View runbook |
redis_unavailable | 503 | Redis is unavailable — Idempotency-Key cannot be processed. | View runbook |
rate_limited | 429 | Too many requests in the rate-limit window. | View runbook |
internal_error | 500 | Unexpected server error. | View runbook |
bad_gateway | 502 | Upstream service returned an invalid or unreachable response. | View runbook |
invalid_params | 400 | Connect URL is missing required parameters or ts is not a valid Unix timestamp. | View runbook |
partner_not_found | 404 | Partner slug in the connect URL does not match any registered partner. | View runbook |
missing_connect_secret | 500 | Partner exists but connect_secret is not configured in Gando admin. | View runbook |
invalid_signature | 401 | HMAC signature does not match the expected payload. | View runbook |
expired | 401 | ts timestamp is outside the 5-minute tolerance window. | View runbook |