Gando

Gando

Developer Portal

gando.app
Developer portal

Partner API error catalog

Every Partner API error returns an error.code field. Use this catalog for alerting, runbooks, and support triage.

CodeHTTPCauseDetails
invalid_request400Request failed validation — wrong query, path, or body parameter.View runbook
invalid_json_body400Request body is not valid JSON.View runbook
missing_api_key401Authorization header is missing or does not contain a gando_pk_ API key.View runbook
invalid_api_key401API key is unknown or malformed.View runbook
api_key_revoked401API key exists but has been revoked.View runbook
account_not_linked403Rental operator account is not linked to this partner.View runbook
account_revoked403The link between this partner and the rental operator account has been revoked.View runbook
deposit_not_found404No deposit exists with the given id, or it belongs to another partner context.View runbook
deposit_access_denied403Deposit exists but this partner cannot access it (wrong account link).View runbook
client_not_found404No client exists with the given id in this account context.View runbook
client_access_denied403Client exists but this partner cannot access it.View runbook
webhook_not_found404No webhook endpoint exists with the given id for this partner.View runbook
webhook_access_denied403Webhook exists but belongs to another partner.View runbook
capture_not_found404No successful capture exists for this deposit.View runbook
deposit_already_captured409Deposit has already been fully or partially captured.View runbook
deposit_invalid_status422Deposit is not in a valid state for this operation.View runbook
deposit_missing_payment_method422Deposit has no payment method attached — customer has not completed the card imprint.View runbook
deposit_missing_payment_intent422Deposit has no payment intent — PSP side was not initialized.View runbook
invalid_capture_amount400Capture amount is missing, zero, or not a positive number.View runbook
capture_amount_too_low400Capture amount is below the minimum allowed threshold.View runbook
capture_amount_exceeds_deposit400Capture amount exceeds the remaining deposit total.View runbook
account_not_capture_ready422Rental operator account is not ready for captures — onboarding or PSP setup incomplete.View runbook
operator_billing_incomplete400Rental operator billing identity/address (name, street, postal code, city, country, SIREN) is incomplete — required before an Inflow capture can be initiated.View runbook
payment_processor_unavailable503Payment processor (PSP) is temporarily unavailable.View runbook
payment_processor_error502Payment processor returned an error during capture or cancel, or refused the customer refund when cancelling a booking deposit session.View runbook
psp_unavailable503Payment service provider (Inflow) is temporarily unavailable for a Payment API call (e.g. wallet-balance).View runbook
invalid_iban400IBAN failed validation (format, checksum, or country rules).View runbook
bank_account_not_found404No beneficiary bank account exists with the given id for this rental operator account.View runbook
bank_account_disabled400The beneficiary bank account exists but has been disabled.View runbook
payment_not_found404No payment exists with the given id for this rental operator account.View runbook
payment_not_refundable400Payment status does not allow a refund (must be succeeded or partially_refunded with remaining refundable amount).View runbook
payment_not_cancellable409Payment status does not allow cancellation (must be pending or draft) — it may have already succeeded, failed, or been cancelled.View runbook
beneficiary_payout_not_found404No beneficiary payout matches the given id for this account.View runbook
insufficient_balance400Sub-merchant available balance is lower than the requested payout amount.View runbook
payout_exceeds_withdrawable400The payout exceeds the balance left after the cancellation reserve is held back, on operator Stripe Connect payouts and operator Inflow payouts. The partner API reports the same rejection as insufficient_balance, with withdrawableCents and reserveCents in details.View runbook
booking_deposit_session_not_found404No booking deposit session exists with the given id for this partner context.View runbook
booking_deposit_session_expired400Booking deposit session link has passed its expiresAt deadline without completion.View runbook
booking_deposit_session_not_cancellable409The booking deposit session is not paid (status other than completed), is already cancelled, or one of its deposits is no longer active (captured, closed, cancelled or expired).View runbook
account_kyb_not_active403Rental operator KYB (Know Your Business) is not active — payment resources are blocked.View runbook
external_reference_conflict409externalReference is already used by another resource for this rental operator account.View runbook
refund_insufficient_balance409The rental operator's available Inflow balance is lower than the requested refund amount.View runbook
billing_address_required409Rental operator's Account has no complete billing address (street/postalCode/city/country) — required before accepting payments and before creating or paying a combined booking deposit session (the booking VAT rate follows the rental operator's address).View runbook
combined_booking_unsupported_country409The rental operator's billing address is outside metropolitan France (incl. Corsica), Monaco and the 5 French overseas departments (Guadeloupe, Martinique, Réunion, Guyane, Mayotte). Combined booking payment is not available there, including in the overseas collectivities (Saint-Barthélemy, Saint-Martin, Saint-Pierre-et-Miquelon, Wallis-et-Futuna, French Polynesia, New Caledonia).View runbook
payout_account_not_ready409The rental operator has no connected payout account yet, or its KYB is not verified. The booking share of a combined booking payment is paid out to that account, so a combined booking deposit session cannot be created.View runbook
invalid_client_id400clientId in the request does not belong to the linked rental operator account.View runbook
client_not_linked_to_deposit422The client on the deposit does not match the client requested for scoring.View runbook
scoring_not_found404No open-banking scoring data exists for this client.View runbook
scoring_not_applicable409The deposit's securingMode is no_scoring (Swift offer, or Custom without scoring) — there is no open-banking scoring step for this deposit.View runbook
scoring_retry_required409The latest scoring attempt for this deposit could not be computed from the customer's bank data. details.reason says why: bridge_error, bridge_sync_failed, transactions_fetch_failed, bridge_timeout, data_access_disabled (current accounts excluded by the customer), no_eur_account, no_balance, history_maybe_incomplete (bank still synchronising), no_bank_connection. details.retryRequestedAt is when it happened. No rating is given and no older scoring is returned.View runbook
bank_disconnect_failed502The customer asked to disconnect their bank from the deposit flow (POST /api/public/bank-identity/disconnect) and the open banking provider did not remove access. Nothing was disconnected.View runbook
offer_switch_not_allowed403The requested offer transition is not allowed in self-service (only swift → flex is).View runbook
card_expires_too_soon400The customer's card expires before the deposit's securing window end (plus the validity margin) — it cannot be used to secure this deposit.View runbook
invalid_idempotency_key400Idempotency-Key header is not a valid UUID v4.View runbook
idempotency_key_conflict409Same Idempotency-Key was reused with a different request body.View runbook
redis_unavailable503Redis is unavailable — Idempotency-Key cannot be processed.View runbook
rate_limited429Too many requests in the rate-limit window.View runbook
internal_error500Unexpected server error.View runbook
bad_gateway502Upstream service returned an invalid or unreachable response.View runbook
invalid_params400Connect URL is missing required parameters or ts is not a valid Unix timestamp.View runbook
partner_not_found404Partner slug in the connect URL does not match any registered partner.View runbook
missing_connect_secret500Partner exists but connect_secret is not configured in Gando admin.View runbook
invalid_signature401HMAC signature does not match the expected payload.View runbook
expired401ts timestamp is outside the 5-minute tolerance window.View runbook