SETSimple Easy Transactions
SET DocsAPI reference and complianceUpdated 2026-11-08
Browse: Overview

Errors

Every error is JSON with a stable machine code and a human message:

HTTP/1.1 409 Conflict
{ "error": "endorsement_required", "message": "Bridge has not approved this customer for EUR (the sepa endorsement). …" }

Branch on error, never on message. A refused write changes nothing unless the answer says otherwise (POST /v1/payment_setups lists what it created before a later step was refused).

Status codes

StatusMeaningWhat to do
400The request is malformed or a field is invalidFix the field the code names
401No key, an invalid or revoked key, or a key for the other environmentCheck the key and the base URL
403The key may not do this (scope, platform funds, paused product)Do not retry; ask SET if you expect access
404No such object for this key, or a sandbox route in productionCheck the id; objects are scoped to the key's account and mode
409The request conflicts with state: not yet verified, missing endorsement, already linked, not readyWait for the state to change, or fix the conflict
422idempotency_key_reused: the same Idempotency-Key with a different bodyUse a new key
429Rate limitedBack off and retry
500handler_errorRetry with the same Idempotency-Key; contact SET if it persists
502The provider or a chain did not answer usably (rate_unavailable, chain_unavailable)Retry shortly
503The feature is not switched on for this deployment (api_disabled, webhooks_unconfigured, direct_deposit_disabled)Ask SET

Codes by area

AreaCodes
Keysapi_key_required, api_key_invalid, api_key_wrong_mode, scope_missing, platform_api_paused, rate_limited
Customersexternal_id_invalid, type_invalid, name_invalid, email_invalid, endorsements_invalid, endorsement_invalid, redirect_uri_invalid, customer_unknown, customer_type_conflict, email_already_onboarded, verification_incomplete, endorsement_required, merchant_single_customer, merchant_name_mismatch
Bank accountscurrency_invalid, account_type_invalid, bank_details_refused, bank_account_required, bank_account_unknown, bank_account_already_linked, bank_account_conflict, bank_currency_mismatch
Addresses and accountschain_invalid, rail_invalid, rail_currency_mismatch, stablecoin_invalid, reference_invalid, asset_invalid, address_invalid, route_not_supported, settle_route_not_supported, return_address_invalid, return_address_required, cash_out_address_invalid, cash_out_address_unknown, cash_out_address_conflict, virtual_account_invalid, virtual_account_unknown, account_conflict
Travel Rulebeneficiary_invalid, wallet_type_invalid, ownership_verified_at_invalid, sender_invalid, sender_type_invalid, deposit_not_ready, platform_details_incomplete, platform_funds_not_allowed
Payment setupsway_invalid, field_not_used
Eventsafter_invalid, webhook_url_missing, webhooks_unconfigured
Sandboxnothing_to_simulate
Direct Depositpartner_key_required, partner_key_invalid, direct_deposit_disabled, month_invalid, chain_invalid, address_invalid
Payable Emailpayable_email_disabled, payable_email_off, payable_email_merchant, email_invalid, payee_invalid, payee_unknown, claim_needs_base, payee_cap_reached, tx_hash_invalid, payment_not_claimable, payment_mismatch, sender_unregistered, amount_out_of_range, tx_already_reported, privy_unavailable, chain_unavailable

Compliance refusals

Some refusals come from the compliance programme rather than validation: a customer who is rejected, a movement without the Travel Rule data the provider requires (refused before it is sent), a beneficiary that is not allowed, or a key revoked after a sanctions or monitoring decision. SET does not explain a sanctions or suspicious-activity decision in an error message; see Monitoring and reporting.