From 298124091b4c2d449aa72cd417afedadd480a920 Mon Sep 17 00:00:00 2001 From: Eric Viana Date: Mon, 3 Aug 2026 20:23:10 -0300 Subject: [PATCH 1/9] feat(api-sync): add deterministic spec-sync patcher, map, and tests Replaces the AI-driven api-sync pipeline's classification/apply step with a deterministic, stdlib-only patcher (.api-sync/sync.py), mirroring check_contract.py's ast-based style. - .api-sync/spec-map.json: curated mapping from spec constructs (enums, schemas, and nested inline sub-objects via specPath) to SDK symbols. Covers all 84 schemas reachable from paths/webhooks in the current public spec, including the customers and bank_accounts discriminator fan-outs and the shared TrackingPayment/TrackingTransaction/TrackingComplete/ TrackingLiquidity nested-object mappings. ignore.schemas documents the Rfi family, UploadAnalyze*, and the one confirmed-orphan schema (LedgerOperation). - .api-sync/unmodeled.json: honest ledger of currently-absent spec properties and enum-member/value divergences on mapped schemas/enums, each with a reason and owner, seeded from a bootstrap diff against the current spec. - .api-sync/sync.py: --check (state reconciliation against spec-snapshot.json), --apply (reconciles against --spec, hard-fails on removals/required-ness or type changes/new operations or schemas/unmapped targets, applies enum-member and optional-property additions, refreshes the snapshot), --validate-map, --coverage (non-blocking known-gap report). Reachability is computed as the transitive $ref closure of paths+webhooks, so schemas outside it are skipped by construction, not by a hand-maintained list. - tests/test_api_sync.py: literal/TypedDict splicing (incl. the _XRequired total=False two-part pattern and the NotRequired convention), every NEEDS_HUMAN classification, a nested specPath sub-object case, bump classification, idempotency, map validity, and unmodeled.json honoring. - CI: wires an API Sync Check job (map validity, --check, a determinism proof, a non-blocking coverage report) into main.yaml alongside contract-check. Claude-Session: https://claude.ai/code/session_01F1stiNzuNtJXoXtiW9ZCbs --- .api-sync/spec-map.json | 338 ++++++++ .api-sync/sync.py | 998 +++++++++++++++++++++++ .api-sync/unmodeled.json | 1043 +++++++++++++++++++++++++ .github/workflows/api-sync-check.yaml | 43 + .github/workflows/main.yaml | 5 + .gitignore | 4 + tests/test_api_sync.py | 812 +++++++++++++++++++ uv.lock | 2 +- 8 files changed, 3244 insertions(+), 1 deletion(-) create mode 100644 .api-sync/spec-map.json create mode 100644 .api-sync/sync.py create mode 100644 .api-sync/unmodeled.json create mode 100644 .github/workflows/api-sync-check.yaml create mode 100644 tests/test_api_sync.py diff --git a/.api-sync/spec-map.json b/.api-sync/spec-map.json new file mode 100644 index 0000000..7f1f379 --- /dev/null +++ b/.api-sync/spec-map.json @@ -0,0 +1,338 @@ +{ + "$schema": "curated mapping from spec constructs to SDK symbols; consumed by sync.py; every entry hand-verified against src/blindpay", + "notes": [ + "Coverage is computed over the REACHABLE schema set only (transitive $ref closure from paths + webhooks); schemas outside that closure (e.g. LedgerOperation) are skipped by construction, not by being hand-listed here.", + "The *WebhookOut envelope schemas (PayoutNewWebhookOut, PayinNewWebhookOut, etc.) appear in `types` ONLY via their nested tracking_* specPath entries, because those sub-objects are reused verbatim from the modeled GET/POST response flows. Their own webhook-envelope-level fields (type, timestamp, key, ...) are intentionally out of scope: the SDK does not parse webhook payloads at all (verify_webhook_signature() checks the signature only), so those root-level fields are covered by the blanket ignore.schemas entries for the same schema names where they are not also a tracking_* host." + ], + "enums": [ + { + "spec": { "schema": "WebhookEndpointIn", "property": "events", "items": true }, + "sdk": { "file": "src/blindpay/resources/webhooks/webhooks.py", "symbol": "WebhookEvents" } + }, + { + "spec": { "schema": "QuoteIn", "property": "network" }, + "sdk": { "file": "src/blindpay/types.py", "symbol": "Network" } + }, + { + "spec": { "schema": "QuoteIn", "property": "token" }, + "sdk": { "file": "src/blindpay/types.py", "symbol": "StablecoinToken" } + }, + { + "spec": { "schema": "PayoutOut", "property": "transaction_document_type" }, + "sdk": { "file": "src/blindpay/types.py", "symbol": "TransactionDocumentType" } + }, + { + "spec": { "schema": "CreateBankAccountIn", "property": "type" }, + "sdk": { "file": "src/blindpay/types.py", "symbol": "Rail" } + }, + { + "spec": { "schema": "QuoteIn", "property": "currency_type" }, + "sdk": { "file": "src/blindpay/types.py", "symbol": "CurrencyType" } + }, + { + "spec": { "schema": "CustomerOut", "property": "type" }, + "sdk": { "file": "src/blindpay/types.py", "symbol": "AccountClass" } + }, + { + "spec": { "schema": "PayoutOut", "property": "status" }, + "sdk": { "file": "src/blindpay/types.py", "symbol": "TransactionStatus" }, + "note": "spec is a strict subset per-schema (PayoutOut/PayinOut/TransferOut each expose 4-5 of the SDK's 6 values); SDK Literal already a superset, nothing to reconcile" + }, + { + "spec": { "schema": "CreateBankAccountIn", "property": "spei_protocol" }, + "sdk": { "file": "src/blindpay/types.py", "symbol": "SpeiProtocol" } + }, + { + "spec": { "schema": "CreateBankAccountIn", "property": "recipient_relationship" }, + "sdk": { "file": "src/blindpay/types.py", "symbol": "RecipientRelationship" } + }, + { + "spec": { "schema": "VirtualAccountOut", "property": "banking_partner" }, + "sdk": { "file": "src/blindpay/types.py", "symbol": "BankingPartner" } + }, + { + "spec": { "schema": "CreatePayinQuoteIn", "property": "payment_method" }, + "sdk": { "file": "src/blindpay/resources/payins/quotes.py", "symbol": "PaymentMethod" }, + "note": "the FIELD ACTUALLY USES this local symbol (CreatePayinQuoteInput.payment_method: PaymentMethod resolves to payins/quotes.py's own Literal, not the shared types.py one) -- mapping must point here, not at types.py, or a future member addition would land in a Literal this field never references. Confirmed against blindpay-v2 packages/reference/src/rails.ts (paymentMethod, 9 values) and the other 4 SDKs (node/go/php/swift all carry all 9; python was the only one stuck at 6). Discovered missing transfers/pse/international_swift during Phase A bootstrap; textbook APPLICABLE case (pure member additions, same risk class as BankingPartner/portage), applied in the Phase A drift-application commit. Follow-up: after this fix, payins/quotes.py's local PaymentMethod is a byte-identical duplicate of types.py's shared PaymentMethod -- deliberately NOT refactored away here (a patcher should not delete symbols); worth a dedicated follow-up to import the shared one instead." + }, + { + "spec": { "schema": "PayinOut", "property": "payment_method" }, + "sdk": { "file": "src/blindpay/types.py", "symbol": "PaymentMethod" }, + "note": "the shared, publicly-exported types.py PaymentMethod (9 values) is not referenced by any TypedDict field today (grep confirms it), but it is exported from blindpay/__init__.py and blindpay.resources.payins, so it is kept reconciled against a real 9-value anchor rather than left un-anchored. No gap: already matches exactly." + }, + { + "spec": { "schema": "RfiField", "property": "aiprise_document_type" }, + "sdk": { "file": "src/blindpay/types.py", "symbol": "AipriseDocumentType" }, + "note": "the Rfi family itself is in ignore.schemas (unmodeled resource), but the enum values are shared with the modeled onboarding flow so the Literal is kept reconciled" + }, + { + "spec": { "schema": "UploadAnalyzeOut", "property": "approval_rate" }, + "sdk": { "file": "src/blindpay/types.py", "symbol": "ApprovalRate" } + }, + { + "spec": { "schema": "BankAccountOut", "property": "account_type" }, + "sdk": { "file": "src/blindpay/types.py", "symbol": "BankAccountType" }, + "note": "KNOWN DIVERGENCE, kept mapped on purpose: spec enum is [checking, saving], SDK Literal is [checking, savings]. See unmodeled.json kind=enum entry; do not blindly append, this needs a coordinated rename PR (confirmed live defect, not just typing)." + }, + { + "spec": { "schema": "CustomerOut", "property": "kyc_status" }, + "sdk": { "file": "src/blindpay/resources/customers/customers.py", "symbol": "KycStatus" }, + "note": "KNOWN DIVERGENCE, kept mapped on purpose: spec has 8 members, SDK Literal has 2. See unmodeled.json kind=enum entry; needs a human decision on whether this Literal is even the right type for this field before adding members." + } + ], + "types": [ + { "spec": "AvailableBankDetails", "sdk": [{ "file": "src/blindpay/resources/available/available.py", "symbol": "BankDetail" }] }, + { "spec": "AvailableNaicsList", "sdk": [{ "file": "src/blindpay/resources/available/available.py", "symbol": "NaicsCode" }] }, + { "spec": "AvailableRails", "sdk": [{ "file": "src/blindpay/resources/available/available.py", "symbol": "RailInfo" }] }, + { "spec": ["SwiftCodeItem", "SwiftCodeResponse"], "sdk": [{ "file": "src/blindpay/resources/available/available.py", "symbol": "SwiftCodeBankDetail" }], + "note": "SwiftCodeResponse is the bare-array wrapper (List[SwiftCodeItem]) with no properties of its own; listed so it is not reported as an unaccounted schema" + }, + { "spec": "PaginationMetadata", "sdk": [{ "file": "src/blindpay/types.py", "symbol": "PaginationMetadata" }] }, + + { "spec": "BankAccountOut", "sdk": [ + { "file": "src/blindpay/resources/bank_accounts/bank_accounts.py", "symbol": "BankAccount" }, + { "file": "src/blindpay/resources/bank_accounts/bank_accounts.py", "symbol": "GetBankAccountResponse" } + ], + "note": "discriminator fan-out target for the response side; BankAccount is the list() shape, GetBankAccountResponse is the get() shape (already carries pre-existing allowlist.json divergences: account_holder_name/is_primary/swift_code/iban)" + }, + { "spec": "CreateBankAccountIn", "sdk": [ + { "file": "src/blindpay/resources/bank_accounts/bank_accounts.py", "symbol": "CreatePixInput" }, + { "file": "src/blindpay/resources/bank_accounts/bank_accounts.py", "symbol": "CreateArgentinaTransfersInput" }, + { "file": "src/blindpay/resources/bank_accounts/bank_accounts.py", "symbol": "CreateSpeiInput" }, + { "file": "src/blindpay/resources/bank_accounts/bank_accounts.py", "symbol": "CreateColombiaAchInput" }, + { "file": "src/blindpay/resources/bank_accounts/bank_accounts.py", "symbol": "CreateAchInput" }, + { "file": "src/blindpay/resources/bank_accounts/bank_accounts.py", "symbol": "CreateWireInput" }, + { "file": "src/blindpay/resources/bank_accounts/bank_accounts.py", "symbol": "CreateInternationalSwiftInput" }, + { "file": "src/blindpay/resources/bank_accounts/bank_accounts.py", "symbol": "CreateRtpInput" }, + { "file": "src/blindpay/resources/bank_accounts/bank_accounts.py", "symbol": "CreateSepaInput" }, + { "file": "src/blindpay/resources/bank_accounts/bank_accounts.py", "symbol": "CreatePixSafeInput" }, + { "file": "src/blindpay/resources/bank_accounts/bank_accounts.py", "symbol": "CreateTedInput" } + ], + "note": "the 11-rail discriminator fan-out on the request side (design doc's headline case); `type` is injected by each create_* method, never a field on these TypedDicts" + }, + + { "spec": "CreateBlockchainWalletIn", "sdk": [ + { "file": "src/blindpay/resources/wallets/blockchain.py", "symbol": "CreateBlockchainWalletWithAddressInput" }, + { "file": "src/blindpay/resources/wallets/blockchain.py", "symbol": "CreateBlockchainWalletWithHashInput" } + ], + "note": "discriminated by is_account_abstraction, which each create_with_* method injects rather than exposing as a field" + }, + { "spec": "BlockchainWalletOut", "sdk": [{ "file": "src/blindpay/resources/wallets/blockchain.py", "symbol": "BlockchainWallet" }] }, + { "spec": "BlockchainWalletMessageOut", "sdk": [{ "file": "src/blindpay/resources/wallets/blockchain.py", "symbol": "GetBlockchainWalletMessageResponse" }] }, + + { "spec": "CreateCustomerIn", "sdk": [ + { "file": "src/blindpay/resources/customers/customers.py", "symbol": "CreateIndividualWithStandardKYCInput" }, + { "file": "src/blindpay/resources/customers/customers.py", "symbol": "CreateIndividualWithEnhancedKYCInput" }, + { "file": "src/blindpay/resources/customers/customers.py", "symbol": "CreateBusinessWithStandardKYBInput" } + ], + "note": "the 3-way KYC discriminator fan-out on the request side; `type`/`kyc_type` are injected by each create_* method" + }, + { "spec": "CustomerOut", "sdk": [ + { "file": "src/blindpay/resources/customers/customers.py", "symbol": "IndividualWithStandardKYC" }, + { "file": "src/blindpay/resources/customers/customers.py", "symbol": "IndividualWithEnhancedKYC" }, + { "file": "src/blindpay/resources/customers/customers.py", "symbol": "BusinessWithStandardKYB" } + ], + "note": "the 3-way KYC discriminator fan-out on the response side (design doc's headline case)" + }, + { "spec": "UpdateCustomerIn", "sdk": [{ "file": "src/blindpay/resources/customers/customers.py", "symbol": "UpdateCustomerInput" }] }, + { "spec": "CustomerLimitIncreaseIn", "sdk": [{ "file": "src/blindpay/resources/customers/customers.py", "symbol": "RequestLimitIncreaseInput" }] }, + { "spec": "CustomerLimitIncreaseOut", "sdk": [{ "file": "src/blindpay/resources/customers/customers.py", "symbol": "RequestLimitIncreaseResponse" }] }, + { "spec": "GetCustomerLimitIncreaseOut", "sdk": [{ "file": "src/blindpay/resources/customers/customers.py", "symbol": "LimitIncreaseRequest" }] }, + { "spec": "GetCustomerLimitsOut", "sdk": [ + { "file": "src/blindpay/resources/customers/customers.py", "symbol": "GetCustomerLimitsResponse" }, + { "file": "src/blindpay/resources/customers/customers.py", "symbol": "Limits" }, + { "file": "src/blindpay/resources/customers/customers.py", "symbol": "PayinLimit" }, + { "file": "src/blindpay/resources/customers/customers.py", "symbol": "PayoutLimit" }, + { "file": "src/blindpay/resources/limits/limits.py", "symbol": "GetCustomerLimitsResponse" }, + { "file": "src/blindpay/resources/limits/limits.py", "symbol": "CustomerLimits" }, + { "file": "src/blindpay/resources/limits/limits.py", "symbol": "PayinLimit" }, + { "file": "src/blindpay/resources/limits/limits.py", "symbol": "PayoutLimit" } + ], + "note": "pre-existing duplicate modeling: customers.py and limits.py each declare their own near-identical copy of this shape (survey irregularity #4, out of scope for this project); both are listed so reconciliation checks either copy" + }, + + { "spec": "CreatePayinIn", "sdk": [{ "file": "src/blindpay/resources/payins/payins.py", "symbol": "CreatePayinInput" }], + "note": "CreatePayinInput is dead code (create_evm() takes a bare payin_quote_id str, per allowlist.json); mapped anyway so drift on this schema stays visible instead of silently skipped" }, + { "spec": "CreatePayinOut", "sdk": [{ "file": "src/blindpay/resources/payins/payins.py", "symbol": "CreateEvmPayinResponse" }] }, + { "spec": "PayinOut", "sdk": [ + { "file": "src/blindpay/resources/payins/payins.py", "symbol": "Payin" }, + { "file": "src/blindpay/resources/payins/payins.py", "symbol": "GetPayinTrackResponse" } + ] + }, + { "spec": "CreatePayinQuoteIn", "sdk": [{ "file": "src/blindpay/resources/payins/quotes.py", "symbol": "CreatePayinQuoteInput" }] }, + { "spec": "CreatePayinQuoteOut", "sdk": [{ "file": "src/blindpay/resources/payins/quotes.py", "symbol": "CreatePayinQuoteResponse" }] }, + + { "spec": "PayoutOut", "sdk": [{ "file": "src/blindpay/resources/payouts/payouts.py", "symbol": "Payout" }] }, + { "spec": "PayoutOnEvmIn", "sdk": [{ "file": "src/blindpay/resources/payouts/payouts.py", "symbol": "CreateEvmPayoutInput" }] }, + { "spec": "PayoutOnEvmOut", "sdk": [ + { "file": "src/blindpay/resources/payouts/payouts.py", "symbol": "CreateEvmPayoutResponse" }, + { "file": "src/blindpay/resources/payouts/payouts.py", "symbol": "CreateSolanaPayoutResponse" }, + { "file": "src/blindpay/resources/payouts/payouts.py", "symbol": "CreateStellarPayoutResponse" } + ], + "note": "the spec reuses this ONE schema as the 200 response for evm, solana AND stellar payout creation; the SDK models 3 separate response TypedDicts for it" + }, + { "spec": "PayoutOnSolanaIn", "sdk": [{ "file": "src/blindpay/resources/payouts/payouts.py", "symbol": "CreateSolanaPayoutInput" }] }, + { "spec": "PayoutOnStellarIn", "sdk": [{ "file": "src/blindpay/resources/payouts/payouts.py", "symbol": "CreateStellarPayoutInput" }] }, + { "spec": "PayoutOnStellarAuthorizeIn", "sdk": [{ "file": "src/blindpay/resources/payouts/payouts.py", "symbol": "AuthorizeStellarTokenInput" }] }, + { "spec": "SubmitPayoutDocumentsIn", "sdk": [{ "file": "src/blindpay/resources/payouts/payouts.py", "symbol": "SubmitPayoutDocumentsInput" }] }, + + { "spec": "QuoteIn", "sdk": [{ "file": "src/blindpay/resources/quotes/quotes.py", "symbol": "CreateQuoteInput" }], + "note": "refund_wallet_address lands here (Phase A delta field)" }, + { "spec": "QuoteOut", "sdk": [ + { "file": "src/blindpay/resources/quotes/quotes.py", "symbol": "CreateQuoteResponse" }, + { "file": "src/blindpay/resources/quotes/quotes.py", "symbol": "Contract" }, + { "file": "src/blindpay/resources/quotes/quotes.py", "symbol": "ContractNetwork" } + ] + }, + + { "spec": "CreateTransferQuoteIn", "sdk": [{ "file": "src/blindpay/resources/transfers/transfers.py", "symbol": "CreateTransferQuoteInput" }] }, + { "spec": "CreateTransferQuoteOut", "sdk": [{ "file": "src/blindpay/resources/transfers/transfers.py", "symbol": "CreateTransferQuoteResponse" }] }, + { "spec": "CreateTransferIn", "sdk": [{ "file": "src/blindpay/resources/transfers/transfers.py", "symbol": "CreateTransferInput" }] }, + { "spec": "CreateTransferOut", "sdk": [{ "file": "src/blindpay/resources/transfers/transfers.py", "symbol": "Transfer" }] }, + { "spec": "TransferOut", "sdk": [{ "file": "src/blindpay/resources/transfers/transfers.py", "symbol": "Transfer" }] }, + + { "spec": "CreateVirtualAccountIn", "sdk": [{ "file": "src/blindpay/resources/virtual_accounts/virtual_accounts.py", "symbol": "CreateVirtualAccountInput" }] }, + { "spec": "VirtualAccountOut", "sdk": [{ "file": "src/blindpay/resources/virtual_accounts/virtual_accounts.py", "symbol": "VirtualAccount" }] }, + { "spec": "UpdateVirtualAccountIn", "sdk": [{ "file": "src/blindpay/resources/virtual_accounts/virtual_accounts.py", "symbol": "UpdateVirtualAccountInput" }] }, + + { "spec": "CreateWalletIn", "sdk": [{ "file": "src/blindpay/resources/custodial_wallets/custodial_wallets.py", "symbol": "CreateCustodialWalletInput" }] }, + { "spec": "WalletOut", "sdk": [{ "file": "src/blindpay/resources/custodial_wallets/custodial_wallets.py", "symbol": "CustodialWallet" }] }, + { "spec": "WalletBalanceOut", "sdk": [{ "file": "src/blindpay/resources/custodial_wallets/custodial_wallets.py", "symbol": "CustodialWalletBalance" }] }, + { "spec": "WalletTokenOut", "sdk": [{ "file": "src/blindpay/resources/custodial_wallets/custodial_wallets.py", "symbol": "CustodialWalletBalanceToken" }] }, + + { "spec": "OfframpWallet", "sdk": [ + { "file": "src/blindpay/resources/bank_accounts/bank_accounts.py", "symbol": "OfframpWallet" }, + { "file": "src/blindpay/resources/wallets/offramp.py", "symbol": "OfframpWallet" } + ], + "note": "pre-existing duplicate modeling: two separate TypedDicts with the same name and shape in two files (survey irregularity, out of scope for this project); both listed" + }, + + { "spec": "WebhookEndpointIn", "sdk": [{ "file": "src/blindpay/resources/webhooks/webhooks.py", "symbol": "CreateWebhookEndpointInput" }] }, + { "spec": "WebhookEndpointOut", "sdk": [{ "file": "src/blindpay/resources/webhooks/webhooks.py", "symbol": "CreateWebhookEndpointResponse" }] }, + { "spec": "WebhookEndpoint", "sdk": [{ "file": "src/blindpay/resources/webhooks/webhooks.py", "symbol": "WebhookEndpoint" }] }, + { "spec": "PortalAccessOut", "sdk": [{ "file": "src/blindpay/resources/webhooks/webhooks.py", "symbol": "GetPortalAccessUrlResponse" }] }, + + { "spec": "InitiateTosIn", "sdk": [{ "file": "src/blindpay/resources/terms_of_service/terms_of_service.py", "symbol": "InitiateInput" }] }, + { "spec": "InitiateTosOut", "sdk": [{ "file": "src/blindpay/resources/terms_of_service/terms_of_service.py", "symbol": "InitiateResponse" }] }, + + { "spec": "UpdateInstanceIn", "sdk": [{ "file": "src/blindpay/resources/instances/instances.py", "symbol": "UpdateInstanceInput" }] }, + { "spec": "UpdateInstanceMemberIn", "sdk": [{ "file": "src/blindpay/resources/instances/instances.py", "symbol": "UpdateInstanceMemberRoleInput" }], + "note": "UpdateInstanceMemberRoleInput is dead code per allowlist.json (update_member_role takes member_id/role as loose args); mapped anyway so drift stays visible" }, + { "spec": "MigrateInstanceOwnershipIn", "sdk": [ + { "file": "src/blindpay/resources/instances/instances.py", "symbol": "MigrateInstanceOwnershipInput" }, + { "file": "src/blindpay/resources/ownership/ownership.py", "symbol": "MigrateInstanceOwnershipInput" } + ], + "note": "pre-existing duplicate: instances.py and ownership.py both declare this (survey irregularity #4); both listed" + }, + { "spec": "Success", "sdk": [ + { "file": "src/blindpay/resources/instances/instances.py", "symbol": "MigrateInstanceOwnershipResponse" }, + { "file": "src/blindpay/resources/ownership/ownership.py", "symbol": "MigrateInstanceOwnershipResponse" } + ] + }, + + { "spec": "FeeOptions", "sdk": [{ "file": "src/blindpay/resources/fees/fees.py", "symbol": "FeeOptions" }] }, + { "spec": "GetFeesOut", "sdk": [{ "file": "src/blindpay/resources/fees/fees.py", "symbol": "FeesResponse" }] }, + + { "spec": "UploadIn", "sdk": [{ "file": "src/blindpay/resources/upload/upload.py", "symbol": "UploadInput" }] }, + { "spec": "UploadOut", "sdk": [{ "file": "src/blindpay/resources/upload/upload.py", "symbol": "UploadResponse" }] }, + + { "spec": ["PayoutOut", "PayoutOnEvmOut", "PayoutNewWebhookOut", "PayoutCompleteWebhookOut", "PayoutUpdateWebhookOut", "PayoutPartnerFeeWebhookOut"], + "specPath": "tracking_payment", + "sdk": [{ "file": "src/blindpay/types.py", "symbol": "TrackingPayment" }], + "note": "inline sub-object duplicated across 6 payout-side schemas (never $ref'd, no shared spec component); SDK models one shared TypedDict used for both payout and payin. Payout wire shape has 20 properties, SDK models 6 -- see unmodeled.json" + }, + { "spec": ["PayoutOut", "PayoutOnEvmOut", "PayoutNewWebhookOut", "PayoutCompleteWebhookOut", "PayoutUpdateWebhookOut", "PayoutPartnerFeeWebhookOut"], + "specPath": "tracking_transaction", + "sdk": [{ "file": "src/blindpay/types.py", "symbol": "TrackingTransaction" }] + }, + { "spec": ["PayoutOut", "PayoutOnEvmOut", "PayoutNewWebhookOut", "PayoutCompleteWebhookOut", "PayoutUpdateWebhookOut", "PayoutPartnerFeeWebhookOut"], + "specPath": "tracking_complete", + "sdk": [{ "file": "src/blindpay/types.py", "symbol": "TrackingComplete" }] + }, + { "spec": ["PayoutOut", "PayoutOnEvmOut", "PayoutNewWebhookOut", "PayoutCompleteWebhookOut", "PayoutUpdateWebhookOut", "PayoutPartnerFeeWebhookOut"], + "specPath": "tracking_liquidity", + "sdk": [{ "file": "src/blindpay/types.py", "symbol": "TrackingLiquidity" }], + "note": "no gaps: SDK's 5-field TrackingLiquidity already matches this sub-object exactly" + }, + { "spec": ["PayinOut", "CreatePayinOut", "PayinNewWebhookOut", "PayinCompleteWebhookOut", "PayinUpdateWebhookOut", "PayinPartnerFeeWebhookOut"], + "specPath": "tracking_payment", + "sdk": [{ "file": "src/blindpay/types.py", "symbol": "TrackingPayment" }], + "note": "payin-side tracking_payment shape (6 properties) differs entirely from payout-side (20 properties) despite sharing the same SDK TypedDict; see unmodeled.json" + }, + { "spec": ["PayinOut", "CreatePayinOut", "PayinNewWebhookOut", "PayinCompleteWebhookOut", "PayinUpdateWebhookOut", "PayinPartnerFeeWebhookOut"], + "specPath": "tracking_transaction", + "sdk": [{ "file": "src/blindpay/types.py", "symbol": "TrackingTransaction" }], + "note": "payin-side wire shape has ~15 properties; SDK's generic 4-field TrackingTransaction covers only step/status/transaction_hash/completed_at. A fuller GetPayinTrackingTransaction TypedDict already exists in payins.py but is dead code (never referenced) -- see unmodeled.json" + }, + { "spec": ["PayinOut", "CreatePayinOut", "PayinNewWebhookOut", "PayinCompleteWebhookOut", "PayinUpdateWebhookOut", "PayinPartnerFeeWebhookOut"], + "specPath": "tracking_complete", + "sdk": [{ "file": "src/blindpay/types.py", "symbol": "TrackingComplete" }], + "note": "no gaps: payin-side tracking_complete (3 properties) is a subset of the SDK's 4-field TrackingComplete" + } + ], + "ignore": { + "schemas": [ + { + "schema": "LedgerOperation", + "reason": "unreferenced by any public operation (0 $ref anywhere in the filtered public spec) -- unreachable orphan, not modeled by any SDK. This is where funding_end_to_end_id and payer_tax_id live; both stay unmodeled because the schema itself is unreachable." + }, + { + "schema": "Rfi", + "reason": "the RFI (request-for-information) resource family is entirely unmodeled by this SDK: no resource file, no client method. GET /v1/instances/{instance_id}/rfi and GET .../customers/{customer_id}/rfi are real, reachable operations with zero SDK coverage. Adding it is additive, non-breaking, human-scoped work (Phase C per the design doc), not a field-level patch." + }, + { "schema": "RfiField", "reason": "nested under Rfi/InstanceRfi/RfiSection; same Rfi-family gap as Rfi." }, + { "schema": "RfiSection", "reason": "nested under Rfi/InstanceRfi; same Rfi-family gap as Rfi." }, + { "schema": "InstanceRfi", "reason": "instance-level counterpart of Rfi (GET /v1/instances/{instance_id}/rfi); same Rfi-family gap." }, + { + "schema": "CreateRfiBody", + "reason": "unreferenced by any public operation (0 $ref); the public POST .../rfi endpoints take an untyped object body, not this schema. Orphan, and also part of the unmodeled Rfi family." + }, + { + "schema": "CreateInstanceRfiBody", + "reason": "unreferenced by any public operation (0 $ref); same as CreateRfiBody -- orphan, and part of the unmodeled Rfi family." + }, + { + "schema": "UploadAnalyzeIn", + "reason": "reachable (POST /v1/upload/analyze) but the SDK's UploadAnalyzeInput/analyze() predates the current spec shape: `type` is required by the API and never sent by the SDK, so calling analyze() as currently typed does not produce a valid request. A known, real, broken integration needing dedicated human work (Phase C), not an incremental field-add." + }, + { + "schema": "UploadAnalyzeOut", + "reason": "response counterpart of UploadAnalyzeIn; same broken/incomplete-integration reasoning." + }, + { + "schema": "Error", + "reason": "the SDK does not model the API's error envelope as a typed object; BlindpayErrorResponse.error is a separate, much simpler ErrorResponse ({message: str}) shape unrelated to this schema." + }, + { + "schema": "AdditionalInfoItem", + "reason": "item shape of CustomerOut.additional_info, which is itself unmodeled by any of the 3 KYC variants (tracked in unmodeled.json); nothing to reconcile until additional_info itself is modeled." + }, + { + "schema": "BankAccountWebhookOut", + "reason": "webhook payload; the SDK does not parse webhook payloads at all, only verify_webhook_signature() (HMAC check). Callers deserialize the body themselves." + }, + { "schema": "BlockchainWalletWebhookOut", "reason": "webhook payload; same as BankAccountWebhookOut above." }, + { "schema": "CustomerNewWebhookOut", "reason": "webhook payload; same as BankAccountWebhookOut above." }, + { "schema": "CustomerUpdateWebhookOut", "reason": "webhook payload; same as BankAccountWebhookOut above." }, + { "schema": "CustomerDeleteWebhookOut", "reason": "webhook payload; same as BankAccountWebhookOut above." }, + { "schema": "LimitIncreaseNewWebhookOut", "reason": "webhook payload; same as BankAccountWebhookOut above." }, + { "schema": "LimitIncreaseUpdateWebhookOut", "reason": "webhook payload; same as BankAccountWebhookOut above." }, + { "schema": "TosAcceptWebhookOut", "reason": "webhook payload; same as BankAccountWebhookOut above." }, + { "schema": "WalletInboundSchemaOut", "reason": "webhook payload; same as BankAccountWebhookOut above." }, + { + "schema": "PayoutNewWebhookOut", + "reason": "webhook envelope; same as BankAccountWebhookOut above for its own top-level fields (type, timestamp, key, ...). Its nested tracking_payment/tracking_transaction/tracking_complete/tracking_liquidity sub-objects ARE separately reconciled via the specPath entries in `types` above, since those are reused verbatim from the modeled GET/POST payout responses." + }, + { "schema": "PayoutCompleteWebhookOut", "reason": "webhook envelope; same split treatment as PayoutNewWebhookOut above." }, + { "schema": "PayoutUpdateWebhookOut", "reason": "webhook envelope; same split treatment as PayoutNewWebhookOut above." }, + { "schema": "PayoutPartnerFeeWebhookOut", "reason": "webhook envelope; same split treatment as PayoutNewWebhookOut above." }, + { + "schema": "PayinNewWebhookOut", + "reason": "webhook envelope; same split treatment as PayoutNewWebhookOut above, but for the payin-side tracking_payment/tracking_transaction/tracking_complete specPath entries." + }, + { "schema": "PayinCompleteWebhookOut", "reason": "webhook envelope; same split treatment as PayinNewWebhookOut above." }, + { "schema": "PayinUpdateWebhookOut", "reason": "webhook envelope; same split treatment as PayinNewWebhookOut above." }, + { "schema": "PayinPartnerFeeWebhookOut", "reason": "webhook envelope; same split treatment as PayinNewWebhookOut above." } + ] + } +} diff --git a/.api-sync/sync.py b/.api-sync/sync.py new file mode 100644 index 0000000..481ded7 --- /dev/null +++ b/.api-sync/sync.py @@ -0,0 +1,998 @@ +#!/usr/bin/env python3 +"""Deterministic spec -> SDK patcher. + +Run locally with: + python3 .api-sync/sync.py --check + python3 .api-sync/sync.py --apply [--spec PATH] [--report PATH] + python3 .api-sync/sync.py --validate-map + python3 .api-sync/sync.py --coverage [--spec PATH] + +No third-party dependencies. Mirrors check_contract.py's style: ast for reading, +precise text splicing for writing. + +Design summary (see .api-sync/spec-map.json and .api-sync/unmodeled.json): + +- .api-sync/spec-map.json is the curated, hand-verified mapping from spec + constructs (enums, schemas, and named nested sub-objects via `specPath`) to + SDK symbols. Schemas outside the transitive $ref closure of paths/webhooks + are unreachable and are skipped by construction (never considered "unmapped" + or "coverage gaps" -- they simply do not exist for this tool's purposes). +- .api-sync/unmodeled.json is the honest ledger of currently-absent spec + properties and enum-member/value divergences on schemas/enums this SDK DOES + map, each with a reason and an owner. Entries there suppress both --check + failures and --apply auto-additions for that exact (schema[, path], field) + or (enum, missing value) -- they are a deliberate "not yet, and here is why" + record, not a silent skip. + +--check reconciles the current SDK source against .api-sync/spec-snapshot.json +(the last-synced baseline) and fails loudly on anything unaccounted for. It +never reads --spec. + +--apply reconciles against --spec (default .api-sync/spec-current.json, the +newly delivered spec), computes an old(snapshot)-vs-new(--spec) diff purely to +detect removals / required-ness changes / type changes / new operations / new +schemas (state alone cannot tell you these), applies whatever is APPLICABLE, +hard-fails on anything NEEDS_HUMAN, and on success refreshes spec-snapshot.json +to equal --spec. +""" + +from __future__ import annotations + +import argparse +import ast +import json +import sys +from dataclasses import dataclass, field +from pathlib import Path +from typing import Any, Optional + +ROOT = Path(__file__).resolve().parent.parent +API_SYNC = Path(__file__).resolve().parent +SRC_ROOT = ROOT / "src" / "blindpay" + +SNAPSHOT_PATH = API_SYNC / "spec-snapshot.json" +DEFAULT_SPEC_PATH = API_SYNC / "spec-current.json" +MAP_PATH = API_SYNC / "spec-map.json" +UNMODELED_PATH = API_SYNC / "unmodeled.json" + +SCALAR_TYPE_MAP = {"string": "str", "integer": "int", "number": "float", "boolean": "bool"} + + +# --------------------------------------------------------------------------- # +# JSON loading +# --------------------------------------------------------------------------- # + + +def load_json(path: Path) -> Any: + with path.open() as f: + return json.load(f) + + +def load_map() -> dict: + return load_json(MAP_PATH) + + +def load_unmodeled() -> list[dict]: + if not UNMODELED_PATH.exists(): + return [] + data = load_json(UNMODELED_PATH) + if not isinstance(data, list): + raise SystemExit(f"{UNMODELED_PATH}: expected a JSON array") + for i, e in enumerate(data): + kind = e.get("kind") + if kind == "property": + required = {"schema", "field", "reason", "owner"} + elif kind == "enum": + required = {"enum", "missing_values", "reason", "owner"} + else: + raise SystemExit(f"{UNMODELED_PATH}[{i}]: unknown or missing 'kind' (expected 'property' or 'enum')") + missing = required - e.keys() + if missing: + raise SystemExit(f"{UNMODELED_PATH}[{i}]: missing required key(s) {sorted(missing)}") + return data + + +# --------------------------------------------------------------------------- # +# Spec introspection +# --------------------------------------------------------------------------- # + + +def find_refs(node: object, out: set[str]) -> None: + if isinstance(node, dict): + r = node.get("$ref") + if isinstance(r, str) and r.startswith("#/components/schemas/"): + out.add(r.split("/")[-1]) + for v in node.values(): + find_refs(v, out) + elif isinstance(node, list): + for v in node: + find_refs(v, out) + + +def compute_reachable_schemas(spec: dict) -> set[str]: + """Transitive $ref closure from paths + webhooks. Anything outside this + set does not exist for this tool: not mappable, not a coverage gap, not + reconciled -- skipped by construction, never by a hand-maintained list.""" + schemas = spec.get("components", {}).get("schemas", {}) + roots = {"paths": spec.get("paths", {}), "webhooks": spec.get("webhooks", {})} + reachable: set[str] = set() + find_refs(roots, reachable) + changed = True + while changed: + changed = False + for name in list(reachable): + s = schemas.get(name) + if s is None: + continue + found: set[str] = set() + find_refs(s, found) + for n in found: + if n not in reachable: + reachable.add(n) + changed = True + return reachable + + +def get_schema(spec: dict, name: str) -> Optional[dict]: + return spec.get("components", {}).get("schemas", {}).get(name) + + +def resolve_path(schema_obj: dict, path: Optional[str]) -> Optional[dict]: + node = schema_obj + if not path: + return node + for part in path.split("."): + props = node.get("properties", {}) if isinstance(node, dict) else {} + node = props.get(part) + if node is None: + return None + return node + + +def get_properties(node: Optional[dict]) -> dict[str, dict]: + if not node: + return {} + return node.get("properties", {}) + + +def get_required(node: Optional[dict]) -> set[str]: + if not node: + return set() + return set(node.get("required", [])) + + +def get_enum_values(spec: dict, locator: dict) -> Optional[set[str]]: + schema_obj = get_schema(spec, locator["schema"]) + if schema_obj is None: + return None + prop = resolve_path(schema_obj, None) + prop = get_properties(prop).get(locator["property"]) + if prop is None: + return None + if locator.get("items"): + prop = prop.get("items", {}) + enum = prop.get("enum") + if enum is None: + return None + return set(enum) + + +def coarse_type(prop_schema: dict) -> tuple[Optional[str], bool]: + """Returns (single non-null JSON type or None if ambiguous/multi-type, nullable).""" + t = prop_schema.get("type") + if isinstance(t, list): + types = [x for x in t if x != "null"] + nullable = "null" in t + elif isinstance(t, str): + types = [t] + nullable = False + else: + types = [] + nullable = False + if len(types) != 1: + return None, nullable + return types[0], nullable + + +# --------------------------------------------------------------------------- # +# SDK (Python source) introspection via ast +# --------------------------------------------------------------------------- # + + +@dataclass +class ClassInfo: + file: Path + node: ast.ClassDef + source: str + bases: list[str] = field(default_factory=list) + total_false: bool = False + own_fields: dict[str, ast.AnnAssign] = field(default_factory=dict) + + +@dataclass +class SdkIndex: + # every symbol name may legitimately have more than one definition across files + # (e.g. OfframpWallet is intentionally duplicated, PaymentMethod is shadowed + # locally in payins/quotes.py) -- always disambiguate by file, never by + # "first one found". + all_classes: dict[str, list[ClassInfo]] + all_literals: dict[str, list[tuple[Path, ast.Assign, str]]] + sources: dict[Path, str] + + def find_class(self, symbol: str, file_rel: str) -> Optional[ClassInfo]: + for info in self.all_classes.get(symbol, []): + if str(info.file.relative_to(ROOT)) == file_rel: + return info + return None + + def find_literal(self, symbol: str, file_rel: str) -> Optional[tuple[Path, ast.Assign, str]]: + for entry in self.all_literals.get(symbol, []): + if str(entry[0].relative_to(ROOT)) == file_rel: + return entry + return None + + +def _base_names(node: ast.ClassDef) -> list[str]: + names = [b.id for b in node.bases if isinstance(b, ast.Name)] + names += [b.attr for b in node.bases if isinstance(b, ast.Attribute)] + return names + + +def _is_total_false(node: ast.ClassDef) -> bool: + for kw in node.keywords: + if kw.arg == "total" and isinstance(kw.value, ast.Constant) and kw.value.value is False: + return True + return False + + +def build_sdk_index(src_root: Path = SRC_ROOT) -> SdkIndex: + py_files = sorted(src_root.rglob("*.py")) + trees: dict[Path, ast.Module] = {} + sources: dict[Path, str] = {} + for f in py_files: + text = f.read_text() + sources[f] = text + trees[f] = ast.parse(text, filename=str(f)) + + known_typeddict = {"TypedDict"} + for _ in range(5): + changed = False + for tree in trees.values(): + for node in ast.walk(tree): + if not isinstance(node, ast.ClassDef) or node.name in known_typeddict: + continue + if any(b in known_typeddict for b in _base_names(node)): + known_typeddict.add(node.name) + changed = True + if not changed: + break + + all_classes: dict[str, list[ClassInfo]] = {} + for f, tree in trees.items(): + for node in ast.walk(tree): + if not (isinstance(node, ast.ClassDef) and node.name in known_typeddict): + continue + own_fields = {} + for item in node.body: + if isinstance(item, ast.AnnAssign) and isinstance(item.target, ast.Name): + own_fields[item.target.id] = item + info = ClassInfo( + file=f, + node=node, + source=sources[f], + bases=_base_names(node), + total_false=_is_total_false(node), + own_fields=own_fields, + ) + all_classes.setdefault(node.name, []).append(info) + + all_literals: dict[str, list[tuple[Path, ast.Assign, str]]] = {} + for f, tree in trees.items(): + for node in ast.walk(tree): + if not isinstance(node, ast.Assign): + continue + if len(node.targets) != 1 or not isinstance(node.targets[0], ast.Name): + continue + if not isinstance(node.value, ast.Subscript): + continue + base = node.value.value + base_name = ( + base.id if isinstance(base, ast.Name) else (base.attr if isinstance(base, ast.Attribute) else None) + ) + if base_name != "Literal": + continue + name = node.targets[0].id + all_literals.setdefault(name, []).append((f, node, sources[f])) + + return SdkIndex(all_classes=all_classes, all_literals=all_literals, sources=sources) + + +def _pick_unambiguous(file_rel: Optional[str], candidates: list) -> Optional[Any]: + if file_rel is not None: + for c in candidates: + if str(c[0].relative_to(ROOT) if isinstance(c, tuple) else c.file.relative_to(ROOT)) == file_rel: + return c + return None + return candidates[0] if len(candidates) == 1 else None + + +def resolve_typeddict_fields( + symbol: str, file_rel: Optional[str], index: SdkIndex, seen: Optional[set[str]] = None +) -> set[str]: + """Full field set, transitively resolving locally-defined TypedDict base classes + (the `_XRequired` / total=False two-part pattern). `file_rel` disambiguates + symbols legitimately defined in more than one file (e.g. OfframpWallet).""" + seen = seen or set() + key = f"{file_rel}::{symbol}" + if key in seen: + return set() + seen.add(key) + info = _pick_unambiguous(file_rel, index.all_classes.get(symbol, [])) + if info is None: + return set() + fields = set(info.own_fields.keys()) + for base in info.bases: + # base classes are always local to the same file + fields |= resolve_typeddict_fields(base, str(info.file.relative_to(ROOT)), index, seen) + return fields + + +def literal_values(symbol: str, file_rel: str, index: SdkIndex) -> set[str]: + entry = index.find_literal(symbol, file_rel) + if entry is None: + return set() + _, node, _ = entry + values: set[str] = set() + for const in ast.walk(node.value): + if isinstance(const, ast.Constant) and isinstance(const.value, str): + values.add(const.value) + return values + + +# --------------------------------------------------------------------------- # +# Map validity +# --------------------------------------------------------------------------- # + + +def validate_map(map_data: dict, index: SdkIndex) -> list[str]: + errors: list[str] = [] + + def check_sdk_site(site: dict, ctx: str) -> None: + rel = site["file"] + symbol = site["symbol"] + f = ROOT / rel + if not f.exists(): + errors.append(f"{ctx}: file not found: {rel}") + return + class_candidates = index.all_classes.get(symbol, []) + literal_candidates = index.all_literals.get(symbol, []) + if not class_candidates and not literal_candidates: + errors.append(f"{ctx}: symbol `{symbol}` not found anywhere under src/blindpay") + return + if index.find_class(symbol, rel) is None and index.find_literal(symbol, rel) is None: + found_in = sorted( + {str(c.file.relative_to(ROOT)) for c in class_candidates} + | {str(c[0].relative_to(ROOT)) for c in literal_candidates} + ) + errors.append(f"{ctx}: symbol `{symbol}` not found in {rel} (found in {found_in})") + + for i, e in enumerate(map_data.get("enums", [])): + ctx = f"enums[{i}] ({e['spec']['schema']}.{e['spec']['property']})" + check_sdk_site(e["sdk"], ctx) + + for i, e in enumerate(map_data.get("types", [])): + spec = e["spec"] + names = spec if isinstance(spec, list) else [spec] + ctx_base = "/".join(names) + (f"#{e['specPath']}" if e.get("specPath") else "") + for j, site in enumerate(e["sdk"]): + check_sdk_site(site, f"types[{i}] ({ctx_base})[{j}]") + + return errors + + +# --------------------------------------------------------------------------- # +# Reconciliation (state-based, against a single spec) +# --------------------------------------------------------------------------- # + + +@dataclass +class EnumGap: + symbol: str + file: str + locators: list[dict] + missing: list[str] # unaccounted (not in unmodeled.json) + + +@dataclass +class PropertyGap: + schema_names: list[str] + path: Optional[str] + sdk_sites: list[dict] + missing: dict[str, dict] # field name -> its spec property schema + + +def unmodeled_enum_allowed(unmodeled: list[dict], enum_symbol: str) -> set[str]: + allowed: set[str] = set() + for e in unmodeled: + if e["kind"] == "enum" and e["enum"] == enum_symbol: + allowed.update(e["missing_values"]) + return allowed + + +def unmodeled_property_allowed(unmodeled: list[dict], schema_names: list[str], path: Optional[str]) -> set[str]: + allowed: set[str] = set() + for e in unmodeled: + if e["kind"] != "property": + continue + if e["schema"] not in schema_names: + continue + if e.get("path") != path: + continue + allowed.add(e["field"]) + return allowed + + +def reconcile_enums(spec: dict, map_data: dict, unmodeled: list[dict], index: SdkIndex) -> list[EnumGap]: + gaps: list[EnumGap] = [] + # group by (file, symbol): the same symbol name can legitimately denote two + # different Literals in two different files (e.g. PaymentMethod), and must + # never be merged. + by_site: dict[tuple[str, str], list[dict]] = {} + for e in map_data.get("enums", []): + key = (e["sdk"]["file"], e["sdk"]["symbol"]) + by_site.setdefault(key, []).append(e) + + for (file_rel, symbol), entries in sorted(by_site.items()): + spec_members: set[str] = set() + for e in entries: + vals = get_enum_values(spec, e["spec"]) + if vals: + spec_members |= vals + sdk_members = literal_values(symbol, file_rel, index) + missing = spec_members - sdk_members + allowed = unmodeled_enum_allowed(unmodeled, symbol) + unaccounted = sorted(missing - allowed) + if unaccounted: + gaps.append( + EnumGap(symbol=symbol, file=file_rel, locators=[e["spec"] for e in entries], missing=unaccounted) + ) + return gaps + + +def reconcile_types(spec: dict, map_data: dict, unmodeled: list[dict], index: SdkIndex) -> list[PropertyGap]: + gaps: list[PropertyGap] = [] + reachable = compute_reachable_schemas(spec) + + for e in map_data.get("types", []): + spec_names = e["spec"] if isinstance(e["spec"], list) else [e["spec"]] + path = e.get("specPath") + spec_props: dict[str, dict] = {} + any_reachable = False + for name in spec_names: + schema_obj = get_schema(spec, name) + if schema_obj is None: + continue + if name not in reachable: + continue + any_reachable = True + node = resolve_path(schema_obj, path) + spec_props.update(get_properties(node)) + if not any_reachable: + continue + + sdk_fields: set[str] = set() + for site in e["sdk"]: + sdk_fields |= resolve_typeddict_fields(site["symbol"], site["file"], index) + + missing_names = set(spec_props.keys()) - sdk_fields + allowed = unmodeled_property_allowed(unmodeled, spec_names, path) + unaccounted = sorted(missing_names - allowed) + if unaccounted: + gaps.append( + PropertyGap( + schema_names=spec_names, + path=path, + sdk_sites=e["sdk"], + missing={n: spec_props[n] for n in unaccounted}, + ) + ) + return gaps + + +# --------------------------------------------------------------------------- # +# Old-vs-new diff (apply-only): removals, required/type changes, new operations/schemas +# --------------------------------------------------------------------------- # + + +@dataclass +class NeedsHuman: + kind: str + detail: str + + +def diff_removals_and_changes(old_spec: dict, new_spec: dict, map_data: dict, index: SdkIndex) -> list[NeedsHuman]: + problems: list[NeedsHuman] = [] + + # enums: sdk-modeled member disappearing from the new spec + by_site: dict[tuple[str, str], list[dict]] = {} + for e in map_data.get("enums", []): + by_site.setdefault((e["sdk"]["file"], e["sdk"]["symbol"]), []).append(e) + for (file_rel, symbol), entries in sorted(by_site.items()): + sdk_members = literal_values(symbol, file_rel, index) + new_members: set[str] = set() + for e in entries: + vals = get_enum_values(new_spec, e["spec"]) + if vals: + new_members |= vals + old_members: set[str] = set() + for e in entries: + vals = get_enum_values(old_spec, e["spec"]) + if vals: + old_members |= vals + removed = (sdk_members & old_members) - new_members + if removed: + problems.append(NeedsHuman("enum_member_removed", f"{symbol}: {sorted(removed)} no longer in the spec")) + + old_reachable = compute_reachable_schemas(old_spec) + new_reachable = compute_reachable_schemas(new_spec) + + for e in map_data.get("types", []): + spec_names = e["spec"] if isinstance(e["spec"], list) else [e["spec"]] + path = e.get("specPath") + sdk_fields: set[str] = set() + for site in e["sdk"]: + sdk_fields |= resolve_typeddict_fields(site["symbol"], site["file"], index) + + for name in spec_names: + if name in old_reachable and name not in new_reachable: + problems.append(NeedsHuman("schema_removed", f"{name} no longer reachable in the new spec")) + continue + old_obj = get_schema(old_spec, name) + new_obj = get_schema(new_spec, name) + if old_obj is None or new_obj is None: + continue + old_node = resolve_path(old_obj, path) + new_node = resolve_path(new_obj, path) + old_props = get_properties(old_node) + new_props = get_properties(new_node) + old_required = get_required(old_node) + new_required = get_required(new_node) + + removed_fields = (sdk_fields & set(old_props.keys())) - set(new_props.keys()) + for f in sorted(removed_fields): + problems.append( + NeedsHuman( + "property_removed", + f"{name}{'/' + path if path else ''}.{f} modeled by the SDK, no longer in the spec", + ) + ) + + for f in sorted(sdk_fields & set(old_props.keys()) & set(new_props.keys())): + was_required = f in old_required + is_required = f in new_required + if was_required != is_required: + problems.append( + NeedsHuman( + "required_change", + f"{name}{'/' + path if path else ''}.{f} required-ness changed " + f"({was_required} -> {is_required})", + ) + ) + continue + old_type, _ = coarse_type(old_props[f]) + new_type, _ = coarse_type(new_props[f]) + if old_type is not None and new_type is not None and old_type != new_type: + problems.append( + NeedsHuman( + "type_change", + f"{name}{'/' + path if path else ''}.{f} type changed ({old_type} -> {new_type})", + ) + ) + + # new operations (paths present in new, absent from old) + old_paths = set(old_spec.get("paths", {}).keys()) + new_paths = set(new_spec.get("paths", {}).keys()) + for p in sorted(new_paths - old_paths): + problems.append(NeedsHuman("new_operation", f"new path: {p}")) + + # new reachable schemas not present before + mapped_or_ignored: set[str] = set() + for e in map_data.get("types", []): + spec_names = e["spec"] if isinstance(e["spec"], list) else [e["spec"]] + mapped_or_ignored.update(spec_names) + mapped_or_ignored.update(x["schema"] for x in map_data.get("ignore", {}).get("schemas", [])) + for name in sorted(new_reachable - old_reachable): + if name not in mapped_or_ignored: + problems.append(NeedsHuman("new_schema", f"new reachable schema: {name}")) + + # properties added on an entirely unmapped (and not ignored) reachable schema + schemas = new_spec.get("components", {}).get("schemas", {}) + for name in sorted(new_reachable): + if name in mapped_or_ignored: + continue + old_obj = get_schema(old_spec, name) + new_obj = schemas.get(name) + old_props = set(get_properties(old_obj).keys()) if old_obj else set() + new_props = set(get_properties(new_obj).keys()) + added = new_props - old_props + if added: + problems.append( + NeedsHuman("property_on_unmapped_schema", f"{name}: {sorted(added)} (schema has no spec-map entry)") + ) + + return problems + + +# --------------------------------------------------------------------------- # +# Applying changes (text splicing) +# --------------------------------------------------------------------------- # + + +@dataclass +class AppliedChange: + kind: str # "enum" | "property" + file: str + symbol: str + detail: str + + +def splice_literal_add_members(source: str, node: ast.Assign, new_values: list[str]) -> str: + lines = source.splitlines(keepends=True) + subscript = node.value + assert isinstance(subscript, ast.Subscript) + sl = subscript.slice + elts = sl.elts if isinstance(sl, ast.Tuple) else [sl] + last = elts[-1] + + close_lineno = subscript.end_lineno + last_end_line = last.end_lineno + last_end_col = last.end_col_offset + + if close_lineno == last_end_line: + line = lines[last_end_line - 1] + insertion = "".join(f', "{v}"' for v in new_values) + lines[last_end_line - 1] = line[:last_end_col] + insertion + line[last_end_col:] + else: + last_line = lines[last_end_line - 1] + stripped_no_nl = last_line[:-1] if last_line.endswith("\n") else last_line + indent = last_line[: len(last_line) - len(last_line.lstrip())] + if not stripped_no_nl.rstrip().endswith(","): + nl = "\n" if last_line.endswith("\n") else "" + lines[last_end_line - 1] = stripped_no_nl + "," + nl + insert_lines = [f'{indent}"{v}",\n' for v in new_values] + lines[last_end_line:last_end_line] = insert_lines + return "".join(lines) + + +def apply_enum_change(gap: EnumGap, index: SdkIndex) -> AppliedChange: + entry = index.find_literal(gap.symbol, gap.file) + if entry is None: + raise SystemExit(f"internal error: lost track of literal {gap.symbol} in {gap.file}") + file_path, node, source = entry + new_source = splice_literal_add_members(source, node, sorted(gap.missing)) + file_path.write_text(new_source) + return AppliedChange( + kind="enum", + file=str(file_path.relative_to(ROOT)), + symbol=gap.symbol, + detail=f"added member(s) {sorted(gap.missing)}", + ) + + +def infer_annotation(prop_schema: dict) -> Optional[str]: + if "enum" in prop_schema: + return None # would need a Literal/mapped enum symbol; not auto-resolved + if prop_schema.get("type") == "array" or ( + isinstance(prop_schema.get("type"), list) and "array" in prop_schema["type"] + ): + return None + t0, _nullable = coarse_type(prop_schema) + if t0 is None: + return None + return SCALAR_TYPE_MAP.get(t0) + + +def class_uses_notrequired(info: ClassInfo) -> bool: + for item in info.own_fields.values(): + seg = ast.get_source_segment(info.source, item.annotation) or "" + if seg.startswith("NotRequired["): + return True + return False + + +def choose_field_annotation(info: ClassInfo, python_type: str, nullable: bool) -> str: + if info.total_false: + return f"Optional[{python_type}]" if nullable else python_type + if class_uses_notrequired(info): + inner = f"Optional[{python_type}]" if nullable else python_type + return f"NotRequired[{inner}]" + return f"Optional[{python_type}]" + + +def splice_typeddict_add_field(source: str, class_node: ast.ClassDef, field_name: str, annotation_text: str) -> str: + lines = source.splitlines(keepends=True) + last_stmt = class_node.body[-1] + last_line_no = last_stmt.end_lineno + last_line = lines[last_line_no - 1] + indent = last_line[: len(last_line) - len(last_line.lstrip())] + new_line = f"{indent}{field_name}: {annotation_text}\n" + lines.insert(last_line_no, new_line) + return "".join(lines) + + +def apply_property_change(gap: PropertyGap, index: SdkIndex) -> tuple[list[AppliedChange], list[NeedsHuman]]: + applied: list[AppliedChange] = [] + needs_human: list[NeedsHuman] = [] + + if len(gap.sdk_sites) > 1: + ctx = "/".join(gap.schema_names) + (f"#{gap.path}" if gap.path else "") + needs_human.append( + NeedsHuman( + "fan_out_target_ambiguous", + f"{ctx}: new propert{'y' if len(gap.missing) == 1 else 'ies'} {sorted(gap.missing)} on a " + f"{len(gap.sdk_sites)}-variant fan-out; a human must decide which variant(s) legitimately " + f"carry it (or opt the map entry into uniform fan-out application).", + ) + ) + return applied, needs_human + + site = gap.sdk_sites[0] + symbol = site["symbol"] + info = index.find_class(symbol, site["file"]) + if info is None: + needs_human.append(NeedsHuman("unresolved_anchor", f"{symbol} not found in {site['file']}")) + return applied, needs_human + + for name in sorted(gap.missing): + prop_schema = gap.missing[name] + python_type = infer_annotation(prop_schema) + if python_type is None: + ctx = "/".join(gap.schema_names) + (f"#{gap.path}" if gap.path else "") + needs_human.append( + NeedsHuman( + "type_unresolvable", + f"{ctx}.{name}: cannot safely infer a Python type from the spec schema for {symbol}", + ) + ) + continue + _, nullable = coarse_type(prop_schema) + annotation = choose_field_annotation(info, python_type, nullable) + new_source = splice_typeddict_add_field(info.source, info.node, name, annotation) + info.file.write_text(new_source) + # re-read so subsequent insertions into the same class see updated positions + info.source = new_source + info.node = _reparse_class(info.file, symbol) + applied.append( + AppliedChange( + kind="property", + file=str(info.file.relative_to(ROOT)), + symbol=symbol, + detail=f"added field `{name}: {annotation}`", + ) + ) + return applied, needs_human + + +def _reparse_class(file_path: Path, symbol: str) -> ast.ClassDef: + tree = ast.parse(file_path.read_text(), filename=str(file_path)) + for node in ast.walk(tree): + if isinstance(node, ast.ClassDef) and node.name == symbol: + return node + raise SystemExit(f"internal error: lost track of class {symbol} in {file_path} after edit") + + +# --------------------------------------------------------------------------- # +# Coverage report (non-blocking) +# --------------------------------------------------------------------------- # + + +def coverage_report(spec: dict, map_data: dict) -> list[dict]: + reachable = compute_reachable_schemas(spec) + ignore_reasons = {e["schema"]: e["reason"] for e in map_data.get("ignore", {}).get("schemas", [])} + mapped_names: set[str] = set() + for e in map_data.get("types", []): + spec_names = e["spec"] if isinstance(e["spec"], list) else [e["spec"]] + mapped_names.update(spec_names) + + gaps = [] + for p, item in sorted(spec.get("paths", {}).items()): + if not isinstance(item, dict): + continue + for method, op in sorted(item.items()): + if method not in ("get", "post", "put", "patch", "delete") or not isinstance(op, dict): + continue + # only the request body and SUCCESS (2xx) responses are relevant here; + # 4xx/5xx responses almost all reference the shared Error schema and + # would otherwise drown every operation in a false "gap". + names: set[str] = set() + rb = op.get("requestBody", {}).get("content", {}) + for c in rb.values(): + r = c.get("schema", {}).get("$ref") + if r: + names.add(r.split("/")[-1]) + responses = op.get("responses", {}) + for status, resp in responses.items(): + if not isinstance(resp, dict) or not status.startswith("2"): + continue + r = resp.get("content", {}).get("application/json", {}).get("schema", {}).get("$ref") + if r: + names.add(r.split("/")[-1]) + names &= reachable + ignored = sorted(n for n in names if n in ignore_reasons) + if ignored and not (names - set(ignore_reasons)): + gaps.append( + { + "method": method.upper(), + "path": p, + "schemas": ignored, + "reason": ignore_reasons[ignored[0]], + } + ) + return gaps + + +# --------------------------------------------------------------------------- # +# CLI +# --------------------------------------------------------------------------- # + + +def cmd_validate_map() -> int: + index = build_sdk_index(SRC_ROOT) + map_data = load_map() + errors = validate_map(map_data, index) + if errors: + print("Map validity -- FAILED:") + for e in sorted(errors): + print(f" {e}") + return 1 + print("Map validity: OK") + return 0 + + +def cmd_check(report_path: Optional[Path]) -> int: + index = build_sdk_index(SRC_ROOT) + map_data = load_map() + unmodeled = load_unmodeled() + + map_errors = validate_map(map_data, index) + spec = load_json(SNAPSHOT_PATH) + enum_gaps = reconcile_enums(spec, map_data, unmodeled, index) if not map_errors else [] + prop_gaps = reconcile_types(spec, map_data, unmodeled, index) if not map_errors else [] + + report = { + "mode": "check", + "map_errors": sorted(map_errors), + "enum_gaps": [{"symbol": g.symbol, "file": g.file, "missing": g.missing} for g in enum_gaps], + "property_gaps": [ + {"schema": g.schema_names, "path": g.path, "missing": sorted(g.missing.keys())} for g in prop_gaps + ], + } + if report_path: + report_path.write_text(json.dumps(report, indent=2, sort_keys=True) + "\n") + + if not (map_errors or enum_gaps or prop_gaps): + return 0 + + if map_errors: + print("spec-map.json validity -- FAILED:") + for e in sorted(map_errors): + print(f" {e}") + for g in enum_gaps: + print( + f"PENDING DRIFT (enum): {g.symbol} in {g.file} is missing {g.missing}; add to the Literal " + f"or record in .api-sync/unmodeled.json (kind=enum) with a reason and owner." + ) + for g in prop_gaps: + ctx = "/".join(g.schema_names) + (f"#{g.path}" if g.path else "") + print( + f"PENDING DRIFT (property): {ctx} is missing {sorted(g.missing.keys())} on " + f"{[s['symbol'] for s in g.sdk_sites]}; add the field(s) or record in " + f".api-sync/unmodeled.json (kind=property) with a reason and owner." + ) + return 1 + + +def cmd_apply(spec_path: Path, report_path: Optional[Path]) -> int: + index = build_sdk_index(SRC_ROOT) + map_data = load_map() + unmodeled = load_unmodeled() + + map_errors = validate_map(map_data, index) + if map_errors: + print("spec-map.json validity -- FAILED, refusing to apply:") + for e in sorted(map_errors): + print(f" {e}") + return 1 + + old_spec = load_json(SNAPSHOT_PATH) + new_spec = load_json(spec_path) + + needs_human = diff_removals_and_changes(old_spec, new_spec, map_data, index) + + enum_gaps = reconcile_enums(new_spec, map_data, unmodeled, index) + prop_gaps = reconcile_types(new_spec, map_data, unmodeled, index) + + applied: list[AppliedChange] = [] + + if not needs_human: + for g in sorted(enum_gaps, key=lambda g: g.symbol): + applied.append(apply_enum_change(g, index)) + # re-check property gaps against a fresh index is unnecessary: enum edits never touch TypedDicts + for g in sorted(prop_gaps, key=lambda g: ("/".join(g.schema_names), g.path or "")): + a, nh = apply_property_change(g, index) + applied.extend(a) + needs_human.extend(nh) + + bump: Optional[str] = None + if not needs_human: + if any(a.kind == "enum" for a in applied): + bump = "minor" + elif applied: + bump = "patch" + + report = { + "mode": "apply", + "spec": str(spec_path), + "applied": [{"kind": a.kind, "file": a.file, "symbol": a.symbol, "detail": a.detail} for a in applied], + "needs_human": [ + {"kind": n.kind, "detail": n.detail} for n in sorted(needs_human, key=lambda n: (n.kind, n.detail)) + ], + "bump": bump, + "coverage_gaps": coverage_report(new_spec, map_data), + } + if report_path: + report_path.write_text(json.dumps(report, indent=2, sort_keys=True) + "\n") + + if needs_human: + print("NEEDS_HUMAN -- refusing to apply:") + for n in report["needs_human"]: + print(f" [{n['kind']}] {n['detail']}") + return 1 + + if applied: + SNAPSHOT_PATH.write_text(json.dumps(new_spec, indent=2, sort_keys=True) + "\n") + print(f"Applied {len(applied)} change(s); bump={bump}") + for a in applied: + print(f" [{a.kind}] {a.file}: {a.detail}") + else: + print("No changes.") + return 0 + + +def cmd_coverage(spec_path: Path) -> int: + map_data = load_map() + spec = load_json(spec_path) if spec_path.exists() else load_json(SNAPSHOT_PATH) + gaps = coverage_report(spec, map_data) + if not gaps: + print("Coverage: no known gaps.") + return 0 + print(f"Coverage report ({len(gaps)} known gap(s), non-blocking):") + for g in gaps: + print(f" {g['method']} {g['path']} ({', '.join(g['schemas'])}): {g['reason']}") + return 0 + + +def main() -> int: + parser = argparse.ArgumentParser(description=__doc__) + mode = parser.add_mutually_exclusive_group(required=True) + mode.add_argument("--check", action="store_true") + mode.add_argument("--apply", action="store_true") + mode.add_argument("--validate-map", action="store_true") + mode.add_argument("--coverage", action="store_true") + parser.add_argument("--spec", type=Path, default=DEFAULT_SPEC_PATH) + parser.add_argument("--report", type=Path, default=None) + args = parser.parse_args() + + if args.validate_map: + return cmd_validate_map() + if args.check: + return cmd_check(args.report) + if args.apply: + return cmd_apply(args.spec, args.report) + if args.coverage: + return cmd_coverage(args.spec) + return 1 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/.api-sync/unmodeled.json b/.api-sync/unmodeled.json new file mode 100644 index 0000000..ca4ff5c --- /dev/null +++ b/.api-sync/unmodeled.json @@ -0,0 +1,1043 @@ +[ + { + "kind": "property", + "schema": "BankAccountOut", + "field": "business_industry", + "reason": "Same gap as BankAccountOut.recipient_relationship above.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "BankAccountOut", + "field": "date_of_birth", + "reason": "Same gap as BankAccountOut.recipient_relationship above.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "BankAccountOut", + "field": "phone_number", + "reason": "Same gap as BankAccountOut.recipient_relationship above.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "BankAccountOut", + "field": "pix_safe_bank_code", + "reason": "The general list()/get() bank-account shape does not expose Pix Safe rail fields; only CreatePixSafeResponse (a different, rail-specific SDK type outside this mapping) does.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "BankAccountOut", + "field": "pix_safe_branch_code", + "reason": "Same gap as BankAccountOut.pix_safe_bank_code above.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "BankAccountOut", + "field": "pix_safe_cpf_cnpj", + "reason": "Same gap as BankAccountOut.pix_safe_bank_code above.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "BankAccountOut", + "field": "recipient_relationship", + "reason": "General metadata field not modeled on the list()/get() bank-account shape.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "BankAccountOut", + "field": "sepa_beneficiary_address_line_1", + "reason": "Same gap as BankAccountOut.sepa_iban above.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "BankAccountOut", + "field": "sepa_beneficiary_address_line_2", + "reason": "Same gap as BankAccountOut.sepa_iban above.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "BankAccountOut", + "field": "sepa_beneficiary_city", + "reason": "Same gap as BankAccountOut.sepa_iban above.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "BankAccountOut", + "field": "sepa_beneficiary_country", + "reason": "Same gap as BankAccountOut.sepa_iban above.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "BankAccountOut", + "field": "sepa_beneficiary_legal_name", + "reason": "Same gap as BankAccountOut.sepa_iban above.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "BankAccountOut", + "field": "sepa_beneficiary_postal_code", + "reason": "Same gap as BankAccountOut.sepa_iban above.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "BankAccountOut", + "field": "sepa_beneficiary_state_province_region", + "reason": "Same gap as BankAccountOut.sepa_iban above.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "BankAccountOut", + "field": "sepa_iban", + "reason": "The general list()/get() bank-account shape does not expose SEPA rail fields; only CreateSepaResponse (a different, rail-specific SDK type outside this mapping) does.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "BankAccountOut", + "field": "status", + "reason": "General metadata field (bank account approval status) not modeled on the list()/get() bank-account shape.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "BankAccountOut", + "field": "swift_ifsc_branch_code", + "reason": "India IFSC routing field on the SWIFT rail; not modeled on either the general shape or CreateInternationalSwiftInput/Response.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "BankAccountOut", + "field": "swift_payment_code", + "reason": "SWIFT rail field present on CreateInternationalSwiftInput but not surfaced on the general list()/get() bank-account shape.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "BankAccountOut", + "field": "tax_id", + "reason": "Same gap as BankAccountOut.recipient_relationship above.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "CreateBankAccountIn", + "field": "checkbook_account_id", + "reason": "Legacy/migration-only field for accounts created through a since-replaced provider integration; not exposed on any current create_() method.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "CreateBankAccountIn", + "field": "checkbook_user_key", + "reason": "Same as CreateBankAccountIn.checkbook_account_id above.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "CreateBankAccountIn", + "field": "force_cpf_cnpj", + "reason": "Internal override flag; not exposed on any current create_() method.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "CreateBankAccountIn", + "field": "onemoney_external_account_id", + "reason": "Same migration-only pattern as checkbook_account_id, for a different provider; not exposed on any current create_() method.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "CreateBankAccountIn", + "field": "status", + "reason": "Bank accounts are always created in the default review status; no create_() method exposes an override.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "CreateBankAccountIn", + "field": "swift_ifsc_branch_code", + "reason": "Same India IFSC gap as BankAccountOut.swift_ifsc_branch_code above; CreateInternationalSwiftInput does not model it either.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "CreateBankAccountIn", + "field": "type", + "reason": "Injected by each create_() method as a literal (e.g. payload[\"type\"] = \"pix\"); never a field the caller supplies.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "CreateBlockchainWalletIn", + "field": "is_account_abstraction", + "reason": "Injected by create_with_address() (True) / create_with_hash() (False); never a field the caller supplies.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "CreateCustomerIn", + "field": "additional_info", + "reason": "Free-form label/value list not modeled on any of the 3 create_*_kyc() input variants.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "CreateCustomerIn", + "field": "kyc_type", + "reason": "Injected by each create_() method as a literal; never a field the caller supplies.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "CreateCustomerIn", + "field": "latitude", + "reason": "Not modeled on any of the 3 create_*_kyc() input variants.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "CreateCustomerIn", + "field": "longitude", + "reason": "Same gap as CreateCustomerIn.latitude above.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "CreateCustomerIn", + "field": "type", + "reason": "Injected by each create_() method as a literal; never a field the caller supplies.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "CreatePayinIn", + "field": "payin_quote_id", + "reason": "CreatePayinInput is dead code (allowlist.json: create_evm() takes a bare payin_quote_id str, never this TypedDict), so its one field is unmodeled by construction.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "CreatePayinOut", + "field": "billing_fee_amount", + "reason": "Not modeled on CreateEvmPayinResponse (Payin/GetPayinTrackResponse do model it).", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "CreatePayinOut", + "field": "partner_fee", + "reason": "Modeled instead as separate scalar fields (partner_fee_id, partner_fee_amount) rather than this nested object; same pattern as the pre-existing tracking_partner_fee divergence in allowlist.json.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "CreatePayinOut", + "field": "payment_method", + "reason": "Not modeled on CreateEvmPayinResponse.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "CreatePayinOut", + "field": "sender_amount", + "reason": "Not modeled on CreateEvmPayinResponse.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "CreatePayinOut", + "field": "transaction_fee_amount", + "reason": "Not modeled on CreateEvmPayinResponse.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "CreatePayinQuoteOut", + "field": "billing_fee_amount", + "reason": "Not modeled on CreatePayinQuoteResponse.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "CreatePayinQuoteOut", + "field": "is_otc", + "reason": "Not modeled on CreatePayinQuoteResponse.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "CreateWalletIn", + "field": "external_id", + "reason": "Optional caller-supplied external reference; not modeled on CreateCustodialWalletInput.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "CreateWalletIn", + "field": "name", + "reason": "REQUIRED by the API (CreateWalletIn.required includes name) but CreateCustodialWalletInput (customer_id, network only) never sends it -- likely a functional bug, not just a documentation gap; flagging for priority triage.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "CustomerOut", + "field": "additional_info", + "reason": "Response counterpart of the CreateCustomerIn.additional_info gap above; not modeled on any of the 3 KYC response variants.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "CustomerOut", + "field": "customer_id", + "reason": "Not modeled on any of the 3 KYC response variants (they model the wire's `id` field only).", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "CustomerOut", + "field": "latitude", + "reason": "Response counterpart of the CreateCustomerIn.latitude gap above.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "CustomerOut", + "field": "longitude", + "reason": "Same gap as CustomerOut.latitude above.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "GetCustomerLimitIncreaseOut", + "field": "approved_daily", + "reason": "The as-approved counterpart of the requested daily/monthly/per_transaction limits is not modeled on LimitIncreaseRequest.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "GetCustomerLimitIncreaseOut", + "field": "approved_monthly", + "reason": "Same gap as GetCustomerLimitIncreaseOut.approved_daily above.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "GetCustomerLimitIncreaseOut", + "field": "approved_per_transaction", + "reason": "Same gap as GetCustomerLimitIncreaseOut.approved_daily above.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "GetFeesOut", + "field": "ach_colombia", + "reason": "fees.py's FeesResponse models 5 of the ~18 rail/network fee blocks the wire returns (ach, domestic_wire, pix, solana, ted); the remaining rails/networks are not modeled.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "GetFeesOut", + "field": "arbitrum", + "reason": "Same gap as GetFeesOut.ach_colombia above (unmodeled rail/network fee block: arbitrum).", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "GetFeesOut", + "field": "base", + "reason": "Same gap as GetFeesOut.ach_colombia above (unmodeled rail/network fee block: base).", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "GetFeesOut", + "field": "created_at", + "reason": "Same gap as GetFeesOut.id above.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "GetFeesOut", + "field": "ethereum", + "reason": "Same gap as GetFeesOut.ach_colombia above (unmodeled rail/network fee block: ethereum).", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "GetFeesOut", + "field": "id", + "reason": "Record metadata (id/instance_id/created_at/updated_at) not modeled on FeesResponse.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "GetFeesOut", + "field": "instance_id", + "reason": "Same gap as GetFeesOut.id above.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "GetFeesOut", + "field": "international_swift", + "reason": "Same gap as GetFeesOut.ach_colombia above (unmodeled rail/network fee block: international_swift).", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "GetFeesOut", + "field": "pix_safe", + "reason": "Same gap as GetFeesOut.ach_colombia above (unmodeled rail/network fee block: pix_safe).", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "GetFeesOut", + "field": "polygon", + "reason": "Same gap as GetFeesOut.ach_colombia above (unmodeled rail/network fee block: polygon).", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "GetFeesOut", + "field": "rtp", + "reason": "Same gap as GetFeesOut.ach_colombia above (unmodeled rail/network fee block: rtp).", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "GetFeesOut", + "field": "sepa", + "reason": "Same gap as GetFeesOut.ach_colombia above (unmodeled rail/network fee block: sepa).", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "GetFeesOut", + "field": "spei", + "reason": "Same gap as GetFeesOut.ach_colombia above (unmodeled rail/network fee block: spei).", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "GetFeesOut", + "field": "stellar", + "reason": "Same gap as GetFeesOut.ach_colombia above (unmodeled rail/network fee block: stellar).", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "GetFeesOut", + "field": "transfers_3", + "reason": "Same gap as GetFeesOut.ach_colombia above; `transfers_3` looks like a spec/schema-generation artifact for the transfers rail (a naming collision suffix), worth a look when this is modeled rather than assumed correct as-is.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "GetFeesOut", + "field": "tron", + "reason": "Same gap as GetFeesOut.ach_colombia above (unmodeled rail/network fee block: tron).", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "GetFeesOut", + "field": "updated_at", + "reason": "Same gap as GetFeesOut.id above.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "OfframpWallet", + "field": "circle_wallet_id", + "reason": "Not modeled on either OfframpWallet declaration (bank_accounts.py or wallets/offramp.py).", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "PayinOut", + "field": "manual_concluded_at", + "reason": "Manual OTC-liquidity-toggle bookkeeping fields not modeled on Payin/GetPayinTrackResponse.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "PayinOut", + "field": "manual_concluded_by", + "reason": "Same gap as PayinOut.manual_concluded_at above.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "PayinOut", + "field": "partner_fee", + "reason": "Same partner_fee-vs-partner_fee_id/partner_fee_amount divergence as CreatePayinOut.partner_fee above.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "PayinOut", + "field": "payer_rules", + "reason": "Echo of the payin-quote's payer_rules (e.g. pix_allowed_tax_ids) not modeled on Payin/GetPayinTrackResponse.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "PayinOut", + "field": "transaction_fee_amount", + "reason": "Not modeled on Payin/GetPayinTrackResponse (billing_fee_amount is modeled, transaction_fee_amount is not).", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "PayinOut", + "field": "approved_risk_sources", + "reason": "Payin-side tracking_payment wire shape (manual-review metadata) differs entirely from the payout-side shape despite sharing the same SDK TypedDict; not modeled.", + "owner": "eric@blindpay.com", + "path": "tracking_payment" + }, + { + "kind": "property", + "schema": "PayinOut", + "field": "review_context", + "reason": "Same gap as PayinOut.approved_risk_sources above.", + "owner": "eric@blindpay.com", + "path": "tracking_payment" + }, + { + "kind": "property", + "schema": "PayinOut", + "field": "review_source", + "reason": "Same gap as PayinOut.approved_risk_sources above.", + "owner": "eric@blindpay.com", + "path": "tracking_payment" + }, + { + "kind": "property", + "schema": "PayinOut", + "field": "description", + "reason": "Payin-side tracking_transaction wire shape has ~15 fields; the generic 4-field TrackingTransaction covers only step/status/transaction_hash/completed_at. A fuller GetPayinTrackingTransaction TypedDict already exists in payins.py but is dead code: GetPayinTrackResponse still types tracking_transaction as the generic TrackingTransaction. Wiring the existing type up (or extending TrackingTransaction) is a deliberate follow-up, not a blind field-add.", + "owner": "eric@blindpay.com", + "path": "tracking_transaction" + }, + { + "kind": "property", + "schema": "PayinOut", + "field": "end_to_end_id", + "reason": "Same payin-tracking_transaction gap as `description` above.", + "owner": "eric@blindpay.com", + "path": "tracking_transaction" + }, + { + "kind": "property", + "schema": "PayinOut", + "field": "external_id", + "reason": "Same payin-tracking_transaction gap as `description` above.", + "owner": "eric@blindpay.com", + "path": "tracking_transaction" + }, + { + "kind": "property", + "schema": "PayinOut", + "field": "provider_name", + "reason": "Same payin-tracking_transaction gap as `description` above.", + "owner": "eric@blindpay.com", + "path": "tracking_transaction" + }, + { + "kind": "property", + "schema": "PayinOut", + "field": "provider_transaction_id", + "reason": "Same payin-tracking_transaction gap as `description` above.", + "owner": "eric@blindpay.com", + "path": "tracking_transaction" + }, + { + "kind": "property", + "schema": "PayinOut", + "field": "pse_instruction", + "reason": "Same payin-tracking_transaction gap as `description` above.", + "owner": "eric@blindpay.com", + "path": "tracking_transaction" + }, + { + "kind": "property", + "schema": "PayinOut", + "field": "sender_account_number", + "reason": "Same payin-tracking_transaction gap as `description` above.", + "owner": "eric@blindpay.com", + "path": "tracking_transaction" + }, + { + "kind": "property", + "schema": "PayinOut", + "field": "sender_bank_code", + "reason": "Same payin-tracking_transaction gap as `description` above.", + "owner": "eric@blindpay.com", + "path": "tracking_transaction" + }, + { + "kind": "property", + "schema": "PayinOut", + "field": "sender_bank_name", + "reason": "Same payin-tracking_transaction gap as `description` above.", + "owner": "eric@blindpay.com", + "path": "tracking_transaction" + }, + { + "kind": "property", + "schema": "PayinOut", + "field": "sender_name", + "reason": "Same payin-tracking_transaction gap as `description` above.", + "owner": "eric@blindpay.com", + "path": "tracking_transaction" + }, + { + "kind": "property", + "schema": "PayinOut", + "field": "sender_tax_id", + "reason": "Same payin-tracking_transaction gap as `description` above.", + "owner": "eric@blindpay.com", + "path": "tracking_transaction" + }, + { + "kind": "property", + "schema": "PayinOut", + "field": "ted_instruction", + "reason": "Same payin-tracking_transaction gap as `description` above.", + "owner": "eric@blindpay.com", + "path": "tracking_transaction" + }, + { + "kind": "property", + "schema": "PayinOut", + "field": "trace_number", + "reason": "Same payin-tracking_transaction gap as `description` above.", + "owner": "eric@blindpay.com", + "path": "tracking_transaction" + }, + { + "kind": "property", + "schema": "PayinOut", + "field": "transaction_reference", + "reason": "Same payin-tracking_transaction gap as `description` above.", + "owner": "eric@blindpay.com", + "path": "tracking_transaction" + }, + { + "kind": "property", + "schema": "PayinOut", + "field": "transfers_instruction", + "reason": "Same payin-tracking_transaction gap as `description` above.", + "owner": "eric@blindpay.com", + "path": "tracking_transaction" + }, + { + "kind": "property", + "schema": "PayoutOnEvmOut", + "field": "bank_account_id", + "reason": "Destination bank-account reference not modeled on CreateEvmPayoutResponse/CreateSolanaPayoutResponse/CreateStellarPayoutResponse.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "PayoutOnEvmOut", + "field": "billing_fee_amount", + "reason": "Not modeled on the same 3 response types (Payout itself does model it).", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "PayoutOnEvmOut", + "field": "offramp_wallet_id", + "reason": "Destination offramp-wallet reference not modeled on the same 3 response types.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "PayoutOnEvmOut", + "field": "partner_fee", + "reason": "Same partner_fee-vs-partner_fee_id/partner_fee_amount divergence as PayoutOut.partner_fee above.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "PayoutOnEvmOut", + "field": "tracking_documents", + "reason": "Same gap as PayoutOut.tracking_documents above, on the create-response shape.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "PayoutOnEvmOut", + "field": "transaction_fee_amount", + "reason": "Not modeled on the same 3 response types.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "PayoutOnSolanaIn", + "field": "signed_transaction", + "reason": "CreateSolanaPayoutInput (quote_id, sender_wallet_address) does not model this optional field, even though the sibling CreateStellarPayoutInput does.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "PayoutOut", + "field": "jpm_track_data", + "reason": "Provider(JPMorgan)-internal tracking payload; not exposed on Payout.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "PayoutOut", + "field": "partner_fee", + "reason": "Same partner_fee-vs-partner_fee_id/partner_fee_amount divergence as CreatePayinOut.partner_fee above, on the payout shape.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "PayoutOut", + "field": "pix_safe_bank_code", + "reason": "Same rail-specific gap as BankAccountOut.pix_safe_bank_code above, on the payout shape.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "PayoutOut", + "field": "pix_safe_branch_code", + "reason": "Same gap as PayoutOut.pix_safe_bank_code above.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "PayoutOut", + "field": "pix_safe_cpf_cnpj", + "reason": "Same gap as PayoutOut.pix_safe_bank_code above.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "PayoutOut", + "field": "tracking_documents", + "reason": "Document-upload tracking sub-object not modeled on Payout.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "PayoutOut", + "field": "transaction_fee_amount", + "reason": "Not modeled on Payout (billing_fee_amount is modeled, transaction_fee_amount is not).", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "PayoutOut", + "field": "provider_transaction_id", + "reason": "Payout-side tracking_complete wire shape has 2 fields TrackingComplete does not model: provider_transaction_id, refund_reason.", + "owner": "eric@blindpay.com", + "path": "tracking_complete" + }, + { + "kind": "property", + "schema": "PayoutOut", + "field": "refund_reason", + "reason": "Same gap as PayoutOut.provider_transaction_id above (tracking_complete sub-object).", + "owner": "eric@blindpay.com", + "path": "tracking_complete" + }, + { + "kind": "property", + "schema": "PayoutOut", + "field": "coelsa_id", + "reason": "Same payout-tracking_payment gap as provider_reference above.", + "owner": "eric@blindpay.com", + "path": "tracking_payment" + }, + { + "kind": "property", + "schema": "PayoutOut", + "field": "end_to_end_id", + "reason": "Same payout-tracking_payment gap as provider_reference above.", + "owner": "eric@blindpay.com", + "path": "tracking_payment" + }, + { + "kind": "property", + "schema": "PayoutOut", + "field": "provider_clearing_system", + "reason": "Same payout-tracking_payment gap as provider_reference above.", + "owner": "eric@blindpay.com", + "path": "tracking_payment" + }, + { + "kind": "property", + "schema": "PayoutOut", + "field": "provider_error_reason", + "reason": "Same payout-tracking_payment gap as provider_reference above.", + "owner": "eric@blindpay.com", + "path": "tracking_payment" + }, + { + "kind": "property", + "schema": "PayoutOut", + "field": "provider_imad", + "reason": "Same payout-tracking_payment gap as provider_reference above.", + "owner": "eric@blindpay.com", + "path": "tracking_payment" + }, + { + "kind": "property", + "schema": "PayoutOut", + "field": "provider_integration", + "reason": "Same payout-tracking_payment gap as provider_reference above.", + "owner": "eric@blindpay.com", + "path": "tracking_payment" + }, + { + "kind": "property", + "schema": "PayoutOut", + "field": "provider_reference", + "reason": "SDK's shared TrackingPayment models a 6 of 20 field subset of the payout tracking_payment object; exposing the remaining payout-only fields is a deliberate additive change that needs one reviewed PR across all SDKs, not a blind per-field add.", + "owner": "eric@blindpay.com", + "path": "tracking_payment" + }, + { + "kind": "property", + "schema": "PayoutOut", + "field": "provider_uetr", + "reason": "Same payout-tracking_payment gap as provider_reference above.", + "owner": "eric@blindpay.com", + "path": "tracking_payment" + }, + { + "kind": "property", + "schema": "PayoutOut", + "field": "recipient_account_number", + "reason": "Same payout-tracking_payment gap as provider_reference above.", + "owner": "eric@blindpay.com", + "path": "tracking_payment" + }, + { + "kind": "property", + "schema": "PayoutOut", + "field": "recipient_account_type", + "reason": "Same payout-tracking_payment gap as provider_reference above.", + "owner": "eric@blindpay.com", + "path": "tracking_payment" + }, + { + "kind": "property", + "schema": "PayoutOut", + "field": "recipient_bank_code", + "reason": "Same payout-tracking_payment gap as provider_reference above.", + "owner": "eric@blindpay.com", + "path": "tracking_payment" + }, + { + "kind": "property", + "schema": "PayoutOut", + "field": "recipient_branch_code", + "reason": "Same payout-tracking_payment gap as provider_reference above.", + "owner": "eric@blindpay.com", + "path": "tracking_payment" + }, + { + "kind": "property", + "schema": "PayoutOut", + "field": "recipient_name", + "reason": "Same payout-tracking_payment gap as provider_reference above.", + "owner": "eric@blindpay.com", + "path": "tracking_payment" + }, + { + "kind": "property", + "schema": "PayoutOut", + "field": "recipient_tax_id", + "reason": "Same payout-tracking_payment gap as provider_reference above.", + "owner": "eric@blindpay.com", + "path": "tracking_payment" + }, + { + "kind": "property", + "schema": "PayoutOut", + "field": "ledger_in_transaction_id", + "reason": "Payout-side tracking_transaction wire shape has 3 fields TrackingTransaction (step/status/transaction_hash/completed_at) does not model: ledger_in_transaction_id, ledger_out_transaction_id, provider_error_reason.", + "owner": "eric@blindpay.com", + "path": "tracking_transaction" + }, + { + "kind": "property", + "schema": "PayoutOut", + "field": "ledger_out_transaction_id", + "reason": "Same gap as PayoutOut.ledger_in_transaction_id above.", + "owner": "eric@blindpay.com", + "path": "tracking_transaction" + }, + { + "kind": "property", + "schema": "PayoutOut", + "field": "provider_error_reason", + "reason": "Same gap as PayoutOut.ledger_in_transaction_id above.", + "owner": "eric@blindpay.com", + "path": "tracking_transaction" + }, + { + "kind": "property", + "schema": "PayoutOut", + "field": "provider_transaction_id", + "reason": "Same gap as PayoutOut.ledger_in_transaction_id above (tracking_transaction sub-object).", + "owner": "eric@blindpay.com", + "path": "tracking_transaction" + }, + { + "kind": "property", + "schema": "QuoteOut", + "field": "billing_fee_amount", + "reason": "Not modeled on CreateQuoteResponse (Payout/Payin do model billing_fee_amount).", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "UpdateCustomerIn", + "field": "additional_info", + "reason": "Not modeled on UpdateCustomerInput.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "UpdateCustomerIn", + "field": "latitude", + "reason": "Not modeled on UpdateCustomerInput.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "UpdateCustomerIn", + "field": "longitude", + "reason": "Same gap as UpdateCustomerIn.latitude above.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "UpdateInstanceIn", + "field": "compliance_emails", + "reason": "Not modeled on UpdateInstanceInput.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "UpdateInstanceIn", + "field": "customer_rfi_emails_enabled", + "reason": "Not modeled on UpdateInstanceInput; also connected to the unmodeled RFI resource family.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "UpdateInstanceMemberIn", + "field": "user_role", + "reason": "UpdateInstanceMemberRoleInput is dead code (allowlist.json: update_member_role() takes member_id/role as loose args and remaps role -> user_role itself), so its field is unmodeled by construction.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "UploadOut", + "field": "file_url", + "reason": "Modeled under a different name: UploadResponse uses `url` where the wire's UploadOut object uses `file_url` (the name `url` passes the existing global contract-check because it is used elsewhere in the spec, e.g. WebhookEndpoint.url).", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "VirtualAccountOut", + "field": "customer_id", + "reason": "Not modeled on VirtualAccount.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "WalletBalanceOut", + "field": "USDB", + "reason": "Same case divergence as WalletBalanceOut.USDC above.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "WalletBalanceOut", + "field": "USDC", + "reason": "Pre-existing case divergence, already tracked in .api-sync/allowlist.json (CustodialWalletBalance.usdc): the wire uses uppercase USDC/USDT/USDB, the SDK models lowercase keys.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "WalletBalanceOut", + "field": "USDT", + "reason": "Same case divergence as WalletBalanceOut.USDC above.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "WalletOut", + "field": "external_id", + "reason": "Response counterpart of the CreateWalletIn.external_id gap above.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "WalletOut", + "field": "name", + "reason": "Response counterpart of the CreateWalletIn.name gap above; CustodialWallet has no name field.", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "WalletTokenOut", + "field": "id", + "reason": "The per-token balance entry id is not modeled on CustodialWalletBalanceToken (amount, token, address only).", + "owner": "eric@blindpay.com" + }, + { + "kind": "property", + "schema": "WalletTokenOut", + "field": "symbol", + "reason": "Modeled under a different name: CustodialWalletBalanceToken uses `token` where the wire's WalletTokenOut object uses `symbol`.", + "owner": "eric@blindpay.com" + }, + { + "kind": "enum", + "enum": "BankAccountType", + "missing_values": [ + "saving" + ], + "reason": "Live defect, not just typing: the wire's real enum is [checking, saving] (singular); the SDK Literal is [checking, savings] (plural). Confirmed against packages/api-contract in blindpay-v2 and the API's own payout code, which branches on `account_type === 'saving'`. Do not auto-append \"saving\" as a 3rd member; this needs a coordinated rename PR (node and go already use the correct singular spelling).", + "owner": "eric@blindpay.com" + }, + { + "kind": "enum", + "enum": "KycStatus", + "missing_values": [ + "verifying", + "approved", + "rejected", + "deprecated", + "pending_review", + "approved_rfi" + ], + "reason": "CustomerOut.kyc_status carries the full 8-value customer state machine on the wire; the SDK's KycStatus Literal used for that exact field only has 2 members (awaiting_contract, compliance_request). Needs a human decision on whether KycStatus should simply gain the 6 missing members, or whether this field was wired to the wrong Literal from the start (customers.py also declares an unrelated 5-value CustomerStatus used only for a list-filter param).", + "owner": "eric@blindpay.com" + } +] diff --git a/.github/workflows/api-sync-check.yaml b/.github/workflows/api-sync-check.yaml new file mode 100644 index 0000000..be208ba --- /dev/null +++ b/.github/workflows/api-sync-check.yaml @@ -0,0 +1,43 @@ +name: API Sync Check + +on: + workflow_call: + +jobs: + api-sync-check: + name: Run deterministic spec-sync patcher checks + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Setup Python + uses: actions/setup-python@v5 + with: + python-version: "3.12" + + - name: Map validity (every spec-map.json entry resolves) + run: python3 .api-sync/sync.py --validate-map + + - name: State reconciliation (--check) + run: python3 .api-sync/sync.py --check + + - name: Determinism proof + run: | + set -e + rm -rf /tmp/api-sync-proof-a /tmp/api-sync-proof-b + cp -r . /tmp/api-sync-proof-a + cp -r . /tmp/api-sync-proof-b + # Re-applying the already-committed snapshot against itself must be + # a deterministic no-op in any generic CI context (no externally + # delivered spec-current.json is available here). The stronger + # proof -- that applying genuinely NEW drift twice from the same + # starting state produces byte-identical results -- is covered by + # tests/test_api_sync.py::TestDeterminism. + (cd /tmp/api-sync-proof-a && python3 .api-sync/sync.py --apply --spec .api-sync/spec-snapshot.json) + (cd /tmp/api-sync-proof-b && python3 .api-sync/sync.py --apply --spec .api-sync/spec-snapshot.json) + diff -rq /tmp/api-sync-proof-a /tmp/api-sync-proof-b + diff -rq . /tmp/api-sync-proof-a + + - name: Coverage report (non-blocking) + continue-on-error: true + run: python3 .api-sync/sync.py --coverage --spec .api-sync/spec-snapshot.json diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 3b61edd..40de4e7 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -31,6 +31,11 @@ jobs: needs: [lint, typecheck] uses: ./.github/workflows/contract-check.yaml + api-sync-check: + name: API Sync Check + needs: [lint, typecheck] + uses: ./.github/workflows/api-sync-check.yaml + snyk: name: Snyk needs: [lint, typecheck, tests] diff --git a/.gitignore b/.gitignore index 4a08c01..0e8a106 100644 --- a/.gitignore +++ b/.gitignore @@ -146,3 +146,7 @@ cython_debug/ # Snyk Security Extension - AI Rules (auto-generated) .cursor/rules/snyk_rules.mdc + +# api-sync: the newly-delivered spec is force-pushed to the api-sync-data branch +# and read by the workflow at run time; it is never committed to main. +.api-sync/spec-current.json diff --git a/tests/test_api_sync.py b/tests/test_api_sync.py new file mode 100644 index 0000000..9341a0c --- /dev/null +++ b/tests/test_api_sync.py @@ -0,0 +1,812 @@ +"""Unit tests for .api-sync/sync.py, the deterministic spec -> SDK patcher. + +sync.py lives outside the `blindpay` package (it is a standalone script next to +check_contract.py), so each test loads a fresh copy of the module via +importlib and repoints its path constants at an isolated tmp_path "repo" -- +never at the real src/blindpay tree. +""" + +import ast +import importlib.util +import json +import sys +import types +from pathlib import Path +from typing import Any, Optional + +import pytest + +SYNC_PATH = Path(__file__).parent.parent / ".api-sync" / "sync.py" + + +_load_counter = 0 + + +def load_sync(root: Path) -> types.ModuleType: + """Import a fresh instance of sync.py with its path constants repointed at `root`.""" + global _load_counter + _load_counter += 1 + module_name = f"sync_under_test_{_load_counter}" + spec = importlib.util.spec_from_file_location(module_name, SYNC_PATH) + assert spec and spec.loader + module = importlib.util.module_from_spec(spec) + # @dataclass needs the module registered in sys.modules to resolve annotations + sys.modules[module_name] = module + spec.loader.exec_module(module) + module.ROOT = root # type: ignore[attr-defined] + module.API_SYNC = root / ".api-sync" # type: ignore[attr-defined] + module.SRC_ROOT = root / "src" / "blindpay" # type: ignore[attr-defined] + module.SNAPSHOT_PATH = module.API_SYNC / "spec-snapshot.json" # type: ignore[attr-defined] + module.DEFAULT_SPEC_PATH = module.API_SYNC / "spec-current.json" # type: ignore[attr-defined] + module.MAP_PATH = module.API_SYNC / "spec-map.json" # type: ignore[attr-defined] + module.UNMODELED_PATH = module.API_SYNC / "unmodeled.json" # type: ignore[attr-defined] + return module + + +def write(root: Path, rel: str, content: str) -> Path: + p = root / rel + p.parent.mkdir(parents=True, exist_ok=True) + p.write_text(content) + return p + + +def base_schema(schemas: dict[str, Any], paths: Optional[dict[str, Any]] = None) -> dict[str, Any]: + return {"paths": paths or {}, "components": {"schemas": schemas}} + + +def op(ref_in: Optional[str] = None, ref_out: Optional[str] = None) -> dict[str, Any]: + o: dict[str, Any] = {"x-sdk": True} + if ref_in: + o["requestBody"] = {"content": {"application/json": {"schema": {"$ref": f"#/components/schemas/{ref_in}"}}}} + if ref_out: + o["responses"] = { + "200": {"content": {"application/json": {"schema": {"$ref": f"#/components/schemas/{ref_out}"}}}} + } + else: + o["responses"] = {"200": {"content": {}}} + return o + + +@pytest.fixture +def repo(tmp_path: Path) -> Path: + write(tmp_path, "src/blindpay/__init__.py", "") + return tmp_path + + +# --------------------------------------------------------------------------- # +# Literal (enum) splicing +# --------------------------------------------------------------------------- # + + +class TestLiteralSplicing: + def test_single_line_literal_add_member(self): + source = 'Color = Literal["red", "blue"]\n' + tree = ast.parse(source) + node = next(n for n in ast.walk(tree) if isinstance(n, ast.Assign)) + sync = load_sync(Path("/nonexistent")) + result = sync.splice_literal_add_members(source, node, ["green"]) + assert result == 'Color = Literal["red", "blue", "green"]\n' + + def test_single_line_literal_add_multiple_members_sorted_input(self): + source = 'Color = Literal["red"]\n' + tree = ast.parse(source) + node = next(n for n in ast.walk(tree) if isinstance(n, ast.Assign)) + sync = load_sync(Path("/nonexistent")) + result = sync.splice_literal_add_members(source, node, ["blue", "green"]) + assert result == 'Color = Literal["red", "blue", "green"]\n' + + def test_multiline_literal_add_member_preserves_indentation_and_trailing_comma(self): + source = 'Status = Literal[\n "a",\n "b",\n]\n' + tree = ast.parse(source) + node = next(n for n in ast.walk(tree) if isinstance(n, ast.Assign)) + sync = load_sync(Path("/nonexistent")) + result = sync.splice_literal_add_members(source, node, ["c"]) + assert result == 'Status = Literal[\n "a",\n "b",\n "c",\n]\n' + ast.parse(result) # still valid Python + + def test_multiline_literal_without_trailing_comma_gets_one_added(self): + source = 'Status = Literal[\n "a",\n "b"\n]\n' + tree = ast.parse(source) + node = next(n for n in ast.walk(tree) if isinstance(n, ast.Assign)) + sync = load_sync(Path("/nonexistent")) + result = sync.splice_literal_add_members(source, node, ["c"]) + assert result == 'Status = Literal[\n "a",\n "b",\n "c",\n]\n' + + +# --------------------------------------------------------------------------- # +# TypedDict field splicing / annotation choice +# --------------------------------------------------------------------------- # + + +class TestTypedDictFieldInsertion: + def _class_info(self, sync: types.ModuleType, source: str, name: str): + tree = ast.parse(source) + node = next(n for n in ast.walk(tree) if isinstance(n, ast.ClassDef) and n.name == name) + own_fields = { + item.target.id: item + for item in node.body + if isinstance(item, ast.AnnAssign) and isinstance(item.target, ast.Name) + } + return sync.ClassInfo( + file=Path("/fake.py"), + node=node, + source=source, + bases=sync._base_names(node), + total_false=sync._is_total_false(node), + own_fields=own_fields, + ) + + def test_plain_total_true_class_uses_optional(self): + sync = load_sync(Path("/nonexistent")) + source = "class Plain(TypedDict):\n x: str\n y: Optional[str]\n" + info = self._class_info(sync, source, "Plain") + assert sync.class_uses_notrequired(info) is False + assert sync.choose_field_annotation(info, "str", nullable=True) == "Optional[str]" + assert sync.choose_field_annotation(info, "str", nullable=False) == "Optional[str]" + + def test_notrequired_precedent_wraps_new_field_in_notrequired(self): + sync = load_sync(Path("/nonexistent")) + source = "class WithNR(TypedDict):\n x: str\n y: NotRequired[str]\n" + info = self._class_info(sync, source, "WithNR") + assert sync.class_uses_notrequired(info) is True + assert sync.choose_field_annotation(info, "str", nullable=True) == "NotRequired[Optional[str]]" + assert sync.choose_field_annotation(info, "str", nullable=False) == "NotRequired[str]" + + def test_total_false_class_uses_bare_type_when_not_nullable(self): + sync = load_sync(Path("/nonexistent")) + source = "class Foo(_FooRequired, total=False):\n b: str\n" + info = self._class_info(sync, source, "Foo") + assert info.total_false is True + assert sync.choose_field_annotation(info, "str", nullable=False) == "str" + assert sync.choose_field_annotation(info, "str", nullable=True) == "Optional[str]" + + def test_splice_typeddict_add_field_appends_after_last_statement(self): + sync = load_sync(Path("/nonexistent")) + source = "class Plain(TypedDict):\n x: str\n y: Optional[str]\n" + tree = ast.parse(source) + node = next(n for n in ast.walk(tree) if isinstance(n, ast.ClassDef)) + result = sync.splice_typeddict_add_field(source, node, "z", "Optional[str]") + expected = "class Plain(TypedDict):\n x: str\n y: Optional[str]\n z: Optional[str]\n" + assert result == expected + ast.parse(result) + + +# --------------------------------------------------------------------------- # +# Reconciliation against a fixture repo (enums, properties, nested specPath) +# --------------------------------------------------------------------------- # + + +FIXTURE_TYPES_PY = """from typing import Literal + +Color = Literal["red", "blue"] +""" + +FIXTURE_RESOURCE_PY = """from typing import Optional +from typing_extensions import Literal, NotRequired, TypedDict + +Status = Literal[ + "a", + "b", +] + + +class Plain(TypedDict): + id: str + name: Optional[str] + + +class _FooRequired(TypedDict): + id: str + + +class Foo(_FooRequired, total=False): + label: str +""" + + +def _write_fixture_repo(root: Path) -> None: + write(root, "src/blindpay/__init__.py", "") + write(root, "src/blindpay/types.py", FIXTURE_TYPES_PY) + write(root, "src/blindpay/resources/sample.py", FIXTURE_RESOURCE_PY) + + +def _write_map_and_unmodeled(root: Path, map_data: dict[str, Any], unmodeled: Optional[list[Any]] = None) -> None: + write(root, ".api-sync/spec-map.json", json.dumps(map_data)) + write(root, ".api-sync/unmodeled.json", json.dumps(unmodeled or [])) + + +class TestReconciliation: + def test_enum_gap_detected_when_spec_has_extra_member(self, repo: Path): + _write_fixture_repo(repo) + map_data: dict[str, Any] = { + "enums": [ + { + "spec": {"schema": "ColorOut", "property": "color"}, + "sdk": {"file": "src/blindpay/types.py", "symbol": "Color"}, + } + ], + "types": [], + "ignore": {"schemas": []}, + } + _write_map_and_unmodeled(repo, map_data) + sync = load_sync(repo) + index = sync.build_sdk_index(sync.SRC_ROOT) + spec = base_schema( + {"ColorOut": {"properties": {"color": {"type": "string", "enum": ["red", "blue", "green"]}}}}, + {"/x": {"get": op(ref_out="ColorOut")}}, + ) + gaps = sync.reconcile_enums(spec, map_data, [], index) + assert len(gaps) == 1 + assert gaps[0].symbol == "Color" + assert gaps[0].missing == ["green"] + + def test_enum_gap_suppressed_by_unmodeled_entry(self, repo: Path): + _write_fixture_repo(repo) + map_data: dict[str, Any] = { + "enums": [ + { + "spec": {"schema": "ColorOut", "property": "color"}, + "sdk": {"file": "src/blindpay/types.py", "symbol": "Color"}, + } + ], + "types": [], + "ignore": {"schemas": []}, + } + unmodeled = [ + { + "kind": "enum", + "enum": "Color", + "missing_values": ["green"], + "reason": "test", + "owner": "eric@blindpay.com", + } + ] + _write_map_and_unmodeled(repo, map_data, unmodeled) + sync = load_sync(repo) + index = sync.build_sdk_index(sync.SRC_ROOT) + spec = base_schema( + {"ColorOut": {"properties": {"color": {"type": "string", "enum": ["red", "blue", "green"]}}}}, + {"/x": {"get": op(ref_out="ColorOut")}}, + ) + gaps = sync.reconcile_enums(spec, map_data, unmodeled, index) + assert gaps == [] + + def test_property_gap_detected(self, repo: Path): + _write_fixture_repo(repo) + map_data: dict[str, Any] = { + "enums": [], + "types": [{"spec": "PlainOut", "sdk": [{"file": "src/blindpay/resources/sample.py", "symbol": "Plain"}]}], + "ignore": {"schemas": []}, + } + _write_map_and_unmodeled(repo, map_data) + sync = load_sync(repo) + index = sync.build_sdk_index(sync.SRC_ROOT) + spec = base_schema( + { + "PlainOut": { + "properties": { + "id": {"type": "string"}, + "name": {"type": ["string", "null"]}, + "extra": {"type": "string"}, + } + } + }, + {"/x": {"get": op(ref_out="PlainOut")}}, + ) + gaps = sync.reconcile_types(spec, map_data, [], index) + assert len(gaps) == 1 + assert gaps[0].schema_names == ["PlainOut"] + assert list(gaps[0].missing.keys()) == ["extra"] + + def test_two_part_total_false_pattern_field_resolved_via_base(self, repo: Path): + _write_fixture_repo(repo) + map_data: dict[str, Any] = { + "enums": [], + "types": [{"spec": "FooOut", "sdk": [{"file": "src/blindpay/resources/sample.py", "symbol": "Foo"}]}], + "ignore": {"schemas": []}, + } + _write_map_and_unmodeled(repo, map_data) + sync = load_sync(repo) + index = sync.build_sdk_index(sync.SRC_ROOT) + # `id` lives on _FooRequired (the base class); resolve_typeddict_fields must find it + fields = sync.resolve_typeddict_fields("Foo", "src/blindpay/resources/sample.py", index) + assert fields == {"id", "label"} + + def test_nested_specpath_sub_object_reconciled_independently_of_root(self, repo: Path): + """The blind spot that hid provider_reference in tracking_payment: a + property can live in an inline sub-object that is never $ref'd. The + reconciler must walk into `specPath`, not just the schema's own + top-level properties.""" + _write_fixture_repo(repo) + map_data: dict[str, Any] = { + "enums": [], + "types": [ + { + "spec": ["ParentOut"], + "specPath": "detail", + "sdk": [{"file": "src/blindpay/resources/sample.py", "symbol": "Plain"}], + } + ], + "ignore": {"schemas": []}, + } + _write_map_and_unmodeled(repo, map_data) + sync = load_sync(repo) + index = sync.build_sdk_index(sync.SRC_ROOT) + spec = base_schema( + { + "ParentOut": { + "properties": { + "unrelated_top_level_field": {"type": "string"}, # NOT reconciled (out of scope for this entry) + "detail": { + "type": "object", + "properties": { + "id": {"type": "string"}, + "name": {"type": ["string", "null"]}, + "newly_added": {"type": "string"}, + }, + }, + } + } + }, + {"/x": {"get": op(ref_out="ParentOut")}}, + ) + gaps = sync.reconcile_types(spec, map_data, [], index) + assert len(gaps) == 1 + assert gaps[0].path == "detail" + assert list(gaps[0].missing.keys()) == ["newly_added"] + # the root-level field is untouched by this specPath-scoped entry + assert "unrelated_top_level_field" not in gaps[0].missing + + +# --------------------------------------------------------------------------- # +# Map validity +# --------------------------------------------------------------------------- # + + +class TestMapValidity: + def test_valid_map_passes(self, repo: Path): + _write_fixture_repo(repo) + sync = load_sync(repo) + index = sync.build_sdk_index(sync.SRC_ROOT) + map_data: dict[str, Any] = { + "enums": [ + {"spec": {"schema": "X", "property": "y"}, "sdk": {"file": "src/blindpay/types.py", "symbol": "Color"}} + ], + "types": [{"spec": "PlainOut", "sdk": [{"file": "src/blindpay/resources/sample.py", "symbol": "Plain"}]}], + "ignore": {"schemas": []}, + } + assert sync.validate_map(map_data, index) == [] + + def test_missing_file_is_an_error(self, repo: Path): + _write_fixture_repo(repo) + sync = load_sync(repo) + index = sync.build_sdk_index(sync.SRC_ROOT) + map_data: dict[str, Any] = { + "enums": [], + "types": [{"spec": "X", "sdk": [{"file": "src/blindpay/nope.py", "symbol": "Plain"}]}], + "ignore": {"schemas": []}, + } + errors = sync.validate_map(map_data, index) + assert len(errors) == 1 + assert "file not found" in errors[0] + + def test_symbol_not_found_is_an_error(self, repo: Path): + _write_fixture_repo(repo) + sync = load_sync(repo) + index = sync.build_sdk_index(sync.SRC_ROOT) + map_data: dict[str, Any] = { + "enums": [], + "types": [{"spec": "X", "sdk": [{"file": "src/blindpay/resources/sample.py", "symbol": "DoesNotExist"}]}], + "ignore": {"schemas": []}, + } + errors = sync.validate_map(map_data, index) + assert len(errors) == 1 + assert "not found anywhere" in errors[0] + + def test_symbol_found_but_in_a_different_file_is_an_error(self, repo: Path): + """This is the exact bug class the audit caught for real: PaymentMethod + exists, just not in the file the map claims.""" + _write_fixture_repo(repo) + sync = load_sync(repo) + index = sync.build_sdk_index(sync.SRC_ROOT) + map_data: dict[str, Any] = { + "enums": [ + { + "spec": {"schema": "X", "property": "y"}, + "sdk": {"file": "src/blindpay/resources/sample.py", "symbol": "Color"}, + } + ], + "types": [], + "ignore": {"schemas": []}, + } + errors = sync.validate_map(map_data, index) + assert len(errors) == 1 + assert "not found in src/blindpay/resources/sample.py" in errors[0] + + +# --------------------------------------------------------------------------- # +# NEEDS_HUMAN classification (old-vs-new diff) +# --------------------------------------------------------------------------- # + + +class TestNeedsHuman: + def _map(self) -> dict[str, Any]: + return { + "enums": [ + { + "spec": {"schema": "ColorOut", "property": "color"}, + "sdk": {"file": "src/blindpay/types.py", "symbol": "Color"}, + } + ], + "types": [{"spec": "PlainOut", "sdk": [{"file": "src/blindpay/resources/sample.py", "symbol": "Plain"}]}], + "ignore": {"schemas": []}, + } + + def test_enum_member_removed_is_needs_human(self, repo: Path): + _write_fixture_repo(repo) + sync = load_sync(repo) + index = sync.build_sdk_index(sync.SRC_ROOT) + old = base_schema( + {"ColorOut": {"properties": {"color": {"type": "string", "enum": ["red", "blue"]}}}}, + {"/x": {"get": op(ref_out="ColorOut")}}, + ) + new = base_schema( + {"ColorOut": {"properties": {"color": {"type": "string", "enum": ["red"]}}}}, + {"/x": {"get": op(ref_out="ColorOut")}}, + ) + problems = sync.diff_removals_and_changes(old, new, self._map(), index) + assert any(p.kind == "enum_member_removed" for p in problems) + + def test_property_removed_is_needs_human(self, repo: Path): + _write_fixture_repo(repo) + sync = load_sync(repo) + index = sync.build_sdk_index(sync.SRC_ROOT) + old = base_schema( + {"PlainOut": {"properties": {"id": {"type": "string"}, "name": {"type": "string"}}}}, + {"/x": {"get": op(ref_out="PlainOut")}}, + ) + new = base_schema( + {"PlainOut": {"properties": {"id": {"type": "string"}}}}, {"/x": {"get": op(ref_out="PlainOut")}} + ) + problems = sync.diff_removals_and_changes(old, new, self._map(), index) + assert any(p.kind == "property_removed" for p in problems) + + def test_schema_removed_is_needs_human(self, repo: Path): + _write_fixture_repo(repo) + sync = load_sync(repo) + index = sync.build_sdk_index(sync.SRC_ROOT) + old = base_schema( + {"PlainOut": {"properties": {"id": {"type": "string"}}}}, {"/x": {"get": op(ref_out="PlainOut")}} + ) + new = base_schema({}, {}) + problems = sync.diff_removals_and_changes(old, new, self._map(), index) + assert any(p.kind == "schema_removed" for p in problems) + + def test_required_ness_change_is_needs_human(self, repo: Path): + _write_fixture_repo(repo) + sync = load_sync(repo) + index = sync.build_sdk_index(sync.SRC_ROOT) + old = base_schema( + {"PlainOut": {"properties": {"id": {"type": "string"}}, "required": []}}, + {"/x": {"get": op(ref_out="PlainOut")}}, + ) + new = base_schema( + {"PlainOut": {"properties": {"id": {"type": "string"}}, "required": ["id"]}}, + {"/x": {"get": op(ref_out="PlainOut")}}, + ) + problems = sync.diff_removals_and_changes(old, new, self._map(), index) + assert any(p.kind == "required_change" for p in problems) + + def test_type_change_is_needs_human(self, repo: Path): + _write_fixture_repo(repo) + sync = load_sync(repo) + index = sync.build_sdk_index(sync.SRC_ROOT) + old = base_schema( + {"PlainOut": {"properties": {"id": {"type": "string"}}}}, {"/x": {"get": op(ref_out="PlainOut")}} + ) + new = base_schema( + {"PlainOut": {"properties": {"id": {"type": "integer"}}}}, {"/x": {"get": op(ref_out="PlainOut")}} + ) + problems = sync.diff_removals_and_changes(old, new, self._map(), index) + assert any(p.kind == "type_change" for p in problems) + + def test_new_operation_is_needs_human(self, repo: Path): + _write_fixture_repo(repo) + sync = load_sync(repo) + index = sync.build_sdk_index(sync.SRC_ROOT) + old = base_schema({}, {}) + new = base_schema({}, {"/new-path": {"get": op()}}) + problems = sync.diff_removals_and_changes(old, new, self._map(), index) + assert any(p.kind == "new_operation" and "/new-path" in p.detail for p in problems) + + def test_new_unmapped_schema_is_needs_human(self, repo: Path): + _write_fixture_repo(repo) + sync = load_sync(repo) + index = sync.build_sdk_index(sync.SRC_ROOT) + old = base_schema({}, {}) + new = base_schema( + {"BrandNewOut": {"properties": {"a": {"type": "string"}}}}, {"/x": {"get": op(ref_out="BrandNewOut")}} + ) + problems = sync.diff_removals_and_changes(old, new, self._map(), index) + assert any(p.kind == "new_schema" for p in problems) + + def test_property_added_on_unmapped_schema_is_needs_human(self, repo: Path): + _write_fixture_repo(repo) + sync = load_sync(repo) + index = sync.build_sdk_index(sync.SRC_ROOT) + # UnmappedOut is reachable in both old and new (not "new_schema"), but gains a field + old = base_schema( + {"UnmappedOut": {"properties": {"a": {"type": "string"}}}}, {"/u": {"get": op(ref_out="UnmappedOut")}} + ) + new = base_schema( + {"UnmappedOut": {"properties": {"a": {"type": "string"}, "b": {"type": "string"}}}}, + {"/u": {"get": op(ref_out="UnmappedOut")}}, + ) + problems = sync.diff_removals_and_changes(old, new, self._map(), index) + assert any(p.kind == "property_on_unmapped_schema" for p in problems) + + def test_fan_out_ambiguous_target_is_needs_human(self, repo: Path): + _write_fixture_repo(repo) + write( + repo, + "src/blindpay/resources/other.py", + "from typing_extensions import TypedDict\n\n\nclass OtherPlain(TypedDict):\n id: str\n", + ) + map_data: dict[str, Any] = { + "enums": [], + "types": [ + { + "spec": "FanOut", + "sdk": [ + {"file": "src/blindpay/resources/sample.py", "symbol": "Plain"}, + {"file": "src/blindpay/resources/other.py", "symbol": "OtherPlain"}, + ], + } + ], + "ignore": {"schemas": []}, + } + sync = load_sync(repo) + index = sync.build_sdk_index(sync.SRC_ROOT) + gap = sync.PropertyGap( + schema_names=["FanOut"], + path=None, + sdk_sites=map_data["types"][0]["sdk"], + missing={"new_field": {"type": "string"}}, + ) + applied, needs_human = sync.apply_property_change(gap, index) + assert applied == [] + assert any(n.kind == "fan_out_target_ambiguous" for n in needs_human) + + def test_unresolvable_type_is_needs_human(self, repo: Path): + _write_fixture_repo(repo) + map_data: dict[str, Any] = { + "enums": [], + "types": [{"spec": "PlainOut", "sdk": [{"file": "src/blindpay/resources/sample.py", "symbol": "Plain"}]}], + "ignore": {"schemas": []}, + } + sync = load_sync(repo) + index = sync.build_sdk_index(sync.SRC_ROOT) + gap = sync.PropertyGap( + schema_names=["PlainOut"], + path=None, + sdk_sites=map_data["types"][0]["sdk"], + missing={"weird": {"type": "object", "properties": {}}}, + ) + applied, needs_human = sync.apply_property_change(gap, index) + assert applied == [] + assert any(n.kind == "type_unresolvable" for n in needs_human) + + +# --------------------------------------------------------------------------- # +# Full apply flow: bump classification, idempotency, determinism +# --------------------------------------------------------------------------- # + + +class TestApplyFlow: + def _setup(self, repo: Path): + _write_fixture_repo(repo) + map_data: dict[str, Any] = { + "enums": [ + { + "spec": {"schema": "ColorOut", "property": "color"}, + "sdk": {"file": "src/blindpay/types.py", "symbol": "Color"}, + } + ], + "types": [{"spec": "PlainOut", "sdk": [{"file": "src/blindpay/resources/sample.py", "symbol": "Plain"}]}], + "ignore": {"schemas": []}, + } + _write_map_and_unmodeled(repo, map_data) + old_spec = base_schema( + { + "ColorOut": {"properties": {"color": {"type": "string", "enum": ["red", "blue"]}}}, + "PlainOut": {"properties": {"id": {"type": "string"}, "name": {"type": ["string", "null"]}}}, + }, + {"/c": {"get": op(ref_out="ColorOut")}, "/p": {"get": op(ref_out="PlainOut")}}, + ) + write(repo, ".api-sync/spec-snapshot.json", json.dumps(old_spec)) + return map_data, old_spec + + def test_enum_only_change_bumps_minor(self, repo: Path): + self._setup(repo) + new_spec = json.loads((repo / ".api-sync/spec-snapshot.json").read_text()) + new_spec["components"]["schemas"]["ColorOut"]["properties"]["color"]["enum"].append("green") + write(repo, ".api-sync/spec-current.json", json.dumps(new_spec)) + + sync = load_sync(repo) + exit_code = sync.cmd_apply(sync.DEFAULT_SPEC_PATH, None) + assert exit_code == 0 + + color_src = (repo / "src/blindpay/types.py").read_text() + assert "green" in color_src + + def test_property_only_change_bumps_patch(self, repo: Path): + self._setup(repo) + new_spec = json.loads((repo / ".api-sync/spec-snapshot.json").read_text()) + new_spec["components"]["schemas"]["PlainOut"]["properties"]["extra"] = {"type": "string"} + write(repo, ".api-sync/spec-current.json", json.dumps(new_spec)) + + report_path = repo / "report.json" + sync = load_sync(repo) + exit_code = sync.cmd_apply(sync.DEFAULT_SPEC_PATH, report_path) + assert exit_code == 0 + report = json.loads(report_path.read_text()) + assert report["bump"] == "patch" + + sample_src = (repo / "src/blindpay/resources/sample.py").read_text() + assert ( + "extra: NotRequired[str]" in sample_src + or "extra: Optional[str]" in sample_src + or "extra: str" in sample_src + ) + + def test_apply_twice_is_idempotent(self, repo: Path): + self._setup(repo) + new_spec = json.loads((repo / ".api-sync/spec-snapshot.json").read_text()) + new_spec["components"]["schemas"]["ColorOut"]["properties"]["color"]["enum"].append("green") + new_spec["components"]["schemas"]["PlainOut"]["properties"]["extra"] = {"type": "string"} + write(repo, ".api-sync/spec-current.json", json.dumps(new_spec)) + + sync = load_sync(repo) + first_report = repo / "first.json" + assert sync.cmd_apply(sync.DEFAULT_SPEC_PATH, first_report) == 0 + first = json.loads(first_report.read_text()) + assert len(first["applied"]) == 2 + + second_report = repo / "second.json" + assert sync.cmd_apply(sync.DEFAULT_SPEC_PATH, second_report) == 0 + second = json.loads(second_report.read_text()) + assert second["applied"] == [] + assert second["bump"] is None + + def test_check_is_green_after_apply(self, repo: Path): + """--check reconciles against spec-snapshot.json directly (state, not a + diff): pending drift is whatever the already-committed baseline says is + true but the code has not caught up to, exactly like the real + BankingPartner/portage gap this project found (already in the + committed spec-snapshot.json, no new spec delivery needed to see it).""" + self._setup(repo) + # Simulate drift baked into the baseline itself: the snapshot already + # knows about "green", the code does not. + snapshot = json.loads((repo / ".api-sync/spec-snapshot.json").read_text()) + snapshot["components"]["schemas"]["ColorOut"]["properties"]["color"]["enum"].append("green") + write(repo, ".api-sync/spec-snapshot.json", json.dumps(snapshot)) + write(repo, ".api-sync/spec-current.json", json.dumps(snapshot)) + + sync = load_sync(repo) + assert sync.cmd_check(None) == 1 # pending drift before apply + assert sync.cmd_apply(sync.DEFAULT_SPEC_PATH, None) == 0 + assert sync.cmd_check(None) == 0 # green after apply + + +class TestDeterminism: + def test_two_independent_applies_produce_byte_identical_trees(self, tmp_path: Path): + def build(root: Path) -> None: + _write_fixture_repo(root) + map_data: dict[str, Any] = { + "enums": [ + { + "spec": {"schema": "ColorOut", "property": "color"}, + "sdk": {"file": "src/blindpay/types.py", "symbol": "Color"}, + } + ], + "types": [ + {"spec": "PlainOut", "sdk": [{"file": "src/blindpay/resources/sample.py", "symbol": "Plain"}]} + ], + "ignore": {"schemas": []}, + } + _write_map_and_unmodeled(root, map_data) + old_spec = base_schema( + { + "ColorOut": {"properties": {"color": {"type": "string", "enum": ["red", "blue"]}}}, + "PlainOut": {"properties": {"id": {"type": "string"}}}, + }, + {"/c": {"get": op(ref_out="ColorOut")}, "/p": {"get": op(ref_out="PlainOut")}}, + ) + write(root, ".api-sync/spec-snapshot.json", json.dumps(old_spec)) + new_spec = json.loads(json.dumps(old_spec)) + new_spec["components"]["schemas"]["ColorOut"]["properties"]["color"]["enum"].append("green") + new_spec["components"]["schemas"]["PlainOut"]["properties"]["extra"] = {"type": "string"} + write(root, ".api-sync/spec-current.json", json.dumps(new_spec)) + + root_a = tmp_path / "a" + root_b = tmp_path / "b" + build(root_a) + build(root_b) + + sync_a = load_sync(root_a) + sync_b = load_sync(root_b) + assert sync_a.cmd_apply(sync_a.DEFAULT_SPEC_PATH, None) == 0 + assert sync_b.cmd_apply(sync_b.DEFAULT_SPEC_PATH, None) == 0 + + for rel in ["src/blindpay/types.py", "src/blindpay/resources/sample.py", ".api-sync/spec-snapshot.json"]: + assert (root_a / rel).read_bytes() == (root_b / rel).read_bytes(), rel + + +# --------------------------------------------------------------------------- # +# unmodeled.json loading/validation +# --------------------------------------------------------------------------- # + + +class TestUnmodeledLoading: + def test_property_entry_requires_all_keys(self, repo: Path): + write(repo, ".api-sync/unmodeled.json", json.dumps([{"kind": "property", "schema": "X", "field": "y"}])) + sync = load_sync(repo) + with pytest.raises(SystemExit): + sync.load_unmodeled() + + def test_enum_entry_requires_all_keys(self, repo: Path): + write(repo, ".api-sync/unmodeled.json", json.dumps([{"kind": "enum", "enum": "X"}])) + sync = load_sync(repo) + with pytest.raises(SystemExit): + sync.load_unmodeled() + + def test_unknown_kind_rejected(self, repo: Path): + write(repo, ".api-sync/unmodeled.json", json.dumps([{"kind": "bogus"}])) + sync = load_sync(repo) + with pytest.raises(SystemExit): + sync.load_unmodeled() + + def test_valid_entries_load(self, repo: Path): + write( + repo, + ".api-sync/unmodeled.json", + json.dumps( + [ + {"kind": "property", "schema": "X", "field": "y", "reason": "r", "owner": "eric@blindpay.com"}, + {"kind": "enum", "enum": "X", "missing_values": ["a"], "reason": "r", "owner": "eric@blindpay.com"}, + ] + ), + ) + sync = load_sync(repo) + assert len(sync.load_unmodeled()) == 2 + + +# --------------------------------------------------------------------------- # +# Reachability +# --------------------------------------------------------------------------- # + + +class TestReachability: + def test_orphan_schema_excluded_by_construction(self): + sync = load_sync(Path("/nonexistent")) + spec = base_schema( + { + "Reachable": {"properties": {"a": {"type": "string"}}}, + "Orphan": {"properties": {"b": {"type": "string"}}}, + }, + {"/x": {"get": op(ref_out="Reachable")}}, + ) + reachable = sync.compute_reachable_schemas(spec) + assert reachable == {"Reachable"} + + def test_nested_ref_transitively_reachable(self): + sync = load_sync(Path("/nonexistent")) + spec = base_schema( + { + "Reachable": {"properties": {"child": {"$ref": "#/components/schemas/Child"}}}, + "Child": {"properties": {"a": {"type": "string"}}}, + }, + {"/x": {"get": op(ref_out="Reachable")}}, + ) + reachable = sync.compute_reachable_schemas(spec) + assert reachable == {"Reachable", "Child"} diff --git a/uv.lock b/uv.lock index eb46cea..7a8c709 100644 --- a/uv.lock +++ b/uv.lock @@ -27,7 +27,7 @@ wheels = [ [[package]] name = "blindpay" -version = "2.5.0" +version = "3.0.0" source = { editable = "." } dependencies = [ { name = "httpx" }, From ae06c066c27f08e525fd88a3d5ff691146da019a Mon Sep 17 00:00:00 2001 From: Eric Viana Date: Mon, 3 Aug 2026 20:24:52 -0300 Subject: [PATCH 2/9] feat: apply pending spec drift found by the deterministic sync patcher Ran .api-sync/sync.py --apply against the current public spec. All three changes were already present in the committed spec-snapshot.json (pending drift the code never caught up to, not new spec surface): - BankingPartner (types.py): spec's banking_partner enum on VirtualAccountOut/CreateVirtualAccountIn has 5 values; the Literal only had 4 (missing "portage"). - PaymentMethod (resources/payins/quotes.py): CreatePayinQuoteInput.payment_method resolves to this file's own local Literal (6 values), not the shared types.py one; the spec's CreatePayinQuoteIn.payment_method enum has 9 (missing "transfers", "pse", "international_swift"). Confirmed against blindpay-v2 and the other 4 SDKs that this is staleness, not a deliberate subset. - refund_wallet_address (resources/quotes/quotes.py): new optional field on QuoteIn, added to CreateQuoteInput. Updated tests/resources/test_quotes.py's fixtures for the new required-key (CreateQuoteInput is a total=True TypedDict, so every call site must supply every key). `.api-sync/sync.py --check` is now green. Two independent applies of this same input produced byte-identical trees (determinism proof). Claude-Session: https://claude.ai/code/session_01F1stiNzuNtJXoXtiW9ZCbs --- .api-sync/spec-snapshot.json | 76554 +++++++++++----------- src/blindpay/resources/payins/quotes.py | 2 +- src/blindpay/resources/quotes/quotes.py | 1 + src/blindpay/types.py | 2 +- tests/resources/test_quotes.py | 4 + 5 files changed, 38364 insertions(+), 38199 deletions(-) diff --git a/.api-sync/spec-snapshot.json b/.api-sync/spec-snapshot.json index 2557f54..e0de32b 100644 --- a/.api-sync/spec-snapshot.json +++ b/.api-sync/spec-snapshot.json @@ -1,998 +1,1247 @@ { - "openapi": "3.1.0", - "info": { - "version": "1.0.0", - "title": "BlindPay API" - }, - "tags": [ - { - "name": "Instances" - }, - { - "name": "Terms Of Service" - }, - { - "name": "Customers" - }, - { - "name": "Bank Accounts" - }, - { - "name": "Virtual Accounts" - }, - { - "name": "Blockchain Wallets" - }, - { - "name": "Offramp Wallets" - }, - { - "name": "Payouts Quotes" - }, - { - "name": "Payouts" - }, - { - "name": "Payin Quotes" - }, - { - "name": "Payins" - }, - { - "name": "Wallets" - }, - { - "name": "Transfer Quotes" - }, - { - "name": "Transfers" - }, - { - "name": "Webhook Endpoints" - }, - { - "name": "Fees" - }, - { - "name": "Partner Fees" - }, - { - "name": "Upload" - }, - { - "name": "Available" - }, - { - "name": "Solana" - }, - { - "name": "Stellar" - }, - { - "name": "Errors", - "description": "## Error responses\n\nEvery error response uses this envelope:\n\n```json\n{\n \"success\": false,\n \"code\": \"QUOTES_EXPIRED\",\n \"message\": \"quote_expired\",\n \"description\": \"This quote has expired. Request a new quote and try again.\",\n \"errors\": [],\n \"trace_id\": \"0af7651916cd43dd8448eb211c80319c\"\n}\n```\n\n- `code` is a stable identifier, safe to build programmatic handling on.\n- `message` is a legacy machine string kept for backward compatibility. Prefer `code`.\n- `description` is human-readable text, safe to show to end users.\n- `trace_id` identifies the request. Include it when contacting support.\n\nRetry semantics per code: `retryable` means the same request can be retried as is, `terminal` means do not retry, and `actionable` means the request succeeds only after you fix something (for example funding a balance or correcting bank details).\n\nThe Status column shows the HTTP status a code typically responds with; the per-endpoint error tabs list the exact status each endpoint returns.\n\n### Error codes\n\n| Code | Status | Retry | Description |\n| --- | --- | --- | --- |\n| `AUTH_EMAIL_ALREADY_REGISTERED` | 409 | terminal | This email address is already registered. |\n| `AUTH_FORBIDDEN` | 403 | terminal | You do not have permission to perform this action. |\n| `AUTH_IP_BLOCKED` | 403 | terminal | Requests from this IP address are not allowed for this API key. |\n| `AUTH_RATE_LIMITED` | 429 | retryable | Too many requests. Wait a moment and try again. |\n| `AUTH_SERVICE_UNAVAILABLE` | 503 | retryable | The authentication service is temporarily unavailable. Try again shortly. |\n| `AUTH_TOKEN_INVALID` | 401 | actionable | This link or token is invalid or has expired. Request a new one. |\n| `AUTH_UNAUTHORIZED` | 401 | actionable | Authentication failed. Check your API key or session and try again. |\n| `BANK_ACCOUNTS_INCOMPLETE` | 400 | actionable | The bank account details are incomplete for this payment method. Provide the missing fields. |\n| `BANK_ACCOUNTS_INVALID_BANK_CODE` | 400 | actionable | The bank code provided is not valid for this payment rail. The message lists where to fetch the valid codes. |\n| `BANK_ACCOUNTS_INVALID_ROUTING` | 400 | actionable | The routing number provided is not valid. Check the number and try again. |\n| `BANK_ACCOUNTS_NOT_APPROVED` | 403 | actionable | This bank account is not approved yet. |\n| `BANK_ACCOUNTS_NOT_FOUND` | 404 | actionable | The requested bank account was not found. |\n| `BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED` | 400 | terminal | This banking option is not supported for this operation. |\n| `BANK_ACCOUNTS_RTP_NOT_SUPPORTED` | 400 | terminal | The provided routing number does not support instant payments. |\n| `BILLING_INVOICE_NOT_FOUND` | 404 | actionable | The requested invoice was not found. |\n| `BILLING_INVOICE_NOT_PAYABLE` | 409 | terminal | This invoice cannot be paid or collected in its current state. |\n| `BILLING_NOT_AVAILABLE` | 403 | terminal | Billing is not available for development instances. |\n| `BLOCKCHAIN_CALL_FAILED` | 400 | retryable | The blockchain call could not be completed. Check the transaction details and try again. |\n| `BLOCKCHAIN_NETWORK_NOT_SUPPORTED` | 400 | terminal | This network or token combination is not supported for this operation. |\n| `BLOCKCHAIN_TOKEN_NOT_SUPPORTED` | 400 | actionable | This token is not supported for this instance type. Development instances settle in USDB; production instances settle in USDC or USDT. |\n| `BLOCKCHAIN_TX_FAILED` | 502 | retryable | The blockchain transaction failed. Try again, and contact support if the problem persists. |\n| `COMPLIANCE_RFI_IN_PROGRESS` | 409 | actionable | An information request is already in progress. Resolve it before continuing. |\n| `COMPLIANCE_RFI_INVALID` | 400 | actionable | The information request could not be processed. Check the submitted fields. |\n| `CUSTOMERS_ALREADY_APPROVED` | 409 | terminal | This customer is already approved. |\n| `CUSTOMERS_BUSINESS_ENHANCED_NOT_AVAILABLE` | 400 | terminal | Enhanced verification is not available for business customers. Use standard verification (kyc_type: standard) for businesses. |\n| `CUSTOMERS_COUNTRY_NOT_SUPPORTED` | 400 | terminal | This country is not supported for this operation. |\n| `CUSTOMERS_ENHANCED_KYC_REQUIRED` | 400 | actionable | Individuals from high-risk countries must use enhanced verification (kyc_type: enhanced); standard verification is not available for them. See https://www.blindpay.com/docs/kb/supported-countries for country tiers. |\n| `CUSTOMERS_ID_DOCUMENT_INVALID` | 400 | actionable | The identity document is not an accepted passport or national ID. Provide a valid passport or national ID for this customer (a driver license is not accepted for high-risk countries). |\n| `CUSTOMERS_INVALID_DATA` | 422 | actionable | The customer data was rejected by the banking provider. Check the highlighted fields and try again. |\n| `CUSTOMERS_INVALID_PHONE` | 400 | actionable | The phone number provided is not valid. Check the number and try again. |\n| `CUSTOMERS_INVALID_TAX_ID` | 400 | actionable | The tax ID provided is not valid. Check the value and try again. |\n| `CUSTOMERS_KYC_NOT_APPROVED` | 403 | actionable | This customer has not completed verification yet. Complete the verification before continuing. |\n| `CUSTOMERS_NOT_FOUND` | 404 | actionable | The requested customer was not found. |\n| `CUSTOMERS_ONBOARDING_INCOMPLETE` | 400 | actionable | Onboarding is not complete yet. Finish the remaining steps before continuing. |\n| `DATA_INTEGRITY_ERROR` | 422 | terminal | This record could not be loaded because it contains invalid stored data. Contact support with the ID below. |\n| `FEES_NOT_FOUND` | 404 | actionable | The requested fee configuration was not found. |\n| `FEES_PARTNER_FEE_EXCEEDED` | 400 | actionable | The partner fee exceeds the allowed maximum for this transaction. |\n| `FILES_ANALYSIS_FAILED` | 502 | retryable | The document could not be analyzed. Try again, and contact support if the problem persists. |\n| `FILES_EMPTY` | 400 | actionable | The uploaded file is empty. Upload a valid file. |\n| `FILES_TOO_LARGE` | 400 | actionable | The file is too large. Upload a smaller file. |\n| `FILES_TYPE_NOT_ALLOWED` | 400 | actionable | This file type is not allowed. Upload a supported file type. |\n| `FILES_UNREADABLE` | 400 | actionable | We could not read the uploaded file. Check the file and try again. |\n| `INSTANCES_BLOCKED` | 403 | terminal | This account is blocked. Contact support for assistance. |\n| `INSTANCES_LIMIT_REACHED` | 400 | terminal | You reached the maximum number of instances allowed for your account. |\n| `INSTANCES_NOT_FOUND` | 404 | actionable | The requested instance was not found. |\n| `INTERNAL_ERROR` | 500 | retryable | Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists. |\n| `LIMITS_AMOUNT_OUT_OF_RANGE` | 400 | actionable | The amount is outside the allowed range. The message includes the allowed range. |\n| `LIMITS_VOLUME_EXCEEDED` | 400 | actionable | You exceeded your transaction volume limit. The message includes the remaining amount available. |\n| `PAYINS_ALREADY_TERMINAL` | 409 | terminal | This payin already reached a final status and cannot be changed. |\n| `PAYINS_METHOD_NOT_SUPPORTED` | 400 | terminal | This payment method is not supported for this operation. |\n| `PAYINS_NOT_FOUND` | 404 | actionable | The requested payin was not found. |\n| `PAYINS_TAX_ID_REQUIRED` | 400 | actionable | A tax ID is required for this payment method. Provide the tax ID and try again. |\n| `PAYOUTS_ALLOWANCE_NOT_CONFIRMED` | 400 | retryable | The token approval for this payout has not been confirmed on-chain yet, or the approved amount is lower than the payout amount. Wait for the approval transaction to confirm and execute the quote again. |\n| `PAYOUTS_AMOUNT_BELOW_MINIMUM` | 400 | actionable | The amount is below the minimum for this payment rail. |\n| `PAYOUTS_DOCUMENTS_NOT_ACCEPTED` | 400 | terminal | Document upload is only available for international wire payouts. |\n| `PAYOUTS_INSUFFICIENT_BALANCE` | 400 | actionable | There is not enough balance to complete this payout. Fund your balance and try again. |\n| `PAYOUTS_NOT_FOUND` | 404 | actionable | The requested payout was not found. |\n| `QUOTES_ALREADY_USED` | 409 | actionable | This quote was already used. Request a new quote. |\n| `QUOTES_EXPIRED` | 400 | actionable | This quote has expired. Request a new quote and try again. |\n| `QUOTES_INSUFFICIENT_LIQUIDITY` | 400 | actionable | There is not enough market liquidity to fill this amount right now. Try a smaller amount or try again later. |\n| `QUOTES_INVALID_STATE` | 400 | actionable | This quote cannot be authorized in its current state. Request a new quote and try again. |\n| `QUOTES_NOT_FOUND` | 404 | actionable | The requested quote was not found. |\n| `QUOTES_OTC_NOT_SUPPORTED` | 400 | actionable | This OTC configuration is not supported. OTC requires BRL with USDT, and either the sender amount with fees not covered, or the receiver amount with fees covered. |\n| `QUOTES_RATE_UNAVAILABLE` | 502 | retryable | An exchange rate is temporarily unavailable. Try again shortly. |\n| `TOS_ALREADY_ACCEPTED` | 409 | terminal | These terms of service were already accepted. |\n| `TOS_NOT_ACCEPTED` | 400 | actionable | The terms of service must be accepted before continuing. |\n| `TOS_NOT_FOUND` | 404 | actionable | The requested terms of service record was not found. |\n| `TRANSFERS_NOT_ENABLED` | 403 | terminal | Wallets and transfers are not enabled for this account. Contact support to enable them. |\n| `VALIDATION_FAILED` | 400 | actionable | The request contains invalid fields. Check the errors list for details. |\n| `VALIDATION_INVALID_REQUEST` | 400 | actionable | The request is not valid for this operation. Check the parameters and try again. |\n| `VALIDATION_MISSING_BODY` | 400 | actionable | The request body is missing or malformed. Send valid JSON with the Content-Type: application/json header. |\n| `VALIDATION_MISSING_REQUIRED_FIELDS` | 400 | actionable | Required fields are missing. Provide the missing fields and try again. |\n| `VIRTUAL_ACCOUNTS_DISABLED` | 403 | terminal | Virtual accounts are not enabled for this account. Contact support to enable them. |\n| `VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED` | 400 | actionable | Additional documents are required to create this virtual account. Upload the requested documents. |\n| `VIRTUAL_ACCOUNTS_NOT_APPROVED` | 403 | actionable | This virtual account is not approved yet. |\n| `VIRTUAL_ACCOUNTS_NOT_FOUND` | 404 | actionable | The requested virtual account was not found. |\n| `VIRTUAL_ACCOUNTS_PROVISION_FAILED` | 502 | retryable | We could not create the virtual account. Try again, and contact support if the problem persists. |\n| `VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED` | 400 | terminal | Virtual accounts are not available for this country or region. |\n| `WALLETS_ATTACHED_TO_VIRTUAL_ACCOUNT` | 400 | terminal | This wallet is attached to a virtual account and cannot be deleted. Delete the virtual account first. |\n| `WALLETS_BALANCE_UNAVAILABLE` | 503 | retryable | The wallet balance is temporarily unavailable. Try again shortly. |\n| `WALLETS_NOT_FOUND` | 404 | actionable | The requested wallet was not found. |\n| `WEBHOOKS_LIMIT_REACHED` | 400 | terminal | You reached the maximum number of webhook endpoints. |\n| `WEBHOOKS_SIGNATURE_INVALID` | 401 | terminal | The webhook signature is missing or invalid. |\n| `WEBHOOKS_URL_INVALID` | 400 | actionable | The webhook URL is not valid. Use a reachable HTTPS URL. |\n" - } - ], - "security": [ - { - "Bearer": [] - } - ], "components": { - "securitySchemes": { - "Bearer": { - "type": "http", - "scheme": "bearer", - "bearerFormat": "JWT" - } - }, + "parameters": {}, "schemas": { - "BlockchainWalletWebhookOut": { - "type": "object", + "AcceptTosIn": { "properties": { - "webhook_event": { - "type": "string", - "enum": [ - "blockchainWallet.new" + "customer_id": { + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": [ + "string", + "null" ] }, - "id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "bw_000000000000" + "idempotency_key": { + "example": "123e4567-e89b-12d3-a456-426614174000", + "format": "uuid", + "type": "string" }, - "name": { + "session": { "type": [ "string", "null" - ], - "example": "Wallet Display Name" + ] }, - "network": { + "session_token": { + "example": "SESSION_TOKEN_FROM_INITIATE_TOS_RESPONSE", + "type": "string" + } + }, + "required": [ + "session_token", + "idempotency_key" + ], + "type": "object" + }, + "AcceptTosOut": { + "properties": { + "customer_id": { + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, "type": [ "string", "null" - ], + ] + }, + "idempotency_key": { + "example": "123e4567-e89b-12d3-a456-426614174000", + "format": "uuid", + "type": "string" + }, + "tos_id": { + "example": "to_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "version": { "enum": [ - "base", - "sepolia", - "arbitrum_sepolia", - "base_sepolia", - "arbitrum", - "polygon", - "polygon_amoy", - "ethereum", - "stellar", - "stellar_testnet", - "tron", - "solana", - "solana_devnet" + "1.0.0", + "1.0.1" ], - "example": "polygon" - }, - "address": { + "example": "1.0.0", "type": [ "string", "null" + ] + } + }, + "required": [ + "tos_id", + "idempotency_key" + ], + "type": "object" + }, + "AdditionalInfoItem": { + "example": { + "label": "EIN_LETTER", + "value": "https://example.com/ein.pdf" + }, + "properties": { + "label": { + "enum": [ + "EIN_LETTER", + "KYC_PROVIDER_DOCUMENT", + "FLOW_OF_FUNDS", + "BANK_STATEMENT", + "TAX_RETURN", + "AUDITED_FINANCIALS", + "OPERATING_AGREEMENT", + "BOARD_RESOLUTION", + "CERTIFICATE_OF_GOOD_STANDING", + "BUSINESS_LICENSE", + "MSB_LICENSE", + "POWER_OF_ATTORNEY", + "TRUST_DEED", + "SHAREHOLDER_REGISTRY", + "BENEFICIAL_OWNER_DECLARATION", + "COMPLIANCE_QUESTIONNAIRE", + "PROOF_OF_EMPLOYMENT", + "REFERENCE_LETTER", + "OTHER" ], - "example": "0xDD6a3aD0949396e57C7738ba8FC1A46A5a1C372C" + "type": "string" }, - "signature_tx_hash": { + "value": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "label", + "value" + ], + "type": "object" + }, + "AddonItemSchema": { + "properties": { + "amount": { + "description": "Addon amount in cents", + "example": 50000, + "type": "integer" + }, + "description": { + "description": "Addon description", + "example": "Swift", "type": [ "string", "null" - ], - "example": "0x3c499c542cef5e3811e1192ce70d8cc03d5c3359" + ] }, - "is_account_abstraction": { - "type": [ - "boolean", - "null" - ], - "example": false + "id": { + "description": "Recurring item or invoice item ID", + "example": "ri_000000000000", + "type": "string" }, - "customer_id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "re_000000000000" + "name": { + "description": "Addon name", + "example": "Swift", + "type": "string" + }, + "quantity": { + "description": "Addon quantity", + "example": 1, + "type": "integer" } }, "required": [ - "webhook_event", "id", "name", - "network", - "customer_id" - ] + "amount", + "quantity" + ], + "type": "object" }, - "BankAccountWebhookOut": { - "type": "object", + "ApiKeyPublic": { "properties": { - "webhook_event": { - "type": "string", - "enum": [ - "bankAccount.new" + "created_at": { + "example": "2021-01-01T00:00:00Z", + "format": "date-time", + "type": [ + "string", + "null" ] }, "id": { - "type": "string", + "example": "ap_000000000000", + "maxLength": 15, "minLength": 15, + "type": "string" + }, + "instance_id": { + "example": "in_000000000000", "maxLength": 15, - "example": "ba_000000000000" + "minLength": 15, + "type": "string" }, - "type": { - "type": "string", - "enum": [ - "wire", - "ach", - "pix", - "pix_safe", - "ted", - "spei_bitso", - "transfers_bitso", - "ach_cop_bitso", - "international_swift", - "rtp", - "sepa" + "ip_whitelist": { + "example": [ + "127.0.0.1", + "192.168.0.1" ], - "example": "wire" + "items": { + "format": "ip", + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "last_used_at": { + "example": "2021-01-01T00:00:00Z" }, "name": { - "type": "string", - "example": "Bank Account Name" + "example": "API Key Name", + "minLength": 1, + "type": "string" }, - "pix_key": { + "permission": { + "enum": [ + "full_access" + ], + "example": "full_access", + "type": "string" + }, + "token": { + "example": "token", + "type": "string" + }, + "updated_at": { + "example": "2021-01-01T00:00:00Z", + "format": "date-time", "type": [ "string", "null" - ], - "example": "14947677768" - }, - "beneficiary_name": { + ] + } + }, + "required": [ + "id", + "name", + "permission", + "token", + "instance_id" + ], + "type": "object" + }, + "AuditActor": { + "properties": { + "email": { "type": [ "string", "null" - ], - "maxLength": 128, - "example": "Individual full name or business name" + ] }, - "routing_number": { + "id": { "type": [ "string", "null" - ], - "example": "012345678" + ] }, - "account_number": { + "image_url": { "type": [ "string", "null" - ], - "example": "1001001234" + ] }, - "account_type": { + "name": { "type": [ "string", "null" - ], + ] + } + }, + "required": [ + "id", + "name", + "email", + "image_url" + ], + "type": [ + "object", + "null" + ] + }, + "AuditLog": { + "properties": { + "actor_type": { "enum": [ - "checking", - "saving" + "user", + "api_key" ], - "example": "checking" + "example": "user", + "type": "string" }, - "account_class": { + "api_key_id": { + "example": null, "type": [ "string", "null" - ], - "enum": [ - "individual", - "business" - ], - "example": "individual" + ] }, - "address_line_1": { + "country": { + "example": "US", "type": [ "string", "null" - ], - "example": "Address line 1" + ] }, - "address_line_2": { + "created_at": { + "example": "2021-01-01T00:00:00Z", + "format": "date-time", "type": [ "string", "null" - ], - "example": "Address line 2" + ] }, - "city": { + "entity_id": { + "example": "pi_000000000000", + "type": "string" + }, + "entity_type": { + "example": "payin", + "type": "string" + }, + "feature": { + "example": "payin", + "type": "string" + }, + "has_passkey": { + "example": true, + "type": [ + "boolean", + "null" + ] + }, + "id": { + "example": "al_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "instance_id": { + "example": "in_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "ip_address": { + "example": "177.137.230.244", "type": [ "string", "null" + ] + }, + "metadata": { + "additionalProperties": {}, + "example": {}, + "type": "object" + }, + "operation": { + "enum": [ + "create", + "update", + "delete" ], - "example": "City" + "example": "create", + "type": "string" }, - "state_province_region": { + "request_id": { + "example": "abcd1234", "type": [ "string", "null" - ], - "example": "State/Province/Region" + ] }, - "country": { + "role": { + "example": "admin", + "type": "string" + }, + "user_agent": { + "example": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)", "type": [ "string", "null" + ] + }, + "user_id": { + "example": "us_000000000000", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id", + "instance_id", + "actor_type", + "user_id", + "api_key_id", + "role", + "feature", + "operation", + "entity_type", + "entity_id", + "metadata", + "ip_address", + "user_agent", + "country", + "has_passkey", + "request_id" + ], + "type": "object" + }, + "AuditLogOut": { + "allOf": [ + { + "$ref": "#/components/schemas/AuditLog" + }, + { + "properties": { + "actor": { + "$ref": "#/components/schemas/AuditActor" + } + }, + "required": [ + "actor" ], - "enum": [ - "AF", - "AL", - "DZ", - "AS", - "AD", - "AO", - "AI", - "AQ", - "AG", - "AR", - "AM", - "AW", - "AU", - "AT", - "AZ", - "BS", - "BH", - "BD", - "BB", - "BY", - "BE", - "BZ", - "BJ", - "BM", - "BT", - "BO", - "BQ", - "BA", - "BW", - "BV", - "BR", - "IO", - "BN", - "BG", - "BF", - "BI", - "CV", - "KH", - "CM", - "CA", - "KY", - "CF", - "TD", - "CL", - "CN", - "CX", - "CC", - "CO", - "KM", - "CD", - "CG", - "CK", - "CR", - "HR", - "CU", - "CW", - "CY", - "CZ", - "CI", - "DK", - "DJ", - "DM", - "DO", - "EC", - "EG", - "SV", - "GQ", - "ER", - "EE", - "SZ", - "ET", - "FK", - "FO", - "FJ", - "FI", - "FR", - "GF", - "PF", - "TF", - "GA", - "GM", - "GE", - "DE", - "GH", - "GI", - "GR", - "GL", - "GD", - "GP", - "GU", - "GT", - "GG", - "GN", - "GW", - "GY", - "HT", - "HM", - "VA", - "HN", - "HK", - "HU", - "IS", - "IN", - "ID", - "IR", - "IQ", - "IE", - "IM", - "IL", - "IT", - "JM", - "JP", - "JE", - "JO", - "KZ", - "KE", - "KI", - "KP", - "KR", - "KW", - "KG", - "LA", - "LV", - "LB", - "LS", - "LR", - "LY", - "LI", - "LT", - "LU", - "MO", - "MG", - "MW", - "MY", - "MV", - "ML", - "MT", - "MH", - "MQ", - "MR", - "MU", - "YT", - "MX", - "FM", - "MD", - "MC", - "MN", - "ME", - "MS", - "MA", - "MZ", - "MM", - "NA", - "NR", - "NP", - "NL", - "NC", - "NZ", - "NI", - "NE", - "NG", - "NU", - "NF", - "MP", - "NO", - "OM", - "PK", - "PW", - "PS", - "PA", - "PG", - "PY", - "PE", - "PH", - "PN", - "PL", - "PT", - "PR", - "QA", - "MK", - "RO", - "RU", - "RW", - "RE", - "BL", - "SH", - "KN", - "LC", - "MF", - "PM", - "VC", - "WS", - "SM", - "ST", - "SA", - "SN", - "RS", - "SC", - "SL", - "SG", - "SX", - "SK", - "SI", - "SB", - "SO", - "ZA", - "GS", - "SS", - "ES", - "LK", - "SD", - "SR", - "SJ", - "SE", - "CH", - "SY", - "TW", - "TJ", - "TZ", - "TH", - "TL", - "TG", - "TK", - "TO", - "TT", - "TN", - "TR", - "TM", - "TC", - "TV", - "UG", - "UA", - "AE", - "GB", - "UM", - "US", - "UY", - "UZ", - "VU", - "VE", - "VN", - "VG", - "VI", - "WF", - "EH", - "YE", - "ZM", - "ZW", - "AX" - ], - "example": "US" - }, - "postal_code": { - "type": [ - "string", - "null" - ], - "example": "Postal code" - }, - "spei_protocol": { - "type": [ - "string", - "null" - ], - "enum": [ - "clabe", - "debitcard", - "phonenum" - ], - "description": "For debitcard and phonenum the spei_institution_code is required", - "example": "clabe" - }, - "spei_institution_code": { - "type": [ - "string", - "null" - ], - "minLength": 5, - "maxLength": 5, - "example": "40002" - }, - "spei_clabe": { - "type": [ - "string", - "null" - ], - "example": "5482347403740546" - }, - "transfers_type": { - "type": [ - "string", - "null" - ], - "enum": [ - "CVU", - "CBU", - "ALIAS" - ], - "example": "CVU" - }, - "transfers_account": { - "type": [ - "string", - "null" - ], - "example": "BM123123123123" - }, - "ach_cop_beneficiary_first_name": { - "type": [ - "string", - "null" - ], - "example": "Fernando" - }, - "ach_cop_beneficiary_last_name": { - "type": [ - "string", - "null" - ], - "example": "Guzman Alarcón" - }, - "ach_cop_document_id": { - "type": [ - "string", - "null" - ], - "example": "1661105408" - }, - "ach_cop_document_type": { - "type": [ - "string", - "null" - ], - "enum": [ - "CC", - "CE", - "NIT", - "PASS", - "PEP" - ], - "description": "CC - Cédula de Ciudadanía; CE - Cédula de Extranjería; NIT - Número de Identificación Tributaria; PASS - Passport; PEP - Permiso Especial de Permanencia", - "example": "CC" + "type": "object" + } + ] + }, + "AvailableBankDetails": { + "items": { + "properties": { + "items": { + "items": { + "properties": { + "is_active": { + "example": true, + "type": "boolean" + }, + "label": { + "example": "United States of America", + "type": "string" + }, + "value": { + "example": "US", + "type": "string" + } + }, + "required": [ + "label", + "value" + ], + "type": "object" + }, + "type": "array" + }, + "key": { + "enum": [ + "type", + "name", + "status", + "recipient_relationship", + "swift_payment_code", + "pix_key", + "force_cpf_cnpj", + "beneficiary_name", + "routing_number", + "account_number", + "account_type", + "account_class", + "address_line_1", + "address_line_2", + "city", + "state_province_region", + "country", + "postal_code", + "checkbook_account_id", + "checkbook_user_key", + "onemoney_external_account_id", + "pix_safe_bank_code", + "pix_safe_branch_code", + "pix_safe_cpf_cnpj", + "ted_bank_code", + "ted_branch_code", + "ted_cpf_cnpj", + "spei_protocol", + "spei_institution_code", + "spei_clabe", + "transfers_type", + "transfers_account", + "ach_cop_beneficiary_first_name", + "ach_cop_beneficiary_last_name", + "ach_cop_document_id", + "ach_cop_document_type", + "ach_cop_email", + "ach_cop_bank_code", + "ach_cop_bank_account", + "swift_code_bic", + "swift_account_holder_name", + "swift_account_number_iban", + "swift_beneficiary_address_line_1", + "swift_beneficiary_address_line_2", + "swift_beneficiary_country", + "swift_beneficiary_city", + "swift_beneficiary_state_province_region", + "swift_beneficiary_postal_code", + "swift_bank_name", + "swift_bank_address_line_1", + "swift_bank_address_line_2", + "swift_bank_country", + "swift_bank_city", + "swift_bank_state_province_region", + "swift_bank_postal_code", + "swift_ifsc_branch_code", + "swift_intermediary_bank_swift_code_bic", + "swift_intermediary_bank_account_number_iban", + "swift_intermediary_bank_name", + "swift_intermediary_bank_country", + "sepa_iban", + "sepa_beneficiary_bic", + "sepa_beneficiary_legal_name", + "sepa_beneficiary_address_line_1", + "sepa_beneficiary_address_line_2", + "sepa_beneficiary_city", + "sepa_beneficiary_state_province_region", + "sepa_beneficiary_postal_code", + "sepa_beneficiary_country", + "business_industry", + "phone_number", + "tax_id", + "date_of_birth" + ], + "example": "account_number", + "type": "string" + }, + "label": { + "example": "Account Number", + "type": "string" + }, + "regex": { + "example": "^[0-9]{9}$", + "type": "string" + }, + "required": { + "example": false, + "type": [ + "boolean", + "null" + ] + }, + "requiredWhen": { + "example": { + "field": "country", + "operator": "in", + "values": [ + "US", + "GB" + ] + }, + "properties": { + "field": { + "enum": [ + "type", + "name", + "status", + "recipient_relationship", + "swift_payment_code", + "pix_key", + "force_cpf_cnpj", + "beneficiary_name", + "routing_number", + "account_number", + "account_type", + "account_class", + "address_line_1", + "address_line_2", + "city", + "state_province_region", + "country", + "postal_code", + "checkbook_account_id", + "checkbook_user_key", + "onemoney_external_account_id", + "pix_safe_bank_code", + "pix_safe_branch_code", + "pix_safe_cpf_cnpj", + "ted_bank_code", + "ted_branch_code", + "ted_cpf_cnpj", + "spei_protocol", + "spei_institution_code", + "spei_clabe", + "transfers_type", + "transfers_account", + "ach_cop_beneficiary_first_name", + "ach_cop_beneficiary_last_name", + "ach_cop_document_id", + "ach_cop_document_type", + "ach_cop_email", + "ach_cop_bank_code", + "ach_cop_bank_account", + "swift_code_bic", + "swift_account_holder_name", + "swift_account_number_iban", + "swift_beneficiary_address_line_1", + "swift_beneficiary_address_line_2", + "swift_beneficiary_country", + "swift_beneficiary_city", + "swift_beneficiary_state_province_region", + "swift_beneficiary_postal_code", + "swift_bank_name", + "swift_bank_address_line_1", + "swift_bank_address_line_2", + "swift_bank_country", + "swift_bank_city", + "swift_bank_state_province_region", + "swift_bank_postal_code", + "swift_ifsc_branch_code", + "swift_intermediary_bank_swift_code_bic", + "swift_intermediary_bank_account_number_iban", + "swift_intermediary_bank_name", + "swift_intermediary_bank_country", + "sepa_iban", + "sepa_beneficiary_bic", + "sepa_beneficiary_legal_name", + "sepa_beneficiary_address_line_1", + "sepa_beneficiary_address_line_2", + "sepa_beneficiary_city", + "sepa_beneficiary_state_province_region", + "sepa_beneficiary_postal_code", + "sepa_beneficiary_country", + "business_industry", + "phone_number", + "tax_id", + "date_of_birth" + ], + "example": "country", + "type": "string" + }, + "operator": { + "enum": [ + "in", + "eq", + "notIn", + "notEq" + ], + "example": "in", + "type": "string" + }, + "values": { + "example": [ + "US", + "GB" + ], + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "field", + "operator", + "values" + ], + "type": "object" + } }, - "ach_cop_email": { - "type": [ - "string", - "null" - ], - "example": "fernando.guzman@gmail.com" + "required": [ + "label", + "regex", + "key" + ], + "type": "object" + }, + "type": "array" + }, + "AvailableNaicsList": { + "items": { + "properties": { + "label": { + "example": "(339910) Jewelry and Silverware Manufacturing", + "type": "string" + }, + "value": { + "example": "339910", + "type": "string" + } }, - "ach_cop_bank_code": { - "type": [ - "string", - "null" + "required": [ + "label", + "value" + ], + "type": "object" + }, + "type": "array" + }, + "AvailableRails": { + "items": { + "properties": { + "country": { + "enum": [ + "AF", + "AL", + "DZ", + "AS", + "AD", + "AO", + "AI", + "AQ", + "AG", + "AR", + "AM", + "AW", + "AU", + "AT", + "AZ", + "BS", + "BH", + "BD", + "BB", + "BY", + "BE", + "BZ", + "BJ", + "BM", + "BT", + "BO", + "BQ", + "BA", + "BW", + "BV", + "BR", + "IO", + "BN", + "BG", + "BF", + "BI", + "CV", + "KH", + "CM", + "CA", + "KY", + "CF", + "TD", + "CL", + "CN", + "CX", + "CC", + "CO", + "KM", + "CD", + "CG", + "CK", + "CR", + "HR", + "CU", + "CW", + "CY", + "CZ", + "CI", + "DK", + "DJ", + "DM", + "DO", + "EC", + "EG", + "SV", + "GQ", + "ER", + "EE", + "SZ", + "ET", + "FK", + "FO", + "FJ", + "FI", + "FR", + "GF", + "PF", + "TF", + "GA", + "GM", + "GE", + "DE", + "GH", + "GI", + "GR", + "GL", + "GD", + "GP", + "GU", + "GT", + "GG", + "GN", + "GW", + "GY", + "HT", + "HM", + "VA", + "HN", + "HK", + "HU", + "IS", + "IN", + "ID", + "IR", + "IQ", + "IE", + "IM", + "IL", + "IT", + "JM", + "JP", + "JE", + "JO", + "KZ", + "KE", + "KI", + "KP", + "KR", + "KW", + "KG", + "LA", + "LV", + "LB", + "LS", + "LR", + "LY", + "LI", + "LT", + "LU", + "MO", + "MG", + "MW", + "MY", + "MV", + "ML", + "MT", + "MH", + "MQ", + "MR", + "MU", + "YT", + "MX", + "FM", + "MD", + "MC", + "MN", + "ME", + "MS", + "MA", + "MZ", + "MM", + "NA", + "NR", + "NP", + "NL", + "NC", + "NZ", + "NI", + "NE", + "NG", + "NU", + "NF", + "MP", + "NO", + "OM", + "PK", + "PW", + "PS", + "PA", + "PG", + "PY", + "PE", + "PH", + "PN", + "PL", + "PT", + "PR", + "QA", + "MK", + "RO", + "RU", + "RW", + "RE", + "BL", + "SH", + "KN", + "LC", + "MF", + "PM", + "VC", + "WS", + "SM", + "ST", + "SA", + "SN", + "RS", + "SC", + "SL", + "SG", + "SX", + "SK", + "SI", + "SB", + "SO", + "ZA", + "GS", + "SS", + "ES", + "LK", + "SD", + "SR", + "SJ", + "SE", + "CH", + "SY", + "TW", + "TJ", + "TZ", + "TH", + "TL", + "TG", + "TK", + "TO", + "TT", + "TN", + "TR", + "TM", + "TC", + "TV", + "UG", + "UA", + "AE", + "GB", + "UM", + "US", + "UY", + "UZ", + "VU", + "VE", + "VN", + "VG", + "VI", + "WF", + "EH", + "YE", + "ZM", + "ZW", + "AX" + ], + "example": "US", + "type": "string" + }, + "label": { + "example": "Domestic Wire", + "type": "string" + }, + "value": { + "enum": [ + "wire", + "ach", + "pix", + "pix_safe", + "ted", + "spei_bitso", + "transfers_bitso", + "ach_cop_bitso", + "international_swift", + "rtp", + "sepa" + ], + "example": "wire", + "type": "string" + } + }, + "required": [ + "label", + "value", + "country" + ], + "type": "object" + }, + "type": "array" + }, + "BankAccountOut": { + "properties": { + "account_class": { + "enum": [ + "individual", + "business" ], - "example": "051" + "example": "individual", + "type": [ + "string", + "null" + ] }, - "ach_cop_bank_account": { + "account_number": { + "example": "1001001234", "type": [ "string", "null" + ] + }, + "account_type": { + "enum": [ + "checking", + "saving" ], - "example": "12345678" + "example": "checking", + "type": [ + "string", + "null" + ] }, - "swift_code_bic": { + "ach_cop_bank_account": { + "example": "12345678", "type": [ "string", "null" - ], - "example": "123456789" + ] }, - "swift_account_holder_name": { + "ach_cop_bank_code": { + "example": "051", "type": [ "string", "null" - ], - "maxLength": 50, - "example": "John Doe" + ] }, - "swift_account_number_iban": { + "ach_cop_beneficiary_first_name": { + "example": "Fernando", "type": [ "string", "null" - ], - "example": "123456789" + ] }, - "swift_beneficiary_address_line_1": { + "ach_cop_beneficiary_last_name": { + "example": "Guzman Alarc\u00f3n", "type": [ "string", "null" - ], - "example": "123 MAIN STREET SUITE 100" + ] }, - "swift_beneficiary_address_line_2": { + "ach_cop_document_id": { + "example": "1661105408", "type": [ "string", "null" + ] + }, + "ach_cop_document_type": { + "description": "CC - C\u00e9dula de Ciudadan\u00eda; CE - C\u00e9dula de Extranjer\u00eda; NIT - N\u00famero de Identificaci\u00f3n Tributaria; PASS - Passport; PEP - Permiso Especial de Permanencia", + "enum": [ + "CC", + "CE", + "NIT", + "PASS", + "PEP" ], - "example": "BUILDING A FLOOR 5" + "example": "CC", + "type": [ + "string", + "null" + ] }, - "swift_beneficiary_country": { + "ach_cop_email": { + "example": "fernando.guzman@gmail.com", "type": [ "string", "null" - ], + ] + }, + "address_line_1": { + "example": "Address line 1", + "type": [ + "string", + "null" + ] + }, + "address_line_2": { + "example": "Address line 2", + "type": [ + "string", + "null" + ] + }, + "beneficiary_name": { + "example": "Individual full name or business name", + "maxLength": 128, + "type": [ + "string", + "null" + ] + }, + "business_industry": { "enum": [ - "AF", - "AL", - "DZ", - "AS", - "AD", - "AO", - "AI", - "AQ", - "AG", - "AR", - "AM", - "AW", - "AU", - "AT", - "AZ", - "BS", - "BH", - "BD", - "BB", - "BY", - "BE", - "BZ", - "BJ", - "BM", - "BT", - "BO", - "BQ", - "BA", - "BW", - "BV", - "BR", - "IO", - "BN", - "BG", - "BF", - "BI", - "CV", - "KH", - "CM", - "CA", - "KY", - "CF", - "TD", - "CL", - "CN", - "CX", - "CC", - "CO", - "KM", - "CD", - "CG", - "CK", - "CR", - "HR", - "CU", - "CW", - "CY", - "CZ", - "CI", - "DK", - "DJ", - "DM", - "DO", - "EC", - "EG", - "SV", - "GQ", - "ER", - "EE", - "SZ", - "ET", - "FK", - "FO", - "FJ", - "FI", - "FR", - "GF", - "PF", - "TF", - "GA", - "GM", - "GE", - "DE", - "GH", - "GI", - "GR", - "GL", - "GD", - "GP", - "GU", - "GT", - "GG", - "GN", - "GW", - "GY", - "HT", - "HM", - "VA", - "HN", - "HK", - "HU", - "IS", - "IN", - "ID", - "IR", - "IQ", - "IE", - "IM", - "IL", - "IT", - "JM", - "JP", - "JE", - "JO", - "KZ", - "KE", - "KI", - "KP", - "KR", - "KW", - "KG", - "LA", - "LV", - "LB", - "LS", - "LR", - "LY", - "LI", - "LT", - "LU", - "MO", - "MG", - "MW", - "MY", - "MV", - "ML", - "MT", - "MH", - "MQ", - "MR", - "MU", - "YT", - "MX", - "FM", - "MD", - "MC", - "MN", - "ME", - "MS", - "MA", - "MZ", - "MM", - "NA", - "NR", - "NP", - "NL", - "NC", - "NZ", - "NI", - "NE", - "NG", - "NU", - "NF", - "MP", - "NO", - "OM", - "PK", - "PW", - "PS", - "PA", - "PG", - "PY", - "PE", - "PH", - "PN", - "PL", - "PT", - "PR", - "QA", - "MK", - "RO", - "RU", - "RW", - "RE", - "BL", - "SH", - "KN", - "LC", - "MF", - "PM", - "VC", - "WS", - "SM", - "ST", - "SA", - "SN", - "RS", - "SC", - "SL", - "SG", - "SX", - "SK", - "SI", - "SB", - "SO", - "ZA", - "GS", - "SS", - "ES", - "LK", - "SD", - "SR", - "SJ", - "SE", - "CH", - "SY", - "TW", - "TJ", - "TZ", - "TH", - "TL", - "TG", - "TK", - "TO", - "TT", - "TN", - "TR", - "TM", - "TC", - "TV", - "UG", - "UA", - "AE", - "GB", - "UM", - "US", - "UY", - "UZ", - "VU", - "VE", - "VN", - "VG", - "VI", - "WF", - "EH", - "YE", - "ZM", - "ZW", - "AX" - ], - "example": "MX" - }, - "swift_beneficiary_city": { - "type": [ - "string", - "null" - ], - "example": "MEXICO CITY" - }, - "swift_beneficiary_state_province_region": { - "type": [ - "string", - "null" - ], - "example": "MX" - }, - "swift_beneficiary_postal_code": { - "type": [ - "string", - "null" - ], - "example": "11530" - }, - "swift_bank_name": { - "type": [ - "string", - "null" + "111998", + "112120", + "113310", + "115114", + "541211", + "541810", + "541430", + "541715", + "541930", + "561422", + "561311", + "561612", + "561740", + "561730", + "236115", + "236220", + "237310", + "238210", + "811111", + "812111", + "812112", + "532111", + "624410", + "541922", + "811210", + "812199", + "611110", + "611310", + "611410", + "611710", + "211120", + "212114", + "221310", + "562111", + "562920", + "213112", + "522110", + "522210", + "522320", + "523150", + "523940", + "523999", + "524113", + "813110", + "813211", + "813219", + "551112", + "721110", + "722511", + "722513", + "561510", + "713110", + "713210", + "712110", + "711110", + "711211", + "621111", + "621210", + "622110", + "623110", + "621511", + "623220", + "541940", + "621399", + "621910", + "541110", + "311421", + "337121", + "322220", + "339920", + "334210", + "339930", + "312130", + "334111", + "334118", + "325412", + "339112", + "336110", + "336390", + "315990", + "313110", + "339910", + "516120", + "513130", + "512250", + "519130", + "711410", + "711510", + "531110", + "531120", + "531130", + "531190", + "531210", + "531311", + "531312", + "531320", + "531390", + "454110", + "445110", + "455110", + "457110", + "449210", + "444110", + "459210", + "459120", + "445320", + "458110", + "458210", + "458310", + "455219", + "424210", + "456110", + "446120", + "541511", + "541512", + "541519", + "518210", + "511210", + "517111", + "517112", + "517410", + "481111", + "483111", + "485210", + "488510", + "484121", + "493110", + "423430", + "423690", + "423110", + "423830", + "423840", + "423510", + "424690", + "424990", + "424410", + "424480", + "423940", + "541611", + "541618", + "541330", + "541990", + "541214", + "561499" ], - "example": "Banco Regional SA" - }, - "swift_bank_address_line_1": { + "example": "541511", "type": [ "string", "null" - ], - "example": "123 Main Street, Suite 100, Downtown District, City Center CP 12345" + ] }, - "swift_bank_address_line_2": { + "city": { + "example": "City", "type": [ "string", "null" - ], - "example": "456 Oak Avenue, Building 7, Financial District, Business Center CP 54321" + ] }, - "swift_bank_country": { - "type": [ - "string", - "null" - ], + "country": { "enum": [ "AF", "AL", @@ -1244,75 +1493,210 @@ "ZW", "AX" ], - "example": "MX" + "example": "US", + "type": [ + "string", + "null" + ] }, - "swift_bank_city": { + "created_at": { + "example": "2021-01-01T00:00:00Z", + "format": "date-time", "type": [ "string", "null" + ] + }, + "date_of_birth": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "string" + }, + { + "type": "null" + } ], - "example": "City" + "example": "1998-01-01T00:00:00Z" }, - "swift_bank_state_province_region": { + "id": { + "example": "ba_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "name": { + "example": "Bank Account Name", + "type": "string" + }, + "offramp_wallets": { + "example": [ + { + "address": "TALJN9zTTEL9TVBb4WuTt6wLvPqJZr3hvb", + "external_id": "your_external_id", + "id": "ow_000000000000", + "network": "tron" + } + ], + "items": { + "properties": { + "address": { + "example": "TALJN9zTTEL9TVBb4WuTt6wLvPqJZr3hvb", + "type": "string" + }, + "circle_wallet_id": { + "example": "01234567-abcd-efgh-ijkl-012345678901", + "type": [ + "string", + "null" + ] + }, + "external_id": { + "example": "your_external_id", + "type": [ + "string", + "null" + ] + }, + "id": { + "example": "ow_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "network": { + "enum": [ + "tron", + "solana", + "solana_devnet", + "arbitrum", + "base", + "ethereum", + "polygon", + "sepolia", + "arbitrum_sepolia", + "base_sepolia", + "polygon_amoy" + ], + "example": "tron", + "type": "string" + } + }, + "required": [ + "id", + "network", + "address" + ], + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "phone_number": { + "example": "+13055555555", "type": [ "string", "null" - ], - "example": "District" + ] }, - "swift_bank_postal_code": { + "pix_key": { + "example": "14947677768", "type": [ "string", "null" - ], - "example": "11530" + ] }, - "swift_ifsc_branch_code": { + "pix_safe_bank_code": { + "example": "00416968", + "pattern": "^\\d{4,8}$", "type": [ "string", "null" - ], - "pattern": "^[A-Z]{4}0[A-Z0-9]{6}$", - "example": "BARB0AHIMCI" + ] }, - "swift_intermediary_bank_swift_code_bic": { - "anyOf": [ - { - "type": "string", - "minLength": 8, - "maxLength": 8 - }, - { - "type": "string", - "minLength": 11, - "maxLength": 11 - }, - { - "type": "null" - } - ], - "example": "AEIBARB1" + "pix_safe_branch_code": { + "example": "0001", + "pattern": "^\\d{4}(-\\d)?$", + "type": [ + "string", + "null" + ] }, - "swift_intermediary_bank_account_number_iban": { + "pix_safe_cpf_cnpj": { + "example": "12345678901", "type": [ "string", "null" - ], - "maxLength": 34, - "example": "123456789" + ] }, - "swift_intermediary_bank_name": { + "postal_code": { + "example": "Postal code", "type": [ "string", "null" + ] + }, + "recipient_relationship": { + "enum": [ + "first_party", + "employee", + "independent_contractor", + "vendor_or_supplier", + "subsidiary_or_affiliate", + "merchant_or_partner", + "customer", + "landlord", + "family", + "other" ], - "example": "Banco Regional SA" + "example": "vendor_or_supplier", + "type": [ + "string", + "null" + ] }, - "swift_intermediary_bank_country": { + "routing_number": { + "example": "012345678", "type": [ "string", "null" - ], + ] + }, + "sepa_beneficiary_address_line_1": { + "example": "Friedrichstra\u00dfe 12", + "type": [ + "string", + "null" + ] + }, + "sepa_beneficiary_address_line_2": { + "example": "Apt 4B", + "type": [ + "string", + "null" + ] + }, + "sepa_beneficiary_bic": { + "description": "BIC/SWIFT code of the beneficiary bank", + "example": "TRWIBEB1XXX", + "type": [ + "string", + "null" + ] + }, + "sepa_beneficiary_city": { + "example": "Berlin", + "type": [ + "string", + "null" + ] + }, + "sepa_beneficiary_country": { "enum": [ "AF", "AL", @@ -1564,74 +1948,130 @@ "ZW", "AX" ], - "example": "US" - }, - "sepa_iban": { + "example": "DE", "type": [ "string", "null" - ], - "example": "DE89370400440532013000" + ] }, - "sepa_beneficiary_bic": { + "sepa_beneficiary_legal_name": { + "example": "Hans M\u00fcller", + "maxLength": 128, "type": [ "string", "null" - ], - "description": "BIC/SWIFT code of the beneficiary bank", - "example": "TRWIBEB1XXX" + ] }, - "sepa_beneficiary_legal_name": { + "sepa_beneficiary_postal_code": { + "example": "10117", "type": [ "string", "null" - ], - "maxLength": 128, - "example": "Hans Müller" + ] }, - "sepa_beneficiary_address_line_1": { + "sepa_beneficiary_state_province_region": { + "example": "Berlin", "type": [ "string", "null" - ], - "example": "Friedrichstraße 12" + ] }, - "sepa_beneficiary_address_line_2": { + "sepa_iban": { + "example": "DE89370400440532013000", "type": [ "string", "null" - ], - "example": "Apt 4B" + ] }, - "sepa_beneficiary_city": { + "spei_clabe": { + "example": "5482347403740546", "type": [ "string", "null" - ], - "example": "Berlin" + ] }, - "sepa_beneficiary_state_province_region": { + "spei_institution_code": { + "example": "40002", + "maxLength": 5, + "minLength": 5, "type": [ "string", "null" - ], - "example": "Berlin" + ] }, - "sepa_beneficiary_postal_code": { + "spei_protocol": { + "description": "For debitcard and phonenum the spei_institution_code is required", + "enum": [ + "clabe", + "debitcard", + "phonenum" + ], + "example": "clabe", "type": [ "string", "null" - ], - "example": "10117" + ] }, - "sepa_beneficiary_country": { + "state_province_region": { + "example": "State/Province/Region", "type": [ "string", "null" - ], + ] + }, + "status": { "enum": [ - "AF", - "AL", + "verifying", + "approved", + "rejected", + "deprecated" + ], + "example": "verifying", + "type": [ + "string", + "null" + ] + }, + "swift_account_holder_name": { + "example": "John Doe", + "maxLength": 50, + "type": [ + "string", + "null" + ] + }, + "swift_account_number_iban": { + "example": "123456789", + "type": [ + "string", + "null" + ] + }, + "swift_bank_address_line_1": { + "example": "123 Main Street, Suite 100, Downtown District, City Center CP 12345", + "type": [ + "string", + "null" + ] + }, + "swift_bank_address_line_2": { + "example": "456 Oak Avenue, Building 7, Financial District, Business Center CP 54321", + "type": [ + "string", + "null" + ] + }, + "swift_bank_city": { + "example": "City", + "type": [ + "string", + "null" + ] + }, + "swift_bank_country": { + "enum": [ + "AF", + "AL", "DZ", "AS", "AD", @@ -1880,346 +2320,633 @@ "ZW", "AX" ], - "example": "DE" - }, - "business_industry": { + "example": "MX", "type": [ "string", "null" - ], - "enum": [ - "111998", - "112120", - "113310", - "115114", - "541211", - "541810", - "541430", - "541715", - "541930", - "561422", - "561311", - "561612", - "561740", - "561730", - "236115", - "236220", - "237310", - "238210", - "811111", - "812111", - "812112", - "532111", - "624410", - "541922", - "811210", - "812199", - "611110", - "611310", - "611410", - "611710", - "211120", - "212114", - "221310", - "562111", - "562920", - "213112", - "522110", - "522210", - "522320", - "523150", - "523940", - "523999", - "524113", - "813110", - "813211", - "813219", - "551112", - "721110", - "722511", - "722513", - "561510", - "713110", - "713210", - "712110", - "711110", - "711211", - "621111", - "621210", - "622110", - "623110", - "621511", - "623220", - "541940", - "621399", - "621910", - "541110", - "311421", - "337121", - "322220", - "339920", - "334210", - "339930", - "312130", - "334111", - "334118", - "325412", - "339112", - "336110", - "336390", - "315990", - "313110", - "339910", - "516120", - "513130", - "512250", - "519130", - "711410", - "711510", - "531110", - "531120", - "531130", - "531190", - "531210", - "531311", - "531312", - "531320", - "531390", - "454110", - "445110", - "455110", - "457110", - "449210", - "444110", - "459210", - "459120", - "445320", - "458110", - "458210", - "458310", - "455219", - "424210", - "456110", - "446120", - "541511", - "541512", - "541519", - "518210", - "511210", - "517111", - "517112", - "517410", - "481111", - "483111", - "485210", - "488510", - "484121", - "493110", - "423430", - "423690", - "423110", - "423830", - "423840", - "423510", - "424690", - "424990", - "424410", - "424480", - "423940", - "541611", - "541618", - "541330", - "541990", - "541214", - "561499" - ], - "example": "541511" + ] }, - "phone_number": { + "swift_bank_name": { + "example": "Banco Regional SA", "type": [ "string", "null" - ], - "example": "+13055555555" + ] }, - "tax_id": { + "swift_bank_postal_code": { + "example": "11530", "type": [ "string", "null" - ], - "maxLength": 32, - "example": "536804398" - }, - "date_of_birth": { - "anyOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "type": "string" - }, - { - "type": "null" - } - ], - "example": "1998-01-01T00:00:00Z" + ] }, - "pix_safe_bank_code": { + "swift_bank_state_province_region": { + "example": "District", "type": [ "string", "null" - ], - "pattern": "^\\d{4,8}$", - "example": "00416968" + ] }, - "pix_safe_branch_code": { + "swift_beneficiary_address_line_1": { + "example": "123 MAIN STREET SUITE 100", "type": [ "string", "null" - ], - "pattern": "^\\d{4}(-\\d)?$", - "example": "0001" + ] }, - "pix_safe_cpf_cnpj": { + "swift_beneficiary_address_line_2": { + "example": "BUILDING A FLOOR 5", "type": [ "string", "null" - ], - "example": "12345678901" + ] }, - "ted_bank_code": { + "swift_beneficiary_city": { + "example": "MEXICO CITY", "type": [ "string", "null" + ] + }, + "swift_beneficiary_country": { + "enum": [ + "AF", + "AL", + "DZ", + "AS", + "AD", + "AO", + "AI", + "AQ", + "AG", + "AR", + "AM", + "AW", + "AU", + "AT", + "AZ", + "BS", + "BH", + "BD", + "BB", + "BY", + "BE", + "BZ", + "BJ", + "BM", + "BT", + "BO", + "BQ", + "BA", + "BW", + "BV", + "BR", + "IO", + "BN", + "BG", + "BF", + "BI", + "CV", + "KH", + "CM", + "CA", + "KY", + "CF", + "TD", + "CL", + "CN", + "CX", + "CC", + "CO", + "KM", + "CD", + "CG", + "CK", + "CR", + "HR", + "CU", + "CW", + "CY", + "CZ", + "CI", + "DK", + "DJ", + "DM", + "DO", + "EC", + "EG", + "SV", + "GQ", + "ER", + "EE", + "SZ", + "ET", + "FK", + "FO", + "FJ", + "FI", + "FR", + "GF", + "PF", + "TF", + "GA", + "GM", + "GE", + "DE", + "GH", + "GI", + "GR", + "GL", + "GD", + "GP", + "GU", + "GT", + "GG", + "GN", + "GW", + "GY", + "HT", + "HM", + "VA", + "HN", + "HK", + "HU", + "IS", + "IN", + "ID", + "IR", + "IQ", + "IE", + "IM", + "IL", + "IT", + "JM", + "JP", + "JE", + "JO", + "KZ", + "KE", + "KI", + "KP", + "KR", + "KW", + "KG", + "LA", + "LV", + "LB", + "LS", + "LR", + "LY", + "LI", + "LT", + "LU", + "MO", + "MG", + "MW", + "MY", + "MV", + "ML", + "MT", + "MH", + "MQ", + "MR", + "MU", + "YT", + "MX", + "FM", + "MD", + "MC", + "MN", + "ME", + "MS", + "MA", + "MZ", + "MM", + "NA", + "NR", + "NP", + "NL", + "NC", + "NZ", + "NI", + "NE", + "NG", + "NU", + "NF", + "MP", + "NO", + "OM", + "PK", + "PW", + "PS", + "PA", + "PG", + "PY", + "PE", + "PH", + "PN", + "PL", + "PT", + "PR", + "QA", + "MK", + "RO", + "RU", + "RW", + "RE", + "BL", + "SH", + "KN", + "LC", + "MF", + "PM", + "VC", + "WS", + "SM", + "ST", + "SA", + "SN", + "RS", + "SC", + "SL", + "SG", + "SX", + "SK", + "SI", + "SB", + "SO", + "ZA", + "GS", + "SS", + "ES", + "LK", + "SD", + "SR", + "SJ", + "SE", + "CH", + "SY", + "TW", + "TJ", + "TZ", + "TH", + "TL", + "TG", + "TK", + "TO", + "TT", + "TN", + "TR", + "TM", + "TC", + "TV", + "UG", + "UA", + "AE", + "GB", + "UM", + "US", + "UY", + "UZ", + "VU", + "VE", + "VN", + "VG", + "VI", + "WF", + "EH", + "YE", + "ZM", + "ZW", + "AX" ], - "pattern": "^\\d{3,5}$", - "example": "033" + "example": "MX", + "type": [ + "string", + "null" + ] }, - "ted_branch_code": { + "swift_beneficiary_postal_code": { + "example": "11530", "type": [ "string", "null" - ], - "pattern": "^\\d{4}(-\\d)?$", - "example": "0001" + ] }, - "ted_cpf_cnpj": { + "swift_beneficiary_state_province_region": { + "example": "MX", "type": [ "string", "null" - ], - "example": "12345678901" + ] }, - "tron_wallet_hash": { + "swift_code_bic": { + "example": "123456789", "type": [ "string", "null" - ], - "example": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t" + ] }, - "offramp_wallets": { + "swift_ifsc_branch_code": { + "example": "BARB0AHIMCI", + "pattern": "^[A-Z]{4}0[A-Z0-9]{6}$", "type": [ - "array", + "string", "null" - ], - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "ow_000000000000" - }, - "external_id": { - "type": [ - "string", - "null" - ], - "example": "your_external_id" - }, - "circle_wallet_id": { - "type": [ - "string", - "null" - ], - "example": "01234567-abcd-efgh-ijkl-012345678901" - }, - "network": { - "type": "string", - "enum": [ - "tron", - "solana", - "solana_devnet", - "arbitrum", - "base", - "ethereum", - "polygon", - "sepolia", - "arbitrum_sepolia", - "base_sepolia", - "polygon_amoy" - ], - "example": "tron" - }, - "address": { - "type": "string", - "example": "TALJN9zTTEL9TVBb4WuTt6wLvPqJZr3hvb" - } - }, - "required": [ - "id", - "network", - "address" - ] - }, - "example": [ - { - "address": "TALJN9zTTEL9TVBb4WuTt6wLvPqJZr3hvb", - "id": "ow_000000000000", - "network": "tron", - "external_id": "your_external_id" - } ] }, - "status": { + "swift_intermediary_bank_account_number_iban": { + "example": "123456789", + "maxLength": 34, "type": [ "string", "null" - ], + ] + }, + "swift_intermediary_bank_country": { "enum": [ - "verifying", - "approved", - "rejected", - "deprecated" + "AF", + "AL", + "DZ", + "AS", + "AD", + "AO", + "AI", + "AQ", + "AG", + "AR", + "AM", + "AW", + "AU", + "AT", + "AZ", + "BS", + "BH", + "BD", + "BB", + "BY", + "BE", + "BZ", + "BJ", + "BM", + "BT", + "BO", + "BQ", + "BA", + "BW", + "BV", + "BR", + "IO", + "BN", + "BG", + "BF", + "BI", + "CV", + "KH", + "CM", + "CA", + "KY", + "CF", + "TD", + "CL", + "CN", + "CX", + "CC", + "CO", + "KM", + "CD", + "CG", + "CK", + "CR", + "HR", + "CU", + "CW", + "CY", + "CZ", + "CI", + "DK", + "DJ", + "DM", + "DO", + "EC", + "EG", + "SV", + "GQ", + "ER", + "EE", + "SZ", + "ET", + "FK", + "FO", + "FJ", + "FI", + "FR", + "GF", + "PF", + "TF", + "GA", + "GM", + "GE", + "DE", + "GH", + "GI", + "GR", + "GL", + "GD", + "GP", + "GU", + "GT", + "GG", + "GN", + "GW", + "GY", + "HT", + "HM", + "VA", + "HN", + "HK", + "HU", + "IS", + "IN", + "ID", + "IR", + "IQ", + "IE", + "IM", + "IL", + "IT", + "JM", + "JP", + "JE", + "JO", + "KZ", + "KE", + "KI", + "KP", + "KR", + "KW", + "KG", + "LA", + "LV", + "LB", + "LS", + "LR", + "LY", + "LI", + "LT", + "LU", + "MO", + "MG", + "MW", + "MY", + "MV", + "ML", + "MT", + "MH", + "MQ", + "MR", + "MU", + "YT", + "MX", + "FM", + "MD", + "MC", + "MN", + "ME", + "MS", + "MA", + "MZ", + "MM", + "NA", + "NR", + "NP", + "NL", + "NC", + "NZ", + "NI", + "NE", + "NG", + "NU", + "NF", + "MP", + "NO", + "OM", + "PK", + "PW", + "PS", + "PA", + "PG", + "PY", + "PE", + "PH", + "PN", + "PL", + "PT", + "PR", + "QA", + "MK", + "RO", + "RU", + "RW", + "RE", + "BL", + "SH", + "KN", + "LC", + "MF", + "PM", + "VC", + "WS", + "SM", + "ST", + "SA", + "SN", + "RS", + "SC", + "SL", + "SG", + "SX", + "SK", + "SI", + "SB", + "SO", + "ZA", + "GS", + "SS", + "ES", + "LK", + "SD", + "SR", + "SJ", + "SE", + "CH", + "SY", + "TW", + "TJ", + "TZ", + "TH", + "TL", + "TG", + "TK", + "TO", + "TT", + "TN", + "TR", + "TM", + "TC", + "TV", + "UG", + "UA", + "AE", + "GB", + "UM", + "US", + "UY", + "UZ", + "VU", + "VE", + "VN", + "VG", + "VI", + "WF", + "EH", + "YE", + "ZM", + "ZW", + "AX" ], - "example": "verifying" - }, - "recipient_relationship": { + "example": "US", "type": [ "string", "null" - ], - "enum": [ - "first_party", - "employee", - "independent_contractor", - "vendor_or_supplier", - "subsidiary_or_affiliate", - "merchant_or_partner", - "customer", - "landlord", - "family", - "other" - ], - "example": "vendor_or_supplier" + ] }, - "swift_payment_code": { + "swift_intermediary_bank_name": { + "example": "Banco Regional SA", "type": [ "string", "null" + ] + }, + "swift_intermediary_bank_swift_code_bic": { + "anyOf": [ + { + "maxLength": 8, + "minLength": 8, + "type": "string" + }, + { + "maxLength": 11, + "minLength": 11, + "type": "string" + }, + { + "type": "null" + } ], + "example": "AEIBARB1" + }, + "swift_payment_code": { "enum": [ "ae_swift_str", "ae_swift_tcs", @@ -3247,21089 +3974,2070 @@ "za_swift_10301", "za_swift_27201" ], - "example": "bh_swift_afl" + "example": "bh_swift_afl", + "type": [ + "string", + "null" + ] }, - "created_at": { - "example": "2021-01-01T00:00:00Z" + "tax_id": { + "example": "536804398", + "maxLength": 32, + "type": [ + "string", + "null" + ] + }, + "ted_bank_code": { + "example": "033", + "pattern": "^\\d{3,5}$", + "type": [ + "string", + "null" + ] + }, + "ted_branch_code": { + "example": "0001", + "pattern": "^\\d{4}(-\\d)?$", + "type": [ + "string", + "null" + ] + }, + "ted_cpf_cnpj": { + "example": "12345678901", + "type": [ + "string", + "null" + ] + }, + "transfers_account": { + "example": "BM123123123123", + "type": [ + "string", + "null" + ] + }, + "transfers_type": { + "enum": [ + "CVU", + "CBU", + "ALIAS" + ], + "example": "CVU", + "type": [ + "string", + "null" + ] + }, + "tron_wallet_hash": { + "example": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t", + "type": [ + "string", + "null" + ] + }, + "type": { + "enum": [ + "wire", + "ach", + "pix", + "pix_safe", + "ted", + "spei_bitso", + "transfers_bitso", + "ach_cop_bitso", + "international_swift", + "rtp", + "sepa" + ], + "example": "wire", + "type": "string" } }, "required": [ - "webhook_event", "id", "type", "name" - ] + ], + "type": "object" }, - "PayinNewWebhookOut": { - "type": "object", + "BankAccountWebhookOut": { "properties": { - "webhook_event": { - "type": "string", + "account_class": { "enum": [ - "payin.new" + "individual", + "business" + ], + "example": "individual", + "type": [ + "string", + "null" ] }, - "id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "pi_000000000000" + "account_number": { + "example": "1001001234", + "type": [ + "string", + "null" + ] }, - "status": { - "type": "string", + "account_type": { "enum": [ - "processing", - "on_hold", - "failed", - "refunded", - "completed" + "checking", + "saving" ], - "description": "Payin general status", - "example": "processing" + "example": "checking", + "type": [ + "string", + "null" + ] }, - "pix_code": { + "ach_cop_bank_account": { + "example": "12345678", "type": [ "string", "null" - ], - "description": "PIX code", - "example": "00020101021226790014br.gov.bcb.pix2557brcode.starkinfra.com/v2/bcf07f6c4110454e9fd6f120bab13e835204000053039865802BR5915Blind Pay, Inc.6010Vila Velha62070503***6304BCAB" + ] }, - "memo_code": { + "ach_cop_bank_code": { + "example": "051", "type": [ "string", "null" - ], - "description": "Memo code", - "example": "8K45GHBNT6BQ6462" + ] }, - "clabe": { + "ach_cop_beneficiary_first_name": { + "example": "Fernando", "type": [ "string", "null" - ], - "description": "CLABE code", - "example": "014027000000000008" + ] }, - "partner_fee": { - "type": "integer", - "minimum": 0, - "default": 0, - "description": "Payin partner fee amount in cents", - "example": 25000 + "ach_cop_beneficiary_last_name": { + "example": "Guzman Alarc\u00f3n", + "type": [ + "string", + "null" + ] }, - "tracking_complete": { - "type": "object", - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Complete step", - "example": "on_hold" - }, - "transaction_hash": { - "type": [ - "string", - "null" - ], - "description": "Complete transaction hash", - "example": "0x123...890" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Complete completed date", - "example": "2011-10-05T14:48:00.000Z" - } - }, - "required": [ - "step" + "ach_cop_document_id": { + "example": "1661105408", + "type": [ + "string", + "null" ] }, - "tracking_payment": { - "type": "object", - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Payment step", - "example": "on_hold" - }, - "provider_name": { - "type": [ - "string", - "null" - ], - "description": "Payment provider name", - "example": "blockchain" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Payment completed date", - "example": "2011-10-05T14:48:00.000Z" - }, - "review_source": { - "type": [ - "string", - "null" - ], - "description": "Risk source that sent this payin to manual review", - "example": "seon_review" - }, - "review_context": { - "type": [ - "object", - "null" - ], - "additionalProperties": {}, - "description": "Structured risk context for manual review" - }, - "approved_risk_sources": { - "type": [ - "array", - "null" - ], - "items": { - "type": "string" - }, - "description": "Risk sources already approved by an analyst", - "example": [ - "seon_review" - ] - } - }, - "required": [ - "step" + "ach_cop_document_type": { + "description": "CC - C\u00e9dula de Ciudadan\u00eda; CE - C\u00e9dula de Extranjer\u00eda; NIT - N\u00famero de Identificaci\u00f3n Tributaria; PASS - Passport; PEP - Permiso Especial de Permanencia", + "enum": [ + "CC", + "CE", + "NIT", + "PASS", + "PEP" + ], + "example": "CC", + "type": [ + "string", + "null" ] }, - "tracking_transaction": { - "type": "object", - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Payin transaction step", - "example": "processing" - }, - "status": { - "type": [ - "string", - "null" - ], - "enum": [ - "failed", - "completed" - ], - "description": "Payin transaction status", - "example": "failed" - }, - "external_id": { - "type": [ - "string", - "null" - ], - "description": "Payin transaction external id", - "example": "12345678" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Payin transaction completed date", - "example": "2011-10-05T14:48:00.000Z" - }, - "transaction_hash": { - "type": [ - "string", - "null" - ], - "description": "Blockchain transaction hash", - "example": "0x123...890" - }, - "provider_name": { - "type": [ - "string", - "null" - ], - "enum": [ - "Nvio Pagos", - "Brex", - "Stark Bank", - "JPMorgan Chase", - "HSBC", - "Inter", - "JP Morgan Chase", - "Bitso", - "Citi", - "CFSB", - "Triple A Technologies", - "Portage Bank" - ], - "description": "Payment provider name", - "example": "HSBC" - }, - "provider_transaction_id": { - "type": [ - "string", - "null" - ], - "description": "Payment provider transaction id", - "example": "" - }, - "sender_name": { - "type": [ - "string", - "null" - ], - "example": "John Doe Smith" - }, - "sender_bank_name": { - "type": [ - "string", - "null" - ], - "example": "Bank of America" - }, - "sender_tax_id": { - "type": [ - "string", - "null" - ], - "example": "123.456.789-10" - }, - "sender_bank_code": { - "type": [ - "string", - "null" - ], - "example": "00416968" - }, - "sender_account_number": { - "type": [ - "string", - "null" - ], - "example": "1234567890" - }, - "end_to_end_id": { - "type": [ - "string", - "null" - ], - "description": "BACEN Pix end-to-end transaction ID (govt Pix ID)", - "example": "E20018183202603311320vm6ALFpJpsS" - }, - "trace_number": { - "type": [ - "string", - "null" - ], - "example": "1234567890" - }, - "transaction_reference": { - "type": [ - "string", - "null" - ], - "example": "1234567890" - }, - "description": { - "type": [ - "string", - "null" - ], - "example": "Payment from John Doe Smith" - }, - "pse_instruction": { - "type": [ - "object", - "null" - ], - "properties": { - "payment_link": { - "type": "string", - "description": "PSE payment link URL", - "example": "https://pse.example.com/payment/abc123" - }, - "fid": { - "type": "string", - "description": "PSE funding identifier for webhook matching", - "example": "fid_abc123" - }, - "full_name": { - "type": "string", - "description": "PSE payer full name", - "example": "Juan Pérez García" - }, - "tax_id": { - "type": "string", - "description": "PSE payer document number", - "example": "1234567890" - }, - "document_type": { - "type": "string", - "enum": [ - "CC", - "NIT" - ], - "description": "PSE payer document type", - "example": "CC" - }, - "phone": { - "type": "string", - "description": "PSE payer phone number", - "example": "+573001234567" - }, - "email": { - "type": "string", - "description": "PSE payer email", - "example": "juan@example.com" - }, - "bank_code": { - "type": [ - "string", - "null" - ], - "description": "PSE payer bank code", - "example": "1007" - } - }, - "required": [ - "payment_link", - "fid", - "full_name", - "tax_id", - "document_type", - "phone", - "email" - ] - }, - "transfers_instruction": { - "type": [ - "object", - "null" - ], - "properties": { - "account": { - "type": "string", - "description": "CVU/CBU/Alias account number", - "example": "0000003100012389237485" - }, - "type": { - "type": "string", - "enum": [ - "CVU", - "CBU", - "ALIAS" - ], - "description": "Account type (CVU, CBU, or ALIAS)", - "example": "CVU" - }, - "tax_id": { - "type": [ - "string", - "null" - ], - "description": "CUIT/CUIL (normalized, digits only)", - "example": "20123456783" - } - }, - "required": [ - "account", - "type" - ] - }, - "ted_instruction": { - "type": [ - "object", - "null" - ], - "properties": { - "beneficiary_name": { - "type": "string", - "example": "Blind Pay, Inc." - }, - "tax_id": { - "type": "string", - "example": "57.599.376/0001-81" - }, - "bank_code": { - "type": "string", - "example": "665" - }, - "bank_name": { - "type": "string", - "example": "STARK BANK S.A." - }, - "branch_code": { - "type": "string", - "example": "5340" - }, - "account_number": { - "type": "string", - "example": "01011707084-8" - }, - "account_type": { - "type": "string", - "example": "checking" - } - }, - "required": [ - "beneficiary_name", - "tax_id", - "bank_code", - "bank_name", - "branch_code", - "account_number", - "account_type" - ] - } - }, - "required": [ - "step" + "ach_cop_email": { + "example": "fernando.guzman@gmail.com", + "type": [ + "string", + "null" ] }, - "billing_fee_amount": { + "address_line_1": { + "example": "Address line 1", "type": [ - "number", + "string", "null" - ], - "description": "Billing fee in cents (charged at the end of the month)", - "example": 50 + ] }, - "transaction_fee_amount": { + "address_line_2": { + "example": "Address line 2", "type": [ - "number", + "string", "null" - ], - "description": "Transaction fee in cents (percentage-based fee)", - "example": 100 + ] }, - "blindpay_bank_details": { - "type": "object", - "properties": { - "routing_number": { - "type": "string", - "default": "121145349", - "example": "121145349" - }, - "account_number": { - "type": "string", - "default": "621327727210181", - "example": "621327727210181" - }, - "account_type": { - "type": "string", - "default": "Business checking", - "example": "Business checking" - }, - "swift_bic_code": { - "type": [ - "string", - "null" - ], - "default": "CHASUS33", - "example": "CHASUS33" - }, - "ach": { - "type": [ - "object", - "null" - ], - "properties": { - "routing_number": { - "type": "string", - "example": "123456789" - }, - "account_number": { - "type": "string", - "example": "123456789" - } - }, - "required": [ - "routing_number", - "account_number" - ] - }, - "wire": { - "type": [ - "object", - "null" - ], - "properties": { - "routing_number": { - "type": "string", - "example": "123456789" - }, - "account_number": { - "type": "string", - "example": "123456789" - } - }, - "required": [ - "routing_number", - "account_number" - ] - }, - "rtp": { - "type": [ - "object", - "null" - ], - "properties": { - "routing_number": { - "type": "string", - "example": "123456789" - }, - "account_number": { - "type": "string", - "example": "123456789" - } - }, - "required": [ - "routing_number", - "account_number" - ] - }, - "beneficiary": { - "type": "object", - "properties": { - "name": { - "type": "string", - "default": "BlindPay, Inc.", - "example": "BlindPay, Inc." - }, - "address_line_1": { - "type": "string", - "default": "8 The Green, #19364", - "example": "8 The Green, #19364" - }, - "address_line_2": { - "type": "string", - "default": "Dover, DE 19901", - "example": "Dover, DE 19901" - } - } - }, - "receiving_bank": { - "type": "object", - "properties": { - "name": { - "type": "string", - "default": "CFSB", - "example": "CFSB" - }, - "address_line_1": { - "type": "string", - "default": "1 Letterman Drive, Building A, Suite A4-700", - "example": "1 Letterman Drive, Building A, Suite A4-700" - }, - "address_line_2": { - "type": "string", - "default": "San Francisco, CA 94129", - "example": "San Francisco, CA 94129" - } - } - }, - "swift_account_number": { - "type": [ - "string", - "null" - ], - "example": "GB50TCCL04140449730892" - }, - "swift_receiving_bank": { - "type": [ - "object", - "null" - ], - "properties": { - "name": { - "type": [ - "string", - "null" - ], - "example": "JPMorgan Chase" - }, - "address_line_1": { - "type": [ - "string", - "null" - ], - "example": "270 Park Ave" - }, - "address_line_2": { - "type": [ - "string", - "null" - ], - "example": "New York, NY, 10017-2070" - } - } - } - }, - "required": [ - "beneficiary", - "receiving_bank" - ] - }, - "customer_id": { - "type": [ - "string", - "null" - ], - "minLength": 15, - "maxLength": 15, - "example": "re_000000000000" - }, - "receiver_amount": { - "type": [ - "number", - "null" - ], - "description": "10.10 USDC", - "example": 1010 - }, - "payment_method": { + "beneficiary_name": { + "example": "Individual full name or business name", + "maxLength": 128, "type": [ "string", "null" - ], - "enum": [ - "ach", - "wire", - "pix", - "ted", - "spei", - "transfers", - "pse", - "international_swift", - "rtp" - ], - "example": "pix" - }, - "sender_amount": { - "type": [ - "number", - "null" - ], - "description": "52.40 BRL needs to be sent in a pix transfer", - "example": 5240 - } - }, - "required": [ - "webhook_event", - "id", - "status", - "tracking_complete", - "tracking_payment", - "tracking_transaction", - "blindpay_bank_details" - ] - }, - "PayinCompleteWebhookOut": { - "type": "object", - "properties": { - "webhook_event": { - "type": "string", - "enum": [ - "payin.complete" ] }, - "id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "pi_000000000000" - }, - "status": { - "type": "string", + "business_industry": { "enum": [ - "processing", - "on_hold", - "failed", - "refunded", - "completed" - ], - "description": "Payin general status", - "example": "processing" - }, - "pix_code": { - "type": [ - "string", - "null" + "111998", + "112120", + "113310", + "115114", + "541211", + "541810", + "541430", + "541715", + "541930", + "561422", + "561311", + "561612", + "561740", + "561730", + "236115", + "236220", + "237310", + "238210", + "811111", + "812111", + "812112", + "532111", + "624410", + "541922", + "811210", + "812199", + "611110", + "611310", + "611410", + "611710", + "211120", + "212114", + "221310", + "562111", + "562920", + "213112", + "522110", + "522210", + "522320", + "523150", + "523940", + "523999", + "524113", + "813110", + "813211", + "813219", + "551112", + "721110", + "722511", + "722513", + "561510", + "713110", + "713210", + "712110", + "711110", + "711211", + "621111", + "621210", + "622110", + "623110", + "621511", + "623220", + "541940", + "621399", + "621910", + "541110", + "311421", + "337121", + "322220", + "339920", + "334210", + "339930", + "312130", + "334111", + "334118", + "325412", + "339112", + "336110", + "336390", + "315990", + "313110", + "339910", + "516120", + "513130", + "512250", + "519130", + "711410", + "711510", + "531110", + "531120", + "531130", + "531190", + "531210", + "531311", + "531312", + "531320", + "531390", + "454110", + "445110", + "455110", + "457110", + "449210", + "444110", + "459210", + "459120", + "445320", + "458110", + "458210", + "458310", + "455219", + "424210", + "456110", + "446120", + "541511", + "541512", + "541519", + "518210", + "511210", + "517111", + "517112", + "517410", + "481111", + "483111", + "485210", + "488510", + "484121", + "493110", + "423430", + "423690", + "423110", + "423830", + "423840", + "423510", + "424690", + "424990", + "424410", + "424480", + "423940", + "541611", + "541618", + "541330", + "541990", + "541214", + "561499" ], - "description": "PIX code", - "example": "00020101021226790014br.gov.bcb.pix2557brcode.starkinfra.com/v2/bcf07f6c4110454e9fd6f120bab13e835204000053039865802BR5915Blind Pay, Inc.6010Vila Velha62070503***6304BCAB" - }, - "memo_code": { + "example": "541511", "type": [ "string", "null" - ], - "description": "Memo code", - "example": "8K45GHBNT6BQ6462" + ] }, - "clabe": { + "city": { + "example": "City", "type": [ "string", "null" - ], - "description": "CLABE code", - "example": "014027000000000008" - }, - "partner_fee": { - "type": "integer", - "minimum": 0, - "default": 0, - "description": "Payin partner fee amount in cents", - "example": 25000 - }, - "tracking_complete": { - "type": "object", - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Complete step", - "example": "on_hold" - }, - "transaction_hash": { - "type": [ - "string", - "null" - ], - "description": "Complete transaction hash", - "example": "0x123...890" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Complete completed date", - "example": "2011-10-05T14:48:00.000Z" - } - }, - "required": [ - "step" - ] - }, - "tracking_payment": { - "type": "object", - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Payment step", - "example": "on_hold" - }, - "provider_name": { - "type": [ - "string", - "null" - ], - "description": "Payment provider name", - "example": "blockchain" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Payment completed date", - "example": "2011-10-05T14:48:00.000Z" - }, - "review_source": { - "type": [ - "string", - "null" - ], - "description": "Risk source that sent this payin to manual review", - "example": "seon_review" - }, - "review_context": { - "type": [ - "object", - "null" - ], - "additionalProperties": {}, - "description": "Structured risk context for manual review" - }, - "approved_risk_sources": { - "type": [ - "array", - "null" - ], - "items": { - "type": "string" - }, - "description": "Risk sources already approved by an analyst", - "example": [ - "seon_review" - ] - } - }, - "required": [ - "step" ] }, - "tracking_transaction": { - "type": "object", - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Payin transaction step", - "example": "processing" - }, - "status": { - "type": [ - "string", - "null" - ], - "enum": [ - "failed", - "completed" - ], - "description": "Payin transaction status", - "example": "failed" - }, - "external_id": { - "type": [ - "string", - "null" - ], - "description": "Payin transaction external id", - "example": "12345678" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Payin transaction completed date", - "example": "2011-10-05T14:48:00.000Z" - }, - "transaction_hash": { - "type": [ - "string", - "null" - ], - "description": "Blockchain transaction hash", - "example": "0x123...890" - }, - "provider_name": { - "type": [ - "string", - "null" - ], - "enum": [ - "Nvio Pagos", - "Brex", - "Stark Bank", - "JPMorgan Chase", - "HSBC", - "Inter", - "JP Morgan Chase", - "Bitso", - "Citi", - "CFSB", - "Triple A Technologies", - "Portage Bank" - ], - "description": "Payment provider name", - "example": "HSBC" - }, - "provider_transaction_id": { - "type": [ - "string", - "null" - ], - "description": "Payment provider transaction id", - "example": "" - }, - "sender_name": { - "type": [ - "string", - "null" - ], - "example": "John Doe Smith" - }, - "sender_bank_name": { - "type": [ - "string", - "null" - ], - "example": "Bank of America" - }, - "sender_tax_id": { - "type": [ - "string", - "null" - ], - "example": "123.456.789-10" - }, - "sender_bank_code": { - "type": [ - "string", - "null" - ], - "example": "00416968" - }, - "sender_account_number": { - "type": [ - "string", - "null" - ], - "example": "1234567890" - }, - "end_to_end_id": { - "type": [ - "string", - "null" - ], - "description": "BACEN Pix end-to-end transaction ID (govt Pix ID)", - "example": "E20018183202603311320vm6ALFpJpsS" - }, - "trace_number": { - "type": [ - "string", - "null" - ], - "example": "1234567890" - }, - "transaction_reference": { - "type": [ - "string", - "null" - ], - "example": "1234567890" + "country": { + "enum": [ + "AF", + "AL", + "DZ", + "AS", + "AD", + "AO", + "AI", + "AQ", + "AG", + "AR", + "AM", + "AW", + "AU", + "AT", + "AZ", + "BS", + "BH", + "BD", + "BB", + "BY", + "BE", + "BZ", + "BJ", + "BM", + "BT", + "BO", + "BQ", + "BA", + "BW", + "BV", + "BR", + "IO", + "BN", + "BG", + "BF", + "BI", + "CV", + "KH", + "CM", + "CA", + "KY", + "CF", + "TD", + "CL", + "CN", + "CX", + "CC", + "CO", + "KM", + "CD", + "CG", + "CK", + "CR", + "HR", + "CU", + "CW", + "CY", + "CZ", + "CI", + "DK", + "DJ", + "DM", + "DO", + "EC", + "EG", + "SV", + "GQ", + "ER", + "EE", + "SZ", + "ET", + "FK", + "FO", + "FJ", + "FI", + "FR", + "GF", + "PF", + "TF", + "GA", + "GM", + "GE", + "DE", + "GH", + "GI", + "GR", + "GL", + "GD", + "GP", + "GU", + "GT", + "GG", + "GN", + "GW", + "GY", + "HT", + "HM", + "VA", + "HN", + "HK", + "HU", + "IS", + "IN", + "ID", + "IR", + "IQ", + "IE", + "IM", + "IL", + "IT", + "JM", + "JP", + "JE", + "JO", + "KZ", + "KE", + "KI", + "KP", + "KR", + "KW", + "KG", + "LA", + "LV", + "LB", + "LS", + "LR", + "LY", + "LI", + "LT", + "LU", + "MO", + "MG", + "MW", + "MY", + "MV", + "ML", + "MT", + "MH", + "MQ", + "MR", + "MU", + "YT", + "MX", + "FM", + "MD", + "MC", + "MN", + "ME", + "MS", + "MA", + "MZ", + "MM", + "NA", + "NR", + "NP", + "NL", + "NC", + "NZ", + "NI", + "NE", + "NG", + "NU", + "NF", + "MP", + "NO", + "OM", + "PK", + "PW", + "PS", + "PA", + "PG", + "PY", + "PE", + "PH", + "PN", + "PL", + "PT", + "PR", + "QA", + "MK", + "RO", + "RU", + "RW", + "RE", + "BL", + "SH", + "KN", + "LC", + "MF", + "PM", + "VC", + "WS", + "SM", + "ST", + "SA", + "SN", + "RS", + "SC", + "SL", + "SG", + "SX", + "SK", + "SI", + "SB", + "SO", + "ZA", + "GS", + "SS", + "ES", + "LK", + "SD", + "SR", + "SJ", + "SE", + "CH", + "SY", + "TW", + "TJ", + "TZ", + "TH", + "TL", + "TG", + "TK", + "TO", + "TT", + "TN", + "TR", + "TM", + "TC", + "TV", + "UG", + "UA", + "AE", + "GB", + "UM", + "US", + "UY", + "UZ", + "VU", + "VE", + "VN", + "VG", + "VI", + "WF", + "EH", + "YE", + "ZM", + "ZW", + "AX" + ], + "example": "US", + "type": [ + "string", + "null" + ] + }, + "created_at": { + "example": "2021-01-01T00:00:00Z", + "format": "date-time", + "type": [ + "string", + "null" + ] + }, + "date_of_birth": { + "anyOf": [ + { + "format": "date-time", + "type": "string" }, - "description": { - "type": [ - "string", - "null" - ], - "example": "Payment from John Doe Smith" + { + "type": "string" }, - "pse_instruction": { - "type": [ - "object", - "null" - ], - "properties": { - "payment_link": { - "type": "string", - "description": "PSE payment link URL", - "example": "https://pse.example.com/payment/abc123" - }, - "fid": { - "type": "string", - "description": "PSE funding identifier for webhook matching", - "example": "fid_abc123" - }, - "full_name": { - "type": "string", - "description": "PSE payer full name", - "example": "Juan Pérez García" - }, - "tax_id": { - "type": "string", - "description": "PSE payer document number", - "example": "1234567890" - }, - "document_type": { - "type": "string", - "enum": [ - "CC", - "NIT" - ], - "description": "PSE payer document type", - "example": "CC" - }, - "phone": { - "type": "string", - "description": "PSE payer phone number", - "example": "+573001234567" - }, - "email": { - "type": "string", - "description": "PSE payer email", - "example": "juan@example.com" - }, - "bank_code": { - "type": [ - "string", - "null" - ], - "description": "PSE payer bank code", - "example": "1007" - } + { + "type": "null" + } + ], + "example": "1998-01-01T00:00:00Z" + }, + "id": { + "example": "ba_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "name": { + "example": "Bank Account Name", + "type": "string" + }, + "offramp_wallets": { + "example": [ + { + "address": "TALJN9zTTEL9TVBb4WuTt6wLvPqJZr3hvb", + "external_id": "your_external_id", + "id": "ow_000000000000", + "network": "tron" + } + ], + "items": { + "properties": { + "address": { + "example": "TALJN9zTTEL9TVBb4WuTt6wLvPqJZr3hvb", + "type": "string" }, - "required": [ - "payment_link", - "fid", - "full_name", - "tax_id", - "document_type", - "phone", - "email" - ] - }, - "transfers_instruction": { - "type": [ - "object", - "null" - ], - "properties": { - "account": { - "type": "string", - "description": "CVU/CBU/Alias account number", - "example": "0000003100012389237485" - }, - "type": { - "type": "string", - "enum": [ - "CVU", - "CBU", - "ALIAS" - ], - "description": "Account type (CVU, CBU, or ALIAS)", - "example": "CVU" - }, - "tax_id": { - "type": [ - "string", - "null" - ], - "description": "CUIT/CUIL (normalized, digits only)", - "example": "20123456783" - } + "circle_wallet_id": { + "example": "01234567-abcd-efgh-ijkl-012345678901", + "type": [ + "string", + "null" + ] }, - "required": [ - "account", - "type" - ] - }, - "ted_instruction": { - "type": [ - "object", - "null" - ], - "properties": { - "beneficiary_name": { - "type": "string", - "example": "Blind Pay, Inc." - }, - "tax_id": { - "type": "string", - "example": "57.599.376/0001-81" - }, - "bank_code": { - "type": "string", - "example": "665" - }, - "bank_name": { - "type": "string", - "example": "STARK BANK S.A." - }, - "branch_code": { - "type": "string", - "example": "5340" - }, - "account_number": { - "type": "string", - "example": "01011707084-8" - }, - "account_type": { - "type": "string", - "example": "checking" - } + "external_id": { + "example": "your_external_id", + "type": [ + "string", + "null" + ] }, - "required": [ - "beneficiary_name", - "tax_id", - "bank_code", - "bank_name", - "branch_code", - "account_number", - "account_type" - ] - } + "id": { + "example": "ow_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "network": { + "enum": [ + "tron", + "solana", + "solana_devnet", + "arbitrum", + "base", + "ethereum", + "polygon", + "sepolia", + "arbitrum_sepolia", + "base_sepolia", + "polygon_amoy" + ], + "example": "tron", + "type": "string" + } + }, + "required": [ + "id", + "network", + "address" + ], + "type": "object" }, - "required": [ - "step" + "type": [ + "array", + "null" ] }, - "billing_fee_amount": { + "phone_number": { + "example": "+13055555555", "type": [ - "number", + "string", "null" - ], - "description": "Billing fee in cents (charged at the end of the month)", - "example": 50 + ] }, - "transaction_fee_amount": { + "pix_key": { + "example": "14947677768", "type": [ - "number", + "string", "null" - ], - "description": "Transaction fee in cents (percentage-based fee)", - "example": 100 + ] }, - "blindpay_bank_details": { - "type": "object", - "properties": { - "routing_number": { - "type": "string", - "default": "121145349", - "example": "121145349" - }, - "account_number": { - "type": "string", - "default": "621327727210181", - "example": "621327727210181" - }, - "account_type": { - "type": "string", - "default": "Business checking", - "example": "Business checking" - }, - "swift_bic_code": { - "type": [ - "string", - "null" - ], - "default": "CHASUS33", - "example": "CHASUS33" - }, - "ach": { - "type": [ - "object", - "null" - ], - "properties": { - "routing_number": { - "type": "string", - "example": "123456789" - }, - "account_number": { - "type": "string", - "example": "123456789" - } - }, - "required": [ - "routing_number", - "account_number" - ] - }, - "wire": { - "type": [ - "object", - "null" - ], - "properties": { - "routing_number": { - "type": "string", - "example": "123456789" - }, - "account_number": { - "type": "string", - "example": "123456789" - } - }, - "required": [ - "routing_number", - "account_number" - ] - }, - "rtp": { - "type": [ - "object", - "null" - ], - "properties": { - "routing_number": { - "type": "string", - "example": "123456789" - }, - "account_number": { - "type": "string", - "example": "123456789" - } - }, - "required": [ - "routing_number", - "account_number" - ] - }, - "beneficiary": { - "type": "object", - "properties": { - "name": { - "type": "string", - "default": "BlindPay, Inc.", - "example": "BlindPay, Inc." - }, - "address_line_1": { - "type": "string", - "default": "8 The Green, #19364", - "example": "8 The Green, #19364" - }, - "address_line_2": { - "type": "string", - "default": "Dover, DE 19901", - "example": "Dover, DE 19901" - } - } - }, - "receiving_bank": { - "type": "object", - "properties": { - "name": { - "type": "string", - "default": "CFSB", - "example": "CFSB" - }, - "address_line_1": { - "type": "string", - "default": "1 Letterman Drive, Building A, Suite A4-700", - "example": "1 Letterman Drive, Building A, Suite A4-700" - }, - "address_line_2": { - "type": "string", - "default": "San Francisco, CA 94129", - "example": "San Francisco, CA 94129" - } - } - }, - "swift_account_number": { - "type": [ - "string", - "null" - ], - "example": "GB50TCCL04140449730892" - }, - "swift_receiving_bank": { - "type": [ - "object", - "null" - ], - "properties": { - "name": { - "type": [ - "string", - "null" - ], - "example": "JPMorgan Chase" - }, - "address_line_1": { - "type": [ - "string", - "null" - ], - "example": "270 Park Ave" - }, - "address_line_2": { - "type": [ - "string", - "null" - ], - "example": "New York, NY, 10017-2070" - } - } - } - }, - "required": [ - "beneficiary", - "receiving_bank" - ] - }, - "customer_id": { + "pix_safe_bank_code": { + "example": "00416968", + "pattern": "^\\d{4,8}$", "type": [ "string", "null" - ], - "minLength": 15, - "maxLength": 15, - "example": "re_000000000000" - }, - "receiver_amount": { - "type": [ - "number", - "null" - ], - "description": "10.10 USDC", - "example": 1010 + ] }, - "payment_method": { + "pix_safe_branch_code": { + "example": "0001", + "pattern": "^\\d{4}(-\\d)?$", "type": [ "string", "null" - ], - "enum": [ - "ach", - "wire", - "pix", - "ted", - "spei", - "transfers", - "pse", - "international_swift", - "rtp" - ], - "example": "pix" - }, - "sender_amount": { - "type": [ - "number", - "null" - ], - "description": "52.40 BRL needs to be sent in a pix transfer", - "example": 5240 - } - }, - "required": [ - "webhook_event", - "id", - "status", - "tracking_complete", - "tracking_payment", - "tracking_transaction", - "blindpay_bank_details" - ] - }, - "LimitIncreaseNewWebhookOut": { - "type": "object", - "properties": { - "webhook_event": { - "type": "string", - "enum": [ - "limitIncrease.new" ] }, - "id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "rl_000000000000" - }, - "status": { - "type": "string", - "enum": [ - "in_review", - "approved", - "rejected" - ], - "example": "in_review" - }, - "per_transaction": { - "type": [ - "integer", - "null" - ], - "maximum": 100000000000, - "example": 100000 - }, - "daily": { - "type": [ - "integer", - "null" - ], - "maximum": 100000000000, - "example": 200000 - }, - "monthly": { - "type": [ - "integer", - "null" - ], - "maximum": 100000000000, - "example": 1000000 - }, - "approved_per_transaction": { - "type": [ - "integer", - "null" - ], - "maximum": 100000000000, - "example": 70000 - }, - "approved_daily": { - "type": [ - "integer", - "null" - ], - "maximum": 100000000000, - "example": 140000 - }, - "approved_monthly": { - "type": [ - "integer", - "null" - ], - "maximum": 100000000000, - "example": 700000 - }, - "supporting_document_type": { + "pix_safe_cpf_cnpj": { + "example": "12345678901", "type": [ "string", "null" - ], - "enum": [ - "individual_bank_statement", - "individual_tax_return", - "individual_proof_of_income", - "individual_pay_stub", - "individual_employment_letter", - "individual_investment_statement", - "individual_crypto_exchange_statement", - "individual_blockchain_wallet_statement", - "business_bank_statement", - "business_financial_statements", - "business_tax_return", - "business_contract", - "business_accounts_receivable", - "business_merchant_processor_statement", - "business_shareholder_loan" - ], - "example": "individual_bank_statement" + ] }, - "supporting_document_file": { + "postal_code": { + "example": "Postal code", "type": [ "string", "null" - ], - "format": "uri", - "example": "https://example.com/document.pdf" - }, - "customer_id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "re_000000000000" - }, - "created_at": { - "example": "2021-01-01T00:00:00Z" - }, - "updated_at": { - "example": "2021-01-01T00:00:00Z" - } - }, - "required": [ - "webhook_event", - "id", - "status", - "customer_id" - ] - }, - "LimitIncreaseUpdateWebhookOut": { - "type": "object", - "properties": { - "webhook_event": { - "type": "string", - "enum": [ - "limitIncrease.update" ] }, - "id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "rl_000000000000" - }, - "status": { - "type": "string", + "recipient_relationship": { "enum": [ - "in_review", - "approved", - "rejected" - ], - "example": "in_review" - }, - "per_transaction": { - "type": [ - "integer", - "null" - ], - "maximum": 100000000000, - "example": 100000 - }, - "daily": { - "type": [ - "integer", - "null" - ], - "maximum": 100000000000, - "example": 200000 - }, - "monthly": { - "type": [ - "integer", - "null" - ], - "maximum": 100000000000, - "example": 1000000 - }, - "approved_per_transaction": { - "type": [ - "integer", - "null" - ], - "maximum": 100000000000, - "example": 70000 - }, - "approved_daily": { - "type": [ - "integer", - "null" + "first_party", + "employee", + "independent_contractor", + "vendor_or_supplier", + "subsidiary_or_affiliate", + "merchant_or_partner", + "customer", + "landlord", + "family", + "other" ], - "maximum": 100000000000, - "example": 140000 - }, - "approved_monthly": { + "example": "vendor_or_supplier", "type": [ - "integer", + "string", "null" - ], - "maximum": 100000000000, - "example": 700000 + ] }, - "supporting_document_type": { + "routing_number": { + "example": "012345678", "type": [ "string", "null" - ], - "enum": [ - "individual_bank_statement", - "individual_tax_return", - "individual_proof_of_income", - "individual_pay_stub", - "individual_employment_letter", - "individual_investment_statement", - "individual_crypto_exchange_statement", - "individual_blockchain_wallet_statement", - "business_bank_statement", - "business_financial_statements", - "business_tax_return", - "business_contract", - "business_accounts_receivable", - "business_merchant_processor_statement", - "business_shareholder_loan" - ], - "example": "individual_bank_statement" + ] }, - "supporting_document_file": { + "sepa_beneficiary_address_line_1": { + "example": "Friedrichstra\u00dfe 12", "type": [ "string", "null" - ], - "format": "uri", - "example": "https://example.com/document.pdf" - }, - "customer_id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "re_000000000000" - }, - "created_at": { - "example": "2021-01-01T00:00:00Z" - }, - "updated_at": { - "example": "2021-01-01T00:00:00Z" - } - }, - "required": [ - "webhook_event", - "id", - "status", - "customer_id" - ] - }, - "PayinUpdateWebhookOut": { - "type": "object", - "properties": { - "webhook_event": { - "type": "string", - "enum": [ - "payin.update" ] }, - "id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "pi_000000000000" - }, - "status": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "failed", - "refunded", - "completed" - ], - "description": "Payin general status", - "example": "processing" - }, - "pix_code": { + "sepa_beneficiary_address_line_2": { + "example": "Apt 4B", "type": [ "string", "null" - ], - "description": "PIX code", - "example": "00020101021226790014br.gov.bcb.pix2557brcode.starkinfra.com/v2/bcf07f6c4110454e9fd6f120bab13e835204000053039865802BR5915Blind Pay, Inc.6010Vila Velha62070503***6304BCAB" + ] }, - "memo_code": { + "sepa_beneficiary_bic": { + "description": "BIC/SWIFT code of the beneficiary bank", + "example": "TRWIBEB1XXX", "type": [ "string", "null" - ], - "description": "Memo code", - "example": "8K45GHBNT6BQ6462" + ] }, - "clabe": { + "sepa_beneficiary_city": { + "example": "Berlin", "type": [ "string", "null" - ], - "description": "CLABE code", - "example": "014027000000000008" - }, - "partner_fee": { - "type": "integer", - "minimum": 0, - "default": 0, - "description": "Payin partner fee amount in cents", - "example": 25000 - }, - "tracking_complete": { - "type": "object", - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Complete step", - "example": "on_hold" - }, - "transaction_hash": { - "type": [ - "string", - "null" - ], - "description": "Complete transaction hash", - "example": "0x123...890" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Complete completed date", - "example": "2011-10-05T14:48:00.000Z" - } - }, - "required": [ - "step" - ] - }, - "tracking_payment": { - "type": "object", - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Payment step", - "example": "on_hold" - }, - "provider_name": { - "type": [ - "string", - "null" - ], - "description": "Payment provider name", - "example": "blockchain" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Payment completed date", - "example": "2011-10-05T14:48:00.000Z" - }, - "review_source": { - "type": [ - "string", - "null" - ], - "description": "Risk source that sent this payin to manual review", - "example": "seon_review" - }, - "review_context": { - "type": [ - "object", - "null" - ], - "additionalProperties": {}, - "description": "Structured risk context for manual review" - }, - "approved_risk_sources": { - "type": [ - "array", - "null" - ], - "items": { - "type": "string" - }, - "description": "Risk sources already approved by an analyst", - "example": [ - "seon_review" - ] - } - }, - "required": [ - "step" ] }, - "tracking_transaction": { - "type": "object", - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Payin transaction step", - "example": "processing" - }, - "status": { - "type": [ - "string", - "null" - ], - "enum": [ - "failed", - "completed" - ], - "description": "Payin transaction status", - "example": "failed" - }, - "external_id": { - "type": [ - "string", - "null" - ], - "description": "Payin transaction external id", - "example": "12345678" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Payin transaction completed date", - "example": "2011-10-05T14:48:00.000Z" - }, - "transaction_hash": { - "type": [ - "string", - "null" - ], - "description": "Blockchain transaction hash", - "example": "0x123...890" - }, - "provider_name": { - "type": [ - "string", - "null" - ], - "enum": [ - "Nvio Pagos", - "Brex", - "Stark Bank", - "JPMorgan Chase", - "HSBC", - "Inter", - "JP Morgan Chase", - "Bitso", - "Citi", - "CFSB", - "Triple A Technologies", - "Portage Bank" - ], - "description": "Payment provider name", - "example": "HSBC" - }, - "provider_transaction_id": { - "type": [ - "string", - "null" - ], - "description": "Payment provider transaction id", - "example": "" - }, - "sender_name": { - "type": [ - "string", - "null" - ], - "example": "John Doe Smith" - }, - "sender_bank_name": { - "type": [ - "string", - "null" - ], - "example": "Bank of America" - }, - "sender_tax_id": { - "type": [ - "string", - "null" - ], - "example": "123.456.789-10" - }, - "sender_bank_code": { - "type": [ - "string", - "null" - ], - "example": "00416968" - }, - "sender_account_number": { - "type": [ - "string", - "null" - ], - "example": "1234567890" - }, - "end_to_end_id": { - "type": [ - "string", - "null" - ], - "description": "BACEN Pix end-to-end transaction ID (govt Pix ID)", - "example": "E20018183202603311320vm6ALFpJpsS" - }, - "trace_number": { - "type": [ - "string", - "null" - ], - "example": "1234567890" - }, - "transaction_reference": { - "type": [ - "string", - "null" - ], - "example": "1234567890" - }, - "description": { - "type": [ - "string", - "null" - ], - "example": "Payment from John Doe Smith" - }, - "pse_instruction": { - "type": [ - "object", - "null" - ], - "properties": { - "payment_link": { - "type": "string", - "description": "PSE payment link URL", - "example": "https://pse.example.com/payment/abc123" - }, - "fid": { - "type": "string", - "description": "PSE funding identifier for webhook matching", - "example": "fid_abc123" - }, - "full_name": { - "type": "string", - "description": "PSE payer full name", - "example": "Juan Pérez García" - }, - "tax_id": { - "type": "string", - "description": "PSE payer document number", - "example": "1234567890" - }, - "document_type": { - "type": "string", - "enum": [ - "CC", - "NIT" - ], - "description": "PSE payer document type", - "example": "CC" - }, - "phone": { - "type": "string", - "description": "PSE payer phone number", - "example": "+573001234567" - }, - "email": { - "type": "string", - "description": "PSE payer email", - "example": "juan@example.com" - }, - "bank_code": { - "type": [ - "string", - "null" - ], - "description": "PSE payer bank code", - "example": "1007" - } - }, - "required": [ - "payment_link", - "fid", - "full_name", - "tax_id", - "document_type", - "phone", - "email" - ] - }, - "transfers_instruction": { - "type": [ - "object", - "null" - ], - "properties": { - "account": { - "type": "string", - "description": "CVU/CBU/Alias account number", - "example": "0000003100012389237485" - }, - "type": { - "type": "string", - "enum": [ - "CVU", - "CBU", - "ALIAS" - ], - "description": "Account type (CVU, CBU, or ALIAS)", - "example": "CVU" - }, - "tax_id": { - "type": [ - "string", - "null" - ], - "description": "CUIT/CUIL (normalized, digits only)", - "example": "20123456783" - } - }, - "required": [ - "account", - "type" - ] - }, - "ted_instruction": { - "type": [ - "object", - "null" - ], - "properties": { - "beneficiary_name": { - "type": "string", - "example": "Blind Pay, Inc." - }, - "tax_id": { - "type": "string", - "example": "57.599.376/0001-81" - }, - "bank_code": { - "type": "string", - "example": "665" - }, - "bank_name": { - "type": "string", - "example": "STARK BANK S.A." - }, - "branch_code": { - "type": "string", - "example": "5340" - }, - "account_number": { - "type": "string", - "example": "01011707084-8" - }, - "account_type": { - "type": "string", - "example": "checking" - } - }, - "required": [ - "beneficiary_name", - "tax_id", - "bank_code", - "bank_name", - "branch_code", - "account_number", - "account_type" - ] - } - }, - "required": [ - "step" + "sepa_beneficiary_country": { + "enum": [ + "AF", + "AL", + "DZ", + "AS", + "AD", + "AO", + "AI", + "AQ", + "AG", + "AR", + "AM", + "AW", + "AU", + "AT", + "AZ", + "BS", + "BH", + "BD", + "BB", + "BY", + "BE", + "BZ", + "BJ", + "BM", + "BT", + "BO", + "BQ", + "BA", + "BW", + "BV", + "BR", + "IO", + "BN", + "BG", + "BF", + "BI", + "CV", + "KH", + "CM", + "CA", + "KY", + "CF", + "TD", + "CL", + "CN", + "CX", + "CC", + "CO", + "KM", + "CD", + "CG", + "CK", + "CR", + "HR", + "CU", + "CW", + "CY", + "CZ", + "CI", + "DK", + "DJ", + "DM", + "DO", + "EC", + "EG", + "SV", + "GQ", + "ER", + "EE", + "SZ", + "ET", + "FK", + "FO", + "FJ", + "FI", + "FR", + "GF", + "PF", + "TF", + "GA", + "GM", + "GE", + "DE", + "GH", + "GI", + "GR", + "GL", + "GD", + "GP", + "GU", + "GT", + "GG", + "GN", + "GW", + "GY", + "HT", + "HM", + "VA", + "HN", + "HK", + "HU", + "IS", + "IN", + "ID", + "IR", + "IQ", + "IE", + "IM", + "IL", + "IT", + "JM", + "JP", + "JE", + "JO", + "KZ", + "KE", + "KI", + "KP", + "KR", + "KW", + "KG", + "LA", + "LV", + "LB", + "LS", + "LR", + "LY", + "LI", + "LT", + "LU", + "MO", + "MG", + "MW", + "MY", + "MV", + "ML", + "MT", + "MH", + "MQ", + "MR", + "MU", + "YT", + "MX", + "FM", + "MD", + "MC", + "MN", + "ME", + "MS", + "MA", + "MZ", + "MM", + "NA", + "NR", + "NP", + "NL", + "NC", + "NZ", + "NI", + "NE", + "NG", + "NU", + "NF", + "MP", + "NO", + "OM", + "PK", + "PW", + "PS", + "PA", + "PG", + "PY", + "PE", + "PH", + "PN", + "PL", + "PT", + "PR", + "QA", + "MK", + "RO", + "RU", + "RW", + "RE", + "BL", + "SH", + "KN", + "LC", + "MF", + "PM", + "VC", + "WS", + "SM", + "ST", + "SA", + "SN", + "RS", + "SC", + "SL", + "SG", + "SX", + "SK", + "SI", + "SB", + "SO", + "ZA", + "GS", + "SS", + "ES", + "LK", + "SD", + "SR", + "SJ", + "SE", + "CH", + "SY", + "TW", + "TJ", + "TZ", + "TH", + "TL", + "TG", + "TK", + "TO", + "TT", + "TN", + "TR", + "TM", + "TC", + "TV", + "UG", + "UA", + "AE", + "GB", + "UM", + "US", + "UY", + "UZ", + "VU", + "VE", + "VN", + "VG", + "VI", + "WF", + "EH", + "YE", + "ZM", + "ZW", + "AX" + ], + "example": "DE", + "type": [ + "string", + "null" ] }, - "billing_fee_amount": { + "sepa_beneficiary_legal_name": { + "example": "Hans M\u00fcller", + "maxLength": 128, "type": [ - "number", + "string", "null" - ], - "description": "Billing fee in cents (charged at the end of the month)", - "example": 50 + ] }, - "transaction_fee_amount": { + "sepa_beneficiary_postal_code": { + "example": "10117", "type": [ - "number", + "string", "null" - ], - "description": "Transaction fee in cents (percentage-based fee)", - "example": 100 + ] }, - "blindpay_bank_details": { - "type": "object", - "properties": { - "routing_number": { - "type": "string", - "default": "121145349", - "example": "121145349" - }, - "account_number": { - "type": "string", - "default": "621327727210181", - "example": "621327727210181" - }, - "account_type": { - "type": "string", - "default": "Business checking", - "example": "Business checking" - }, - "swift_bic_code": { - "type": [ - "string", - "null" - ], - "default": "CHASUS33", - "example": "CHASUS33" - }, - "ach": { - "type": [ - "object", - "null" - ], - "properties": { - "routing_number": { - "type": "string", - "example": "123456789" - }, - "account_number": { - "type": "string", - "example": "123456789" - } - }, - "required": [ - "routing_number", - "account_number" - ] - }, - "wire": { - "type": [ - "object", - "null" - ], - "properties": { - "routing_number": { - "type": "string", - "example": "123456789" - }, - "account_number": { - "type": "string", - "example": "123456789" - } - }, - "required": [ - "routing_number", - "account_number" - ] - }, - "rtp": { - "type": [ - "object", - "null" - ], - "properties": { - "routing_number": { - "type": "string", - "example": "123456789" - }, - "account_number": { - "type": "string", - "example": "123456789" - } - }, - "required": [ - "routing_number", - "account_number" - ] - }, - "beneficiary": { - "type": "object", - "properties": { - "name": { - "type": "string", - "default": "BlindPay, Inc.", - "example": "BlindPay, Inc." - }, - "address_line_1": { - "type": "string", - "default": "8 The Green, #19364", - "example": "8 The Green, #19364" - }, - "address_line_2": { - "type": "string", - "default": "Dover, DE 19901", - "example": "Dover, DE 19901" - } - } - }, - "receiving_bank": { - "type": "object", - "properties": { - "name": { - "type": "string", - "default": "CFSB", - "example": "CFSB" - }, - "address_line_1": { - "type": "string", - "default": "1 Letterman Drive, Building A, Suite A4-700", - "example": "1 Letterman Drive, Building A, Suite A4-700" - }, - "address_line_2": { - "type": "string", - "default": "San Francisco, CA 94129", - "example": "San Francisco, CA 94129" - } - } - }, - "swift_account_number": { - "type": [ - "string", - "null" - ], - "example": "GB50TCCL04140449730892" - }, - "swift_receiving_bank": { - "type": [ - "object", - "null" - ], - "properties": { - "name": { - "type": [ - "string", - "null" - ], - "example": "JPMorgan Chase" - }, - "address_line_1": { - "type": [ - "string", - "null" - ], - "example": "270 Park Ave" - }, - "address_line_2": { - "type": [ - "string", - "null" - ], - "example": "New York, NY, 10017-2070" - } - } - } - }, - "required": [ - "beneficiary", - "receiving_bank" + "sepa_beneficiary_state_province_region": { + "example": "Berlin", + "type": [ + "string", + "null" ] }, - "customer_id": { + "sepa_iban": { + "example": "DE89370400440532013000", "type": [ "string", "null" - ], - "minLength": 15, - "maxLength": 15, - "example": "re_000000000000" + ] }, - "receiver_amount": { + "spei_clabe": { + "example": "5482347403740546", "type": [ - "number", + "string", "null" - ], - "description": "10.10 USDC", - "example": 1010 + ] }, - "payment_method": { + "spei_institution_code": { + "example": "40002", + "maxLength": 5, + "minLength": 5, "type": [ "string", "null" - ], + ] + }, + "spei_protocol": { + "description": "For debitcard and phonenum the spei_institution_code is required", "enum": [ - "ach", - "wire", - "pix", - "ted", - "spei", - "transfers", - "pse", - "international_swift", - "rtp" + "clabe", + "debitcard", + "phonenum" ], - "example": "pix" - }, - "sender_amount": { + "example": "clabe", "type": [ - "number", + "string", "null" - ], - "description": "52.40 BRL needs to be sent in a pix transfer", - "example": 5240 - } - }, - "required": [ - "webhook_event", - "id", - "status", - "tracking_complete", - "tracking_payment", - "tracking_transaction", - "blindpay_bank_details" - ] - }, - "PayinPartnerFeeWebhookOut": { - "type": "object", - "properties": { - "webhook_event": { - "type": "string", - "enum": [ - "payin.partnerFee" ] }, - "id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "pi_000000000000" + "state_province_region": { + "example": "State/Province/Region", + "type": [ + "string", + "null" + ] }, "status": { - "type": "string", "enum": [ - "processing", - "on_hold", - "failed", - "refunded", - "completed" + "verifying", + "approved", + "rejected", + "deprecated" ], - "description": "Payin general status", - "example": "processing" - }, - "pix_code": { + "example": "verifying", "type": [ "string", "null" - ], - "description": "PIX code", - "example": "00020101021226790014br.gov.bcb.pix2557brcode.starkinfra.com/v2/bcf07f6c4110454e9fd6f120bab13e835204000053039865802BR5915Blind Pay, Inc.6010Vila Velha62070503***6304BCAB" + ] }, - "memo_code": { + "swift_account_holder_name": { + "example": "John Doe", + "maxLength": 50, "type": [ "string", "null" - ], - "description": "Memo code", - "example": "8K45GHBNT6BQ6462" + ] }, - "clabe": { + "swift_account_number_iban": { + "example": "123456789", "type": [ "string", "null" - ], - "description": "CLABE code", - "example": "014027000000000008" + ] }, - "partner_fee": { - "type": "integer", - "minimum": 0, - "default": 0, - "description": "Payin partner fee amount in cents", - "example": 25000 + "swift_bank_address_line_1": { + "example": "123 Main Street, Suite 100, Downtown District, City Center CP 12345", + "type": [ + "string", + "null" + ] }, - "tracking_complete": { - "type": "object", - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Complete step", - "example": "on_hold" - }, - "transaction_hash": { - "type": [ - "string", - "null" - ], - "description": "Complete transaction hash", - "example": "0x123...890" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Complete completed date", - "example": "2011-10-05T14:48:00.000Z" - } - }, - "required": [ - "step" + "swift_bank_address_line_2": { + "example": "456 Oak Avenue, Building 7, Financial District, Business Center CP 54321", + "type": [ + "string", + "null" ] }, - "tracking_payment": { - "type": "object", - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Payment step", - "example": "on_hold" - }, - "provider_name": { - "type": [ - "string", - "null" - ], - "description": "Payment provider name", - "example": "blockchain" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Payment completed date", - "example": "2011-10-05T14:48:00.000Z" - }, - "review_source": { - "type": [ - "string", - "null" - ], - "description": "Risk source that sent this payin to manual review", - "example": "seon_review" - }, - "review_context": { - "type": [ - "object", - "null" - ], - "additionalProperties": {}, - "description": "Structured risk context for manual review" - }, - "approved_risk_sources": { - "type": [ - "array", - "null" - ], - "items": { - "type": "string" - }, - "description": "Risk sources already approved by an analyst", - "example": [ - "seon_review" - ] - } - }, - "required": [ - "step" + "swift_bank_city": { + "example": "City", + "type": [ + "string", + "null" ] }, - "tracking_transaction": { - "type": "object", - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Payin transaction step", - "example": "processing" - }, - "status": { - "type": [ - "string", - "null" - ], - "enum": [ - "failed", - "completed" - ], - "description": "Payin transaction status", - "example": "failed" - }, - "external_id": { - "type": [ - "string", - "null" - ], - "description": "Payin transaction external id", - "example": "12345678" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Payin transaction completed date", - "example": "2011-10-05T14:48:00.000Z" - }, - "transaction_hash": { - "type": [ - "string", - "null" - ], - "description": "Blockchain transaction hash", - "example": "0x123...890" - }, - "provider_name": { - "type": [ - "string", - "null" - ], - "enum": [ - "Nvio Pagos", - "Brex", - "Stark Bank", - "JPMorgan Chase", - "HSBC", - "Inter", - "JP Morgan Chase", - "Bitso", - "Citi", - "CFSB", - "Triple A Technologies", - "Portage Bank" - ], - "description": "Payment provider name", - "example": "HSBC" - }, - "provider_transaction_id": { - "type": [ - "string", - "null" - ], - "description": "Payment provider transaction id", - "example": "" - }, - "sender_name": { - "type": [ - "string", - "null" - ], - "example": "John Doe Smith" - }, - "sender_bank_name": { - "type": [ - "string", - "null" - ], - "example": "Bank of America" - }, - "sender_tax_id": { - "type": [ - "string", - "null" - ], - "example": "123.456.789-10" - }, - "sender_bank_code": { - "type": [ - "string", - "null" - ], - "example": "00416968" - }, - "sender_account_number": { - "type": [ - "string", - "null" - ], - "example": "1234567890" - }, - "end_to_end_id": { - "type": [ - "string", - "null" - ], - "description": "BACEN Pix end-to-end transaction ID (govt Pix ID)", - "example": "E20018183202603311320vm6ALFpJpsS" - }, - "trace_number": { - "type": [ - "string", - "null" - ], - "example": "1234567890" - }, - "transaction_reference": { - "type": [ - "string", - "null" - ], - "example": "1234567890" - }, - "description": { - "type": [ - "string", - "null" - ], - "example": "Payment from John Doe Smith" - }, - "pse_instruction": { - "type": [ - "object", - "null" - ], - "properties": { - "payment_link": { - "type": "string", - "description": "PSE payment link URL", - "example": "https://pse.example.com/payment/abc123" - }, - "fid": { - "type": "string", - "description": "PSE funding identifier for webhook matching", - "example": "fid_abc123" - }, - "full_name": { - "type": "string", - "description": "PSE payer full name", - "example": "Juan Pérez García" - }, - "tax_id": { - "type": "string", - "description": "PSE payer document number", - "example": "1234567890" - }, - "document_type": { - "type": "string", - "enum": [ - "CC", - "NIT" - ], - "description": "PSE payer document type", - "example": "CC" - }, - "phone": { - "type": "string", - "description": "PSE payer phone number", - "example": "+573001234567" - }, - "email": { - "type": "string", - "description": "PSE payer email", - "example": "juan@example.com" - }, - "bank_code": { - "type": [ - "string", - "null" - ], - "description": "PSE payer bank code", - "example": "1007" - } - }, - "required": [ - "payment_link", - "fid", - "full_name", - "tax_id", - "document_type", - "phone", - "email" - ] - }, - "transfers_instruction": { - "type": [ - "object", - "null" - ], - "properties": { - "account": { - "type": "string", - "description": "CVU/CBU/Alias account number", - "example": "0000003100012389237485" - }, - "type": { - "type": "string", - "enum": [ - "CVU", - "CBU", - "ALIAS" - ], - "description": "Account type (CVU, CBU, or ALIAS)", - "example": "CVU" - }, - "tax_id": { - "type": [ - "string", - "null" - ], - "description": "CUIT/CUIL (normalized, digits only)", - "example": "20123456783" - } - }, - "required": [ - "account", - "type" - ] - }, - "ted_instruction": { - "type": [ - "object", - "null" - ], - "properties": { - "beneficiary_name": { - "type": "string", - "example": "Blind Pay, Inc." - }, - "tax_id": { - "type": "string", - "example": "57.599.376/0001-81" - }, - "bank_code": { - "type": "string", - "example": "665" - }, - "bank_name": { - "type": "string", - "example": "STARK BANK S.A." - }, - "branch_code": { - "type": "string", - "example": "5340" - }, - "account_number": { - "type": "string", - "example": "01011707084-8" - }, - "account_type": { - "type": "string", - "example": "checking" - } - }, - "required": [ - "beneficiary_name", - "tax_id", - "bank_code", - "bank_name", - "branch_code", - "account_number", - "account_type" - ] - } - }, - "required": [ - "step" - ] - }, - "billing_fee_amount": { - "type": [ - "number", - "null" + "swift_bank_country": { + "enum": [ + "AF", + "AL", + "DZ", + "AS", + "AD", + "AO", + "AI", + "AQ", + "AG", + "AR", + "AM", + "AW", + "AU", + "AT", + "AZ", + "BS", + "BH", + "BD", + "BB", + "BY", + "BE", + "BZ", + "BJ", + "BM", + "BT", + "BO", + "BQ", + "BA", + "BW", + "BV", + "BR", + "IO", + "BN", + "BG", + "BF", + "BI", + "CV", + "KH", + "CM", + "CA", + "KY", + "CF", + "TD", + "CL", + "CN", + "CX", + "CC", + "CO", + "KM", + "CD", + "CG", + "CK", + "CR", + "HR", + "CU", + "CW", + "CY", + "CZ", + "CI", + "DK", + "DJ", + "DM", + "DO", + "EC", + "EG", + "SV", + "GQ", + "ER", + "EE", + "SZ", + "ET", + "FK", + "FO", + "FJ", + "FI", + "FR", + "GF", + "PF", + "TF", + "GA", + "GM", + "GE", + "DE", + "GH", + "GI", + "GR", + "GL", + "GD", + "GP", + "GU", + "GT", + "GG", + "GN", + "GW", + "GY", + "HT", + "HM", + "VA", + "HN", + "HK", + "HU", + "IS", + "IN", + "ID", + "IR", + "IQ", + "IE", + "IM", + "IL", + "IT", + "JM", + "JP", + "JE", + "JO", + "KZ", + "KE", + "KI", + "KP", + "KR", + "KW", + "KG", + "LA", + "LV", + "LB", + "LS", + "LR", + "LY", + "LI", + "LT", + "LU", + "MO", + "MG", + "MW", + "MY", + "MV", + "ML", + "MT", + "MH", + "MQ", + "MR", + "MU", + "YT", + "MX", + "FM", + "MD", + "MC", + "MN", + "ME", + "MS", + "MA", + "MZ", + "MM", + "NA", + "NR", + "NP", + "NL", + "NC", + "NZ", + "NI", + "NE", + "NG", + "NU", + "NF", + "MP", + "NO", + "OM", + "PK", + "PW", + "PS", + "PA", + "PG", + "PY", + "PE", + "PH", + "PN", + "PL", + "PT", + "PR", + "QA", + "MK", + "RO", + "RU", + "RW", + "RE", + "BL", + "SH", + "KN", + "LC", + "MF", + "PM", + "VC", + "WS", + "SM", + "ST", + "SA", + "SN", + "RS", + "SC", + "SL", + "SG", + "SX", + "SK", + "SI", + "SB", + "SO", + "ZA", + "GS", + "SS", + "ES", + "LK", + "SD", + "SR", + "SJ", + "SE", + "CH", + "SY", + "TW", + "TJ", + "TZ", + "TH", + "TL", + "TG", + "TK", + "TO", + "TT", + "TN", + "TR", + "TM", + "TC", + "TV", + "UG", + "UA", + "AE", + "GB", + "UM", + "US", + "UY", + "UZ", + "VU", + "VE", + "VN", + "VG", + "VI", + "WF", + "EH", + "YE", + "ZM", + "ZW", + "AX" ], - "description": "Billing fee in cents (charged at the end of the month)", - "example": 50 - }, - "transaction_fee_amount": { + "example": "MX", "type": [ - "number", + "string", "null" - ], - "description": "Transaction fee in cents (percentage-based fee)", - "example": 100 - }, - "blindpay_bank_details": { - "type": "object", - "properties": { - "routing_number": { - "type": "string", - "default": "121145349", - "example": "121145349" - }, - "account_number": { - "type": "string", - "default": "621327727210181", - "example": "621327727210181" - }, - "account_type": { - "type": "string", - "default": "Business checking", - "example": "Business checking" - }, - "swift_bic_code": { - "type": [ - "string", - "null" - ], - "default": "CHASUS33", - "example": "CHASUS33" - }, - "ach": { - "type": [ - "object", - "null" - ], - "properties": { - "routing_number": { - "type": "string", - "example": "123456789" - }, - "account_number": { - "type": "string", - "example": "123456789" - } - }, - "required": [ - "routing_number", - "account_number" - ] - }, - "wire": { - "type": [ - "object", - "null" - ], - "properties": { - "routing_number": { - "type": "string", - "example": "123456789" - }, - "account_number": { - "type": "string", - "example": "123456789" - } - }, - "required": [ - "routing_number", - "account_number" - ] - }, - "rtp": { - "type": [ - "object", - "null" - ], - "properties": { - "routing_number": { - "type": "string", - "example": "123456789" - }, - "account_number": { - "type": "string", - "example": "123456789" - } - }, - "required": [ - "routing_number", - "account_number" - ] - }, - "beneficiary": { - "type": "object", - "properties": { - "name": { - "type": "string", - "default": "BlindPay, Inc.", - "example": "BlindPay, Inc." - }, - "address_line_1": { - "type": "string", - "default": "8 The Green, #19364", - "example": "8 The Green, #19364" - }, - "address_line_2": { - "type": "string", - "default": "Dover, DE 19901", - "example": "Dover, DE 19901" - } - } - }, - "receiving_bank": { - "type": "object", - "properties": { - "name": { - "type": "string", - "default": "CFSB", - "example": "CFSB" - }, - "address_line_1": { - "type": "string", - "default": "1 Letterman Drive, Building A, Suite A4-700", - "example": "1 Letterman Drive, Building A, Suite A4-700" - }, - "address_line_2": { - "type": "string", - "default": "San Francisco, CA 94129", - "example": "San Francisco, CA 94129" - } - } - }, - "swift_account_number": { - "type": [ - "string", - "null" - ], - "example": "GB50TCCL04140449730892" - }, - "swift_receiving_bank": { - "type": [ - "object", - "null" - ], - "properties": { - "name": { - "type": [ - "string", - "null" - ], - "example": "JPMorgan Chase" - }, - "address_line_1": { - "type": [ - "string", - "null" - ], - "example": "270 Park Ave" - }, - "address_line_2": { - "type": [ - "string", - "null" - ], - "example": "New York, NY, 10017-2070" - } - } - } - }, - "required": [ - "beneficiary", - "receiving_bank" ] }, - "customer_id": { + "swift_bank_name": { + "example": "Banco Regional SA", "type": [ "string", "null" - ], - "minLength": 15, - "maxLength": 15, - "example": "re_000000000000" + ] }, - "receiver_amount": { + "swift_bank_postal_code": { + "example": "11530", "type": [ - "number", + "string", "null" - ], - "description": "10.10 USDC", - "example": 1010 + ] }, - "payment_method": { + "swift_bank_state_province_region": { + "example": "District", "type": [ "string", "null" - ], - "enum": [ - "ach", - "wire", - "pix", - "ted", - "spei", - "transfers", - "pse", - "international_swift", - "rtp" - ], - "example": "pix" + ] }, - "sender_amount": { + "swift_beneficiary_address_line_1": { + "example": "123 MAIN STREET SUITE 100", "type": [ - "number", + "string", "null" - ], - "description": "52.40 BRL needs to be sent in a pix transfer", - "example": 5240 - } - }, - "required": [ - "webhook_event", - "id", - "status", - "tracking_complete", - "tracking_payment", - "tracking_transaction", - "blindpay_bank_details" - ] - }, - "PayoutNewWebhookOut": { - "type": "object", - "properties": { - "webhook_event": { - "type": "string", - "enum": [ - "payout.new" ] }, - "id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "pa_000000000000" - }, - "status": { - "type": "string", - "enum": [ - "processing", - "failed", - "refunded", - "completed", - "on_hold" - ], - "description": "Payout general status", - "example": "processing" - }, - "sender_wallet_address": { - "type": "string", - "description": "Payout wallet address", - "example": "0x123...890" - }, - "billing_fee_amount": { + "swift_beneficiary_address_line_2": { + "example": "BUILDING A FLOOR 5", "type": [ - "number", + "string", "null" - ], - "description": "Billing fee in cents (charged via invoice at the end of the month)", - "example": 50 + ] }, - "transaction_fee_amount": { + "swift_beneficiary_city": { + "example": "MEXICO CITY", "type": [ - "number", + "string", "null" - ], - "description": "Transaction fee in cents (percentage-based fee)", - "example": 100 - }, - "partner_fee": { - "type": "integer", - "minimum": 0, - "default": 0, - "description": "Payout partner fee amount in cents (can be negative for rebates)", - "example": -25000 + ] }, - "tracking_complete": { - "type": "object", - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Complete step", - "example": "on_hold" - }, - "status": { - "type": [ - "string", - "null" - ], - "enum": [ - "tokens_refunded", - "paid" - ], - "description": "Complete status", - "example": "tokens_refunded" - }, - "refund_reason": { - "type": [ - "string", - "null" - ], - "description": "Reason for refund when tokens are returned to sender", - "example": "fiat_payment_failed" - }, - "transaction_hash": { - "type": [ - "string", - "null" - ], - "description": "Complete transaction hash", - "example": "0x123...890" - }, - "provider_transaction_id": { - "type": [ - "string", - "null" - ], - "description": "Provider-side handle for the refund transaction (e.g. Circle transaction id)", - "example": "67c12eae-b7bc-31cc-a5ef-623dcea82346" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Complete completed date", - "example": "2011-10-05T14:48:00.000Z" - } - }, - "required": [ - "step" + "swift_beneficiary_country": { + "enum": [ + "AF", + "AL", + "DZ", + "AS", + "AD", + "AO", + "AI", + "AQ", + "AG", + "AR", + "AM", + "AW", + "AU", + "AT", + "AZ", + "BS", + "BH", + "BD", + "BB", + "BY", + "BE", + "BZ", + "BJ", + "BM", + "BT", + "BO", + "BQ", + "BA", + "BW", + "BV", + "BR", + "IO", + "BN", + "BG", + "BF", + "BI", + "CV", + "KH", + "CM", + "CA", + "KY", + "CF", + "TD", + "CL", + "CN", + "CX", + "CC", + "CO", + "KM", + "CD", + "CG", + "CK", + "CR", + "HR", + "CU", + "CW", + "CY", + "CZ", + "CI", + "DK", + "DJ", + "DM", + "DO", + "EC", + "EG", + "SV", + "GQ", + "ER", + "EE", + "SZ", + "ET", + "FK", + "FO", + "FJ", + "FI", + "FR", + "GF", + "PF", + "TF", + "GA", + "GM", + "GE", + "DE", + "GH", + "GI", + "GR", + "GL", + "GD", + "GP", + "GU", + "GT", + "GG", + "GN", + "GW", + "GY", + "HT", + "HM", + "VA", + "HN", + "HK", + "HU", + "IS", + "IN", + "ID", + "IR", + "IQ", + "IE", + "IM", + "IL", + "IT", + "JM", + "JP", + "JE", + "JO", + "KZ", + "KE", + "KI", + "KP", + "KR", + "KW", + "KG", + "LA", + "LV", + "LB", + "LS", + "LR", + "LY", + "LI", + "LT", + "LU", + "MO", + "MG", + "MW", + "MY", + "MV", + "ML", + "MT", + "MH", + "MQ", + "MR", + "MU", + "YT", + "MX", + "FM", + "MD", + "MC", + "MN", + "ME", + "MS", + "MA", + "MZ", + "MM", + "NA", + "NR", + "NP", + "NL", + "NC", + "NZ", + "NI", + "NE", + "NG", + "NU", + "NF", + "MP", + "NO", + "OM", + "PK", + "PW", + "PS", + "PA", + "PG", + "PY", + "PE", + "PH", + "PN", + "PL", + "PT", + "PR", + "QA", + "MK", + "RO", + "RU", + "RW", + "RE", + "BL", + "SH", + "KN", + "LC", + "MF", + "PM", + "VC", + "WS", + "SM", + "ST", + "SA", + "SN", + "RS", + "SC", + "SL", + "SG", + "SX", + "SK", + "SI", + "SB", + "SO", + "ZA", + "GS", + "SS", + "ES", + "LK", + "SD", + "SR", + "SJ", + "SE", + "CH", + "SY", + "TW", + "TJ", + "TZ", + "TH", + "TL", + "TG", + "TK", + "TO", + "TT", + "TN", + "TR", + "TM", + "TC", + "TV", + "UG", + "UA", + "AE", + "GB", + "UM", + "US", + "UY", + "UZ", + "VU", + "VE", + "VN", + "VG", + "VI", + "WF", + "EH", + "YE", + "ZM", + "ZW", + "AX" + ], + "example": "MX", + "type": [ + "string", + "null" ] }, - "tracking_payment": { - "type": "object", - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Payment step", - "example": "on_hold" - }, - "provider_name": { - "type": [ - "string", - "null" - ], - "enum": [ - "Nvio Pagos", - "Brex", - "Stark Bank", - "JPMorgan Chase", - "HSBC", - "Inter", - "JP Morgan Chase", - "Bitso", - "Citi", - "CFSB", - "Triple A Technologies", - "Portage Bank" - ], - "description": "Payment provider name", - "example": "HSBC" - }, - "provider_integration": { - "type": [ - "string", - "null" - ], - "enum": [ - "veem", - "zenus", - "checkbook", - "onemoney", - "bitso", - "starkbank", - "triplea", - "infinitus" - ], - "description": "Machine-readable integration that executed the fiat leg. Unlike provider_name (a client-facing bank label), this uniquely identifies the integration — e.g. zenus vs checkbook, which share the \"JPMorgan Chase\" label.", - "example": "zenus" - }, - "provider_transaction_id": { - "type": [ - "string", - "null" - ], - "description": "Payment provider transaction id", - "example": "0x123...890" - }, - "provider_status": { - "type": [ - "string", - "null" - ], - "enum": [ - "canceled", - "failed", - "returned", - "sent" - ], - "description": "Payment provider status", - "example": "canceled" - }, - "provider_error_reason": { - "type": [ - "string", - "null" - ], - "description": "Provider error reason when payment fails (e.g. invalid_key, wrong_parameters)", - "example": "invalid_key" - }, - "provider_uetr": { - "type": [ - "string", - "null" - ], - "maxLength": 120, - "description": "Unique end-to-end transaction reference (UETR). Populated once the wire is confirmed by the network; null while the payment is in flight or when the rail does not expose it (e.g. ACH).", - "example": "37d10eff-d450-4aba-a5d4-e3978f5a3343" - }, - "provider_imad": { - "type": [ - "string", - "null" - ], - "maxLength": 120, - "description": "Fed Input Message Accountability Data (IMAD). Domestic Fedwire payments only; null on ACH and SWIFT.", - "example": "20260526MMQFMP2M008120" - }, - "provider_reference": { - "type": [ - "string", - "null" - ], - "maxLength": 120, - "description": "Provider (JPMorgan/Zenus) payment reference captured from the ACCOUNT.ACCOUNT booking webhook (Zenus contractSource.sourceRef). Present for some ACH/wire payouts; a bank-side reference, not the formal ACH network trace number.", - "example": "2084734238TC" - }, - "provider_clearing_system": { - "type": [ - "string", - "null" - ], - "maxLength": 40, - "description": "Clearing system that processed the payment (e.g. FED, CHIPS, ACH, SWIFT).", - "example": "FED" - }, - "recipient_name": { - "type": [ - "string", - "null" - ], - "description": "Recipient name", - "example": "John Doe" - }, - "recipient_tax_id": { - "type": [ - "string", - "null" - ], - "description": "Recipient tax id", - "example": "123.456.789-10" - }, - "recipient_bank_code": { - "type": [ - "string", - "null" - ], - "description": "Recipient bank code", - "example": "00416968" - }, - "recipient_branch_code": { - "type": [ - "string", - "null" - ], - "description": "Recipient branch code", - "example": "0001" - }, - "recipient_account_number": { - "type": [ - "string", - "null" - ], - "description": "Recipient account number", - "example": "1234567890" - }, - "recipient_account_type": { - "type": [ - "string", - "null" - ], - "description": "Recipient account type", - "example": "checking" - }, - "coelsa_id": { - "type": [ - "string", - "null" - ], - "description": "COELSA transaction reference ID for ARS transfers (Argentine national banking system)", - "example": "1LMP68NKV46DRDYK2R7OEV" - }, - "end_to_end_id": { - "type": [ - "string", - "null" - ], - "description": "BACEN Pix end-to-end transaction ID (govt Pix ID)", - "example": "E20018183202603311320vm6ALFpJpsS" - }, - "estimated_time_of_arrival": { - "type": [ - "string", - "null" - ], - "enum": [ - "5_min", - "5_30_min", - "30_min", - "2_hours", - "1_business_day", - "2_business_days", - "5_business_days" - ], - "description": "Estimated time of arrival", - "example": "5_min" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Payment completed date", - "example": "2011-10-05T14:48:00.000Z" - } - }, - "required": [ - "step" + "swift_beneficiary_postal_code": { + "example": "11530", + "type": [ + "string", + "null" ] }, - "tracking_transaction": { - "type": "object", - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Payout transaction step", - "example": "processing" - }, - "status": { - "type": [ - "string", - "null" - ], - "enum": [ - "failed", - "found" - ], - "description": "Payout transaction status", - "example": "failed" - }, - "transaction_hash": { - "type": [ - "string", - "null" - ], - "description": "Blockchain transaction hash", - "example": "0x123...890" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Payout transaction completed date", - "example": "2011-10-05T14:48:00.000Z" - }, - "provider_transaction_id": { - "type": [ - "string", - "null" - ], - "description": "Provider-side handle for the on-chain leg (e.g. Circle CPN payment id).", - "example": "67c12eae-b7bc-31cc-a5ef-623dcea82346" - }, - "provider_error_reason": { - "type": [ - "string", - "null" - ], - "description": "Provider error reason when the crypto collection fails (e.g. erc20_allowance_insufficient, ESTIMATION_ERROR: execution reverted)", - "example": "erc20_allowance_insufficient" - }, - "ledger_in_transaction_id": { - "type": [ - "string", - "null" - ], - "description": "Ledger transaction ID for the IN (crypto deposit) transaction" - }, - "ledger_out_transaction_id": { - "type": [ - "string", - "null" - ], - "description": "Ledger transaction ID for the OUT (fiat withdrawal) transaction" - } - }, - "required": [ - "step" - ] - }, - "tracking_liquidity": { - "type": [ - "object", - "null" - ], - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Payout liquidity step", - "example": "processing" - }, - "provider_transaction_id": { - "type": [ - "string", - "null" - ], - "description": "Payment provider transaction id", - "example": "0x123...890" - }, - "provider_status": { - "type": [ - "string", - "null" - ], - "enum": [ - "deposited", - "converted", - "withdrawn" - ], - "description": "Payment provider status", - "example": "deposited" - }, - "estimated_time_of_arrival": { - "type": [ - "string", - "null" - ], - "enum": [ - "5_min", - "5_30_min", - "30_min", - "2_hours", - "1_business_day", - "2_business_days", - "5_business_days" - ], - "description": "Estimated time of arrival", - "example": "1_business_day" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Payout transaction completed date", - "example": "2011-10-05T14:48:00.000Z" - } - }, - "required": [ - "step" - ] - }, - "tracking_documents": { + "swift_beneficiary_state_province_region": { + "example": "MX", "type": [ - "object", + "string", "null" - ], - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Documents step", - "example": "processing" - }, - "status": { - "type": [ - "string", - "null" - ], - "enum": [ - "waiting_documents", - "compliance_reviewing" - ], - "description": "Documents status", - "example": "waiting_documents" - }, - "reviewed_by": { - "type": [ - "string", - "null" - ], - "description": "Reviewer email/name", - "example": "compliance@example.com" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Documents completed date", - "example": "2011-10-05T14:48:00.000Z" - } - }, - "required": [ - "step" ] }, - "customer_id": { + "swift_code_bic": { + "example": "123456789", "type": [ "string", "null" - ], - "minLength": 15, - "maxLength": 15, - "example": "re_000000000000" + ] }, - "bank_account_id": { + "swift_ifsc_branch_code": { + "example": "BARB0AHIMCI", + "pattern": "^[A-Z]{4}0[A-Z0-9]{6}$", "type": [ "string", "null" - ], - "minLength": 15, - "maxLength": 15, - "example": "ba_000000000000" + ] }, - "offramp_wallet_id": { + "swift_intermediary_bank_account_number_iban": { + "example": "123456789", + "maxLength": 34, "type": [ "string", "null" - ], - "minLength": 15, - "maxLength": 15, - "example": "ow_000000000000" - } - }, - "required": [ - "webhook_event", - "id", - "status", - "sender_wallet_address", - "tracking_complete", - "tracking_payment", - "tracking_transaction" - ] - }, - "PayoutCompleteWebhookOut": { - "type": "object", - "properties": { - "webhook_event": { - "type": "string", - "enum": [ - "payout.complete" ] }, - "id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "pa_000000000000" - }, - "status": { - "type": "string", + "swift_intermediary_bank_country": { "enum": [ - "processing", - "failed", - "refunded", - "completed", - "on_hold" + "AF", + "AL", + "DZ", + "AS", + "AD", + "AO", + "AI", + "AQ", + "AG", + "AR", + "AM", + "AW", + "AU", + "AT", + "AZ", + "BS", + "BH", + "BD", + "BB", + "BY", + "BE", + "BZ", + "BJ", + "BM", + "BT", + "BO", + "BQ", + "BA", + "BW", + "BV", + "BR", + "IO", + "BN", + "BG", + "BF", + "BI", + "CV", + "KH", + "CM", + "CA", + "KY", + "CF", + "TD", + "CL", + "CN", + "CX", + "CC", + "CO", + "KM", + "CD", + "CG", + "CK", + "CR", + "HR", + "CU", + "CW", + "CY", + "CZ", + "CI", + "DK", + "DJ", + "DM", + "DO", + "EC", + "EG", + "SV", + "GQ", + "ER", + "EE", + "SZ", + "ET", + "FK", + "FO", + "FJ", + "FI", + "FR", + "GF", + "PF", + "TF", + "GA", + "GM", + "GE", + "DE", + "GH", + "GI", + "GR", + "GL", + "GD", + "GP", + "GU", + "GT", + "GG", + "GN", + "GW", + "GY", + "HT", + "HM", + "VA", + "HN", + "HK", + "HU", + "IS", + "IN", + "ID", + "IR", + "IQ", + "IE", + "IM", + "IL", + "IT", + "JM", + "JP", + "JE", + "JO", + "KZ", + "KE", + "KI", + "KP", + "KR", + "KW", + "KG", + "LA", + "LV", + "LB", + "LS", + "LR", + "LY", + "LI", + "LT", + "LU", + "MO", + "MG", + "MW", + "MY", + "MV", + "ML", + "MT", + "MH", + "MQ", + "MR", + "MU", + "YT", + "MX", + "FM", + "MD", + "MC", + "MN", + "ME", + "MS", + "MA", + "MZ", + "MM", + "NA", + "NR", + "NP", + "NL", + "NC", + "NZ", + "NI", + "NE", + "NG", + "NU", + "NF", + "MP", + "NO", + "OM", + "PK", + "PW", + "PS", + "PA", + "PG", + "PY", + "PE", + "PH", + "PN", + "PL", + "PT", + "PR", + "QA", + "MK", + "RO", + "RU", + "RW", + "RE", + "BL", + "SH", + "KN", + "LC", + "MF", + "PM", + "VC", + "WS", + "SM", + "ST", + "SA", + "SN", + "RS", + "SC", + "SL", + "SG", + "SX", + "SK", + "SI", + "SB", + "SO", + "ZA", + "GS", + "SS", + "ES", + "LK", + "SD", + "SR", + "SJ", + "SE", + "CH", + "SY", + "TW", + "TJ", + "TZ", + "TH", + "TL", + "TG", + "TK", + "TO", + "TT", + "TN", + "TR", + "TM", + "TC", + "TV", + "UG", + "UA", + "AE", + "GB", + "UM", + "US", + "UY", + "UZ", + "VU", + "VE", + "VN", + "VG", + "VI", + "WF", + "EH", + "YE", + "ZM", + "ZW", + "AX" ], - "description": "Payout general status", - "example": "processing" - }, - "sender_wallet_address": { - "type": "string", - "description": "Payout wallet address", - "example": "0x123...890" - }, - "billing_fee_amount": { + "example": "US", "type": [ - "number", + "string", "null" - ], - "description": "Billing fee in cents (charged via invoice at the end of the month)", - "example": 50 + ] }, - "transaction_fee_amount": { + "swift_intermediary_bank_name": { + "example": "Banco Regional SA", "type": [ - "number", + "string", "null" - ], - "description": "Transaction fee in cents (percentage-based fee)", - "example": 100 - }, - "partner_fee": { - "type": "integer", - "minimum": 0, - "default": 0, - "description": "Payout partner fee amount in cents (can be negative for rebates)", - "example": -25000 + ] }, - "tracking_complete": { - "type": "object", - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Complete step", - "example": "on_hold" - }, - "status": { - "type": [ - "string", - "null" - ], - "enum": [ - "tokens_refunded", - "paid" - ], - "description": "Complete status", - "example": "tokens_refunded" + "swift_intermediary_bank_swift_code_bic": { + "anyOf": [ + { + "maxLength": 8, + "minLength": 8, + "type": "string" }, - "refund_reason": { - "type": [ - "string", - "null" - ], - "description": "Reason for refund when tokens are returned to sender", - "example": "fiat_payment_failed" + { + "maxLength": 11, + "minLength": 11, + "type": "string" }, - "transaction_hash": { - "type": [ - "string", - "null" - ], - "description": "Complete transaction hash", - "example": "0x123...890" - }, - "provider_transaction_id": { - "type": [ - "string", - "null" - ], - "description": "Provider-side handle for the refund transaction (e.g. Circle transaction id)", - "example": "67c12eae-b7bc-31cc-a5ef-623dcea82346" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Complete completed date", - "example": "2011-10-05T14:48:00.000Z" - } - }, - "required": [ - "step" - ] - }, - "tracking_payment": { - "type": "object", - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Payment step", - "example": "on_hold" - }, - "provider_name": { - "type": [ - "string", - "null" - ], - "enum": [ - "Nvio Pagos", - "Brex", - "Stark Bank", - "JPMorgan Chase", - "HSBC", - "Inter", - "JP Morgan Chase", - "Bitso", - "Citi", - "CFSB", - "Triple A Technologies", - "Portage Bank" - ], - "description": "Payment provider name", - "example": "HSBC" - }, - "provider_integration": { - "type": [ - "string", - "null" - ], - "enum": [ - "veem", - "zenus", - "checkbook", - "onemoney", - "bitso", - "starkbank", - "triplea", - "infinitus" - ], - "description": "Machine-readable integration that executed the fiat leg. Unlike provider_name (a client-facing bank label), this uniquely identifies the integration — e.g. zenus vs checkbook, which share the \"JPMorgan Chase\" label.", - "example": "zenus" - }, - "provider_transaction_id": { - "type": [ - "string", - "null" - ], - "description": "Payment provider transaction id", - "example": "0x123...890" - }, - "provider_status": { - "type": [ - "string", - "null" - ], - "enum": [ - "canceled", - "failed", - "returned", - "sent" - ], - "description": "Payment provider status", - "example": "canceled" - }, - "provider_error_reason": { - "type": [ - "string", - "null" - ], - "description": "Provider error reason when payment fails (e.g. invalid_key, wrong_parameters)", - "example": "invalid_key" - }, - "provider_uetr": { - "type": [ - "string", - "null" - ], - "maxLength": 120, - "description": "Unique end-to-end transaction reference (UETR). Populated once the wire is confirmed by the network; null while the payment is in flight or when the rail does not expose it (e.g. ACH).", - "example": "37d10eff-d450-4aba-a5d4-e3978f5a3343" - }, - "provider_imad": { - "type": [ - "string", - "null" - ], - "maxLength": 120, - "description": "Fed Input Message Accountability Data (IMAD). Domestic Fedwire payments only; null on ACH and SWIFT.", - "example": "20260526MMQFMP2M008120" - }, - "provider_reference": { - "type": [ - "string", - "null" - ], - "maxLength": 120, - "description": "Provider (JPMorgan/Zenus) payment reference captured from the ACCOUNT.ACCOUNT booking webhook (Zenus contractSource.sourceRef). Present for some ACH/wire payouts; a bank-side reference, not the formal ACH network trace number.", - "example": "2084734238TC" - }, - "provider_clearing_system": { - "type": [ - "string", - "null" - ], - "maxLength": 40, - "description": "Clearing system that processed the payment (e.g. FED, CHIPS, ACH, SWIFT).", - "example": "FED" - }, - "recipient_name": { - "type": [ - "string", - "null" - ], - "description": "Recipient name", - "example": "John Doe" - }, - "recipient_tax_id": { - "type": [ - "string", - "null" - ], - "description": "Recipient tax id", - "example": "123.456.789-10" - }, - "recipient_bank_code": { - "type": [ - "string", - "null" - ], - "description": "Recipient bank code", - "example": "00416968" - }, - "recipient_branch_code": { - "type": [ - "string", - "null" - ], - "description": "Recipient branch code", - "example": "0001" - }, - "recipient_account_number": { - "type": [ - "string", - "null" - ], - "description": "Recipient account number", - "example": "1234567890" - }, - "recipient_account_type": { - "type": [ - "string", - "null" - ], - "description": "Recipient account type", - "example": "checking" - }, - "coelsa_id": { - "type": [ - "string", - "null" - ], - "description": "COELSA transaction reference ID for ARS transfers (Argentine national banking system)", - "example": "1LMP68NKV46DRDYK2R7OEV" - }, - "end_to_end_id": { - "type": [ - "string", - "null" - ], - "description": "BACEN Pix end-to-end transaction ID (govt Pix ID)", - "example": "E20018183202603311320vm6ALFpJpsS" - }, - "estimated_time_of_arrival": { - "type": [ - "string", - "null" - ], - "enum": [ - "5_min", - "5_30_min", - "30_min", - "2_hours", - "1_business_day", - "2_business_days", - "5_business_days" - ], - "description": "Estimated time of arrival", - "example": "5_min" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Payment completed date", - "example": "2011-10-05T14:48:00.000Z" - } - }, - "required": [ - "step" - ] - }, - "tracking_transaction": { - "type": "object", - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Payout transaction step", - "example": "processing" - }, - "status": { - "type": [ - "string", - "null" - ], - "enum": [ - "failed", - "found" - ], - "description": "Payout transaction status", - "example": "failed" - }, - "transaction_hash": { - "type": [ - "string", - "null" - ], - "description": "Blockchain transaction hash", - "example": "0x123...890" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Payout transaction completed date", - "example": "2011-10-05T14:48:00.000Z" - }, - "provider_transaction_id": { - "type": [ - "string", - "null" - ], - "description": "Provider-side handle for the on-chain leg (e.g. Circle CPN payment id).", - "example": "67c12eae-b7bc-31cc-a5ef-623dcea82346" - }, - "provider_error_reason": { - "type": [ - "string", - "null" - ], - "description": "Provider error reason when the crypto collection fails (e.g. erc20_allowance_insufficient, ESTIMATION_ERROR: execution reverted)", - "example": "erc20_allowance_insufficient" - }, - "ledger_in_transaction_id": { - "type": [ - "string", - "null" - ], - "description": "Ledger transaction ID for the IN (crypto deposit) transaction" - }, - "ledger_out_transaction_id": { - "type": [ - "string", - "null" - ], - "description": "Ledger transaction ID for the OUT (fiat withdrawal) transaction" - } - }, - "required": [ - "step" - ] - }, - "tracking_liquidity": { - "type": [ - "object", - "null" - ], - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Payout liquidity step", - "example": "processing" - }, - "provider_transaction_id": { - "type": [ - "string", - "null" - ], - "description": "Payment provider transaction id", - "example": "0x123...890" - }, - "provider_status": { - "type": [ - "string", - "null" - ], - "enum": [ - "deposited", - "converted", - "withdrawn" - ], - "description": "Payment provider status", - "example": "deposited" - }, - "estimated_time_of_arrival": { - "type": [ - "string", - "null" - ], - "enum": [ - "5_min", - "5_30_min", - "30_min", - "2_hours", - "1_business_day", - "2_business_days", - "5_business_days" - ], - "description": "Estimated time of arrival", - "example": "1_business_day" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Payout transaction completed date", - "example": "2011-10-05T14:48:00.000Z" - } - }, - "required": [ - "step" - ] - }, - "tracking_documents": { - "type": [ - "object", - "null" - ], - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Documents step", - "example": "processing" - }, - "status": { - "type": [ - "string", - "null" - ], - "enum": [ - "waiting_documents", - "compliance_reviewing" - ], - "description": "Documents status", - "example": "waiting_documents" - }, - "reviewed_by": { - "type": [ - "string", - "null" - ], - "description": "Reviewer email/name", - "example": "compliance@example.com" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Documents completed date", - "example": "2011-10-05T14:48:00.000Z" + { + "type": "null" } - }, - "required": [ - "step" - ] - }, - "customer_id": { - "type": [ - "string", - "null" - ], - "minLength": 15, - "maxLength": 15, - "example": "re_000000000000" - }, - "bank_account_id": { - "type": [ - "string", - "null" - ], - "minLength": 15, - "maxLength": 15, - "example": "ba_000000000000" - }, - "offramp_wallet_id": { - "type": [ - "string", - "null" ], - "minLength": 15, - "maxLength": 15, - "example": "ow_000000000000" - } - }, - "required": [ - "webhook_event", - "id", - "status", - "sender_wallet_address", - "tracking_complete", - "tracking_payment", - "tracking_transaction" - ] - }, - "PayoutUpdateWebhookOut": { - "type": "object", - "properties": { - "webhook_event": { - "type": "string", - "enum": [ - "payout.update" - ] - }, - "id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "pa_000000000000" + "example": "AEIBARB1" }, - "status": { - "type": "string", - "enum": [ - "processing", - "failed", - "refunded", - "completed", - "on_hold" - ], - "description": "Payout general status", - "example": "processing" - }, - "sender_wallet_address": { - "type": "string", - "description": "Payout wallet address", - "example": "0x123...890" - }, - "billing_fee_amount": { - "type": [ - "number", - "null" - ], - "description": "Billing fee in cents (charged via invoice at the end of the month)", - "example": 50 - }, - "transaction_fee_amount": { - "type": [ - "number", - "null" - ], - "description": "Transaction fee in cents (percentage-based fee)", - "example": 100 - }, - "partner_fee": { - "type": "integer", - "minimum": 0, - "default": 0, - "description": "Payout partner fee amount in cents (can be negative for rebates)", - "example": -25000 - }, - "tracking_complete": { - "type": "object", - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Complete step", - "example": "on_hold" - }, - "status": { - "type": [ - "string", - "null" - ], - "enum": [ - "tokens_refunded", - "paid" - ], - "description": "Complete status", - "example": "tokens_refunded" - }, - "refund_reason": { - "type": [ - "string", - "null" - ], - "description": "Reason for refund when tokens are returned to sender", - "example": "fiat_payment_failed" - }, - "transaction_hash": { - "type": [ - "string", - "null" - ], - "description": "Complete transaction hash", - "example": "0x123...890" - }, - "provider_transaction_id": { - "type": [ - "string", - "null" - ], - "description": "Provider-side handle for the refund transaction (e.g. Circle transaction id)", - "example": "67c12eae-b7bc-31cc-a5ef-623dcea82346" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Complete completed date", - "example": "2011-10-05T14:48:00.000Z" - } - }, - "required": [ - "step" - ] - }, - "tracking_payment": { - "type": "object", - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Payment step", - "example": "on_hold" - }, - "provider_name": { - "type": [ - "string", - "null" - ], - "enum": [ - "Nvio Pagos", - "Brex", - "Stark Bank", - "JPMorgan Chase", - "HSBC", - "Inter", - "JP Morgan Chase", - "Bitso", - "Citi", - "CFSB", - "Triple A Technologies", - "Portage Bank" - ], - "description": "Payment provider name", - "example": "HSBC" - }, - "provider_integration": { - "type": [ - "string", - "null" - ], - "enum": [ - "veem", - "zenus", - "checkbook", - "onemoney", - "bitso", - "starkbank", - "triplea", - "infinitus" - ], - "description": "Machine-readable integration that executed the fiat leg. Unlike provider_name (a client-facing bank label), this uniquely identifies the integration — e.g. zenus vs checkbook, which share the \"JPMorgan Chase\" label.", - "example": "zenus" - }, - "provider_transaction_id": { - "type": [ - "string", - "null" - ], - "description": "Payment provider transaction id", - "example": "0x123...890" - }, - "provider_status": { - "type": [ - "string", - "null" - ], - "enum": [ - "canceled", - "failed", - "returned", - "sent" - ], - "description": "Payment provider status", - "example": "canceled" - }, - "provider_error_reason": { - "type": [ - "string", - "null" - ], - "description": "Provider error reason when payment fails (e.g. invalid_key, wrong_parameters)", - "example": "invalid_key" - }, - "provider_uetr": { - "type": [ - "string", - "null" - ], - "maxLength": 120, - "description": "Unique end-to-end transaction reference (UETR). Populated once the wire is confirmed by the network; null while the payment is in flight or when the rail does not expose it (e.g. ACH).", - "example": "37d10eff-d450-4aba-a5d4-e3978f5a3343" - }, - "provider_imad": { - "type": [ - "string", - "null" - ], - "maxLength": 120, - "description": "Fed Input Message Accountability Data (IMAD). Domestic Fedwire payments only; null on ACH and SWIFT.", - "example": "20260526MMQFMP2M008120" - }, - "provider_reference": { - "type": [ - "string", - "null" - ], - "maxLength": 120, - "description": "Provider (JPMorgan/Zenus) payment reference captured from the ACCOUNT.ACCOUNT booking webhook (Zenus contractSource.sourceRef). Present for some ACH/wire payouts; a bank-side reference, not the formal ACH network trace number.", - "example": "2084734238TC" - }, - "provider_clearing_system": { - "type": [ - "string", - "null" - ], - "maxLength": 40, - "description": "Clearing system that processed the payment (e.g. FED, CHIPS, ACH, SWIFT).", - "example": "FED" - }, - "recipient_name": { - "type": [ - "string", - "null" - ], - "description": "Recipient name", - "example": "John Doe" - }, - "recipient_tax_id": { - "type": [ - "string", - "null" - ], - "description": "Recipient tax id", - "example": "123.456.789-10" - }, - "recipient_bank_code": { - "type": [ - "string", - "null" - ], - "description": "Recipient bank code", - "example": "00416968" - }, - "recipient_branch_code": { - "type": [ - "string", - "null" - ], - "description": "Recipient branch code", - "example": "0001" - }, - "recipient_account_number": { - "type": [ - "string", - "null" - ], - "description": "Recipient account number", - "example": "1234567890" - }, - "recipient_account_type": { - "type": [ - "string", - "null" - ], - "description": "Recipient account type", - "example": "checking" - }, - "coelsa_id": { - "type": [ - "string", - "null" - ], - "description": "COELSA transaction reference ID for ARS transfers (Argentine national banking system)", - "example": "1LMP68NKV46DRDYK2R7OEV" - }, - "end_to_end_id": { - "type": [ - "string", - "null" - ], - "description": "BACEN Pix end-to-end transaction ID (govt Pix ID)", - "example": "E20018183202603311320vm6ALFpJpsS" - }, - "estimated_time_of_arrival": { - "type": [ - "string", - "null" - ], - "enum": [ - "5_min", - "5_30_min", - "30_min", - "2_hours", - "1_business_day", - "2_business_days", - "5_business_days" - ], - "description": "Estimated time of arrival", - "example": "5_min" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Payment completed date", - "example": "2011-10-05T14:48:00.000Z" - } - }, - "required": [ - "step" - ] - }, - "tracking_transaction": { - "type": "object", - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Payout transaction step", - "example": "processing" - }, - "status": { - "type": [ - "string", - "null" - ], - "enum": [ - "failed", - "found" - ], - "description": "Payout transaction status", - "example": "failed" - }, - "transaction_hash": { - "type": [ - "string", - "null" - ], - "description": "Blockchain transaction hash", - "example": "0x123...890" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Payout transaction completed date", - "example": "2011-10-05T14:48:00.000Z" - }, - "provider_transaction_id": { - "type": [ - "string", - "null" - ], - "description": "Provider-side handle for the on-chain leg (e.g. Circle CPN payment id).", - "example": "67c12eae-b7bc-31cc-a5ef-623dcea82346" - }, - "provider_error_reason": { - "type": [ - "string", - "null" - ], - "description": "Provider error reason when the crypto collection fails (e.g. erc20_allowance_insufficient, ESTIMATION_ERROR: execution reverted)", - "example": "erc20_allowance_insufficient" - }, - "ledger_in_transaction_id": { - "type": [ - "string", - "null" - ], - "description": "Ledger transaction ID for the IN (crypto deposit) transaction" - }, - "ledger_out_transaction_id": { - "type": [ - "string", - "null" - ], - "description": "Ledger transaction ID for the OUT (fiat withdrawal) transaction" - } - }, - "required": [ - "step" - ] - }, - "tracking_liquidity": { - "type": [ - "object", - "null" - ], - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Payout liquidity step", - "example": "processing" - }, - "provider_transaction_id": { - "type": [ - "string", - "null" - ], - "description": "Payment provider transaction id", - "example": "0x123...890" - }, - "provider_status": { - "type": [ - "string", - "null" - ], - "enum": [ - "deposited", - "converted", - "withdrawn" - ], - "description": "Payment provider status", - "example": "deposited" - }, - "estimated_time_of_arrival": { - "type": [ - "string", - "null" - ], - "enum": [ - "5_min", - "5_30_min", - "30_min", - "2_hours", - "1_business_day", - "2_business_days", - "5_business_days" - ], - "description": "Estimated time of arrival", - "example": "1_business_day" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Payout transaction completed date", - "example": "2011-10-05T14:48:00.000Z" - } - }, - "required": [ - "step" - ] - }, - "tracking_documents": { - "type": [ - "object", - "null" - ], - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Documents step", - "example": "processing" - }, - "status": { - "type": [ - "string", - "null" - ], - "enum": [ - "waiting_documents", - "compliance_reviewing" - ], - "description": "Documents status", - "example": "waiting_documents" - }, - "reviewed_by": { - "type": [ - "string", - "null" - ], - "description": "Reviewer email/name", - "example": "compliance@example.com" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Documents completed date", - "example": "2011-10-05T14:48:00.000Z" - } - }, - "required": [ - "step" - ] - }, - "customer_id": { - "type": [ - "string", - "null" - ], - "minLength": 15, - "maxLength": 15, - "example": "re_000000000000" - }, - "bank_account_id": { - "type": [ - "string", - "null" - ], - "minLength": 15, - "maxLength": 15, - "example": "ba_000000000000" - }, - "offramp_wallet_id": { - "type": [ - "string", - "null" - ], - "minLength": 15, - "maxLength": 15, - "example": "ow_000000000000" - } - }, - "required": [ - "webhook_event", - "id", - "status", - "sender_wallet_address", - "tracking_complete", - "tracking_payment", - "tracking_transaction" - ] - }, - "PayoutPartnerFeeWebhookOut": { - "type": "object", - "properties": { - "webhook_event": { - "type": "string", - "enum": [ - "payout.partnerFee" - ] - }, - "id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "pa_000000000000" - }, - "status": { - "type": "string", - "enum": [ - "processing", - "failed", - "refunded", - "completed", - "on_hold" - ], - "description": "Payout general status", - "example": "processing" - }, - "sender_wallet_address": { - "type": "string", - "description": "Payout wallet address", - "example": "0x123...890" - }, - "billing_fee_amount": { - "type": [ - "number", - "null" - ], - "description": "Billing fee in cents (charged via invoice at the end of the month)", - "example": 50 - }, - "transaction_fee_amount": { - "type": [ - "number", - "null" - ], - "description": "Transaction fee in cents (percentage-based fee)", - "example": 100 - }, - "partner_fee": { - "type": "integer", - "minimum": 0, - "default": 0, - "description": "Payout partner fee amount in cents (can be negative for rebates)", - "example": -25000 - }, - "tracking_complete": { - "type": "object", - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Complete step", - "example": "on_hold" - }, - "status": { - "type": [ - "string", - "null" - ], - "enum": [ - "tokens_refunded", - "paid" - ], - "description": "Complete status", - "example": "tokens_refunded" - }, - "refund_reason": { - "type": [ - "string", - "null" - ], - "description": "Reason for refund when tokens are returned to sender", - "example": "fiat_payment_failed" - }, - "transaction_hash": { - "type": [ - "string", - "null" - ], - "description": "Complete transaction hash", - "example": "0x123...890" - }, - "provider_transaction_id": { - "type": [ - "string", - "null" - ], - "description": "Provider-side handle for the refund transaction (e.g. Circle transaction id)", - "example": "67c12eae-b7bc-31cc-a5ef-623dcea82346" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Complete completed date", - "example": "2011-10-05T14:48:00.000Z" - } - }, - "required": [ - "step" - ] - }, - "tracking_payment": { - "type": "object", - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Payment step", - "example": "on_hold" - }, - "provider_name": { - "type": [ - "string", - "null" - ], - "enum": [ - "Nvio Pagos", - "Brex", - "Stark Bank", - "JPMorgan Chase", - "HSBC", - "Inter", - "JP Morgan Chase", - "Bitso", - "Citi", - "CFSB", - "Triple A Technologies", - "Portage Bank" - ], - "description": "Payment provider name", - "example": "HSBC" - }, - "provider_integration": { - "type": [ - "string", - "null" - ], - "enum": [ - "veem", - "zenus", - "checkbook", - "onemoney", - "bitso", - "starkbank", - "triplea", - "infinitus" - ], - "description": "Machine-readable integration that executed the fiat leg. Unlike provider_name (a client-facing bank label), this uniquely identifies the integration — e.g. zenus vs checkbook, which share the \"JPMorgan Chase\" label.", - "example": "zenus" - }, - "provider_transaction_id": { - "type": [ - "string", - "null" - ], - "description": "Payment provider transaction id", - "example": "0x123...890" - }, - "provider_status": { - "type": [ - "string", - "null" - ], - "enum": [ - "canceled", - "failed", - "returned", - "sent" - ], - "description": "Payment provider status", - "example": "canceled" - }, - "provider_error_reason": { - "type": [ - "string", - "null" - ], - "description": "Provider error reason when payment fails (e.g. invalid_key, wrong_parameters)", - "example": "invalid_key" - }, - "provider_uetr": { - "type": [ - "string", - "null" - ], - "maxLength": 120, - "description": "Unique end-to-end transaction reference (UETR). Populated once the wire is confirmed by the network; null while the payment is in flight or when the rail does not expose it (e.g. ACH).", - "example": "37d10eff-d450-4aba-a5d4-e3978f5a3343" - }, - "provider_imad": { - "type": [ - "string", - "null" - ], - "maxLength": 120, - "description": "Fed Input Message Accountability Data (IMAD). Domestic Fedwire payments only; null on ACH and SWIFT.", - "example": "20260526MMQFMP2M008120" - }, - "provider_reference": { - "type": [ - "string", - "null" - ], - "maxLength": 120, - "description": "Provider (JPMorgan/Zenus) payment reference captured from the ACCOUNT.ACCOUNT booking webhook (Zenus contractSource.sourceRef). Present for some ACH/wire payouts; a bank-side reference, not the formal ACH network trace number.", - "example": "2084734238TC" - }, - "provider_clearing_system": { - "type": [ - "string", - "null" - ], - "maxLength": 40, - "description": "Clearing system that processed the payment (e.g. FED, CHIPS, ACH, SWIFT).", - "example": "FED" - }, - "recipient_name": { - "type": [ - "string", - "null" - ], - "description": "Recipient name", - "example": "John Doe" - }, - "recipient_tax_id": { - "type": [ - "string", - "null" - ], - "description": "Recipient tax id", - "example": "123.456.789-10" - }, - "recipient_bank_code": { - "type": [ - "string", - "null" - ], - "description": "Recipient bank code", - "example": "00416968" - }, - "recipient_branch_code": { - "type": [ - "string", - "null" - ], - "description": "Recipient branch code", - "example": "0001" - }, - "recipient_account_number": { - "type": [ - "string", - "null" - ], - "description": "Recipient account number", - "example": "1234567890" - }, - "recipient_account_type": { - "type": [ - "string", - "null" - ], - "description": "Recipient account type", - "example": "checking" - }, - "coelsa_id": { - "type": [ - "string", - "null" - ], - "description": "COELSA transaction reference ID for ARS transfers (Argentine national banking system)", - "example": "1LMP68NKV46DRDYK2R7OEV" - }, - "end_to_end_id": { - "type": [ - "string", - "null" - ], - "description": "BACEN Pix end-to-end transaction ID (govt Pix ID)", - "example": "E20018183202603311320vm6ALFpJpsS" - }, - "estimated_time_of_arrival": { - "type": [ - "string", - "null" - ], - "enum": [ - "5_min", - "5_30_min", - "30_min", - "2_hours", - "1_business_day", - "2_business_days", - "5_business_days" - ], - "description": "Estimated time of arrival", - "example": "5_min" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Payment completed date", - "example": "2011-10-05T14:48:00.000Z" - } - }, - "required": [ - "step" - ] - }, - "tracking_transaction": { - "type": "object", - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Payout transaction step", - "example": "processing" - }, - "status": { - "type": [ - "string", - "null" - ], - "enum": [ - "failed", - "found" - ], - "description": "Payout transaction status", - "example": "failed" - }, - "transaction_hash": { - "type": [ - "string", - "null" - ], - "description": "Blockchain transaction hash", - "example": "0x123...890" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Payout transaction completed date", - "example": "2011-10-05T14:48:00.000Z" - }, - "provider_transaction_id": { - "type": [ - "string", - "null" - ], - "description": "Provider-side handle for the on-chain leg (e.g. Circle CPN payment id).", - "example": "67c12eae-b7bc-31cc-a5ef-623dcea82346" - }, - "provider_error_reason": { - "type": [ - "string", - "null" - ], - "description": "Provider error reason when the crypto collection fails (e.g. erc20_allowance_insufficient, ESTIMATION_ERROR: execution reverted)", - "example": "erc20_allowance_insufficient" - }, - "ledger_in_transaction_id": { - "type": [ - "string", - "null" - ], - "description": "Ledger transaction ID for the IN (crypto deposit) transaction" - }, - "ledger_out_transaction_id": { - "type": [ - "string", - "null" - ], - "description": "Ledger transaction ID for the OUT (fiat withdrawal) transaction" - } - }, - "required": [ - "step" - ] - }, - "tracking_liquidity": { - "type": [ - "object", - "null" - ], - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Payout liquidity step", - "example": "processing" - }, - "provider_transaction_id": { - "type": [ - "string", - "null" - ], - "description": "Payment provider transaction id", - "example": "0x123...890" - }, - "provider_status": { - "type": [ - "string", - "null" - ], - "enum": [ - "deposited", - "converted", - "withdrawn" - ], - "description": "Payment provider status", - "example": "deposited" - }, - "estimated_time_of_arrival": { - "type": [ - "string", - "null" - ], - "enum": [ - "5_min", - "5_30_min", - "30_min", - "2_hours", - "1_business_day", - "2_business_days", - "5_business_days" - ], - "description": "Estimated time of arrival", - "example": "1_business_day" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Payout transaction completed date", - "example": "2011-10-05T14:48:00.000Z" - } - }, - "required": [ - "step" - ] - }, - "tracking_documents": { - "type": [ - "object", - "null" - ], - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Documents step", - "example": "processing" - }, - "status": { - "type": [ - "string", - "null" - ], - "enum": [ - "waiting_documents", - "compliance_reviewing" - ], - "description": "Documents status", - "example": "waiting_documents" - }, - "reviewed_by": { - "type": [ - "string", - "null" - ], - "description": "Reviewer email/name", - "example": "compliance@example.com" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Documents completed date", - "example": "2011-10-05T14:48:00.000Z" - } - }, - "required": [ - "step" - ] - }, - "customer_id": { - "type": [ - "string", - "null" - ], - "minLength": 15, - "maxLength": 15, - "example": "re_000000000000" - }, - "bank_account_id": { - "type": [ - "string", - "null" - ], - "minLength": 15, - "maxLength": 15, - "example": "ba_000000000000" - }, - "offramp_wallet_id": { - "type": [ - "string", - "null" - ], - "minLength": 15, - "maxLength": 15, - "example": "ow_000000000000" - } - }, - "required": [ - "webhook_event", - "id", - "status", - "sender_wallet_address", - "tracking_complete", - "tracking_payment", - "tracking_transaction" - ] - }, - "AdditionalInfoItem": { - "type": "object", - "properties": { - "label": { - "type": "string", - "enum": [ - "EIN_LETTER", - "KYC_PROVIDER_DOCUMENT", - "FLOW_OF_FUNDS", - "BANK_STATEMENT", - "TAX_RETURN", - "AUDITED_FINANCIALS", - "OPERATING_AGREEMENT", - "BOARD_RESOLUTION", - "CERTIFICATE_OF_GOOD_STANDING", - "BUSINESS_LICENSE", - "MSB_LICENSE", - "POWER_OF_ATTORNEY", - "TRUST_DEED", - "SHAREHOLDER_REGISTRY", - "BENEFICIAL_OWNER_DECLARATION", - "COMPLIANCE_QUESTIONNAIRE", - "PROOF_OF_EMPLOYMENT", - "REFERENCE_LETTER", - "OTHER" - ] - }, - "value": { - "type": "string", - "minLength": 1 - } - }, - "required": [ - "label", - "value" - ], - "example": { - "label": "EIN_LETTER", - "value": "https://example.com/ein.pdf" - } - }, - "CustomerNewWebhookOut": { - "type": "object", - "properties": { - "webhook_event": { - "type": "string", - "enum": [ - "customer.new" - ] - }, - "id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "re_000000000000" - }, - "customer_id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "re_000000000000" - }, - "type": { - "type": "string", - "enum": [ - "individual", - "business" - ], - "example": "individual" - }, - "kyc_type": { - "type": "string", - "enum": [ - "light", - "standard", - "enhanced" - ], - "example": "standard" - }, - "kyc_status": { - "type": "string", - "enum": [ - "verifying", - "approved", - "rejected", - "deprecated", - "pending_review", - "awaiting_contract", - "compliance_request", - "approved_rfi" - ], - "example": "verifying" - }, - "kyc_warnings": { - "type": [ - "array", - "null" - ], - "items": { - "type": "object", - "properties": { - "code": { - "type": [ - "string", - "null" - ] - }, - "message": { - "type": [ - "string", - "null" - ] - }, - "resolution_status": { - "type": [ - "string", - "null" - ] - }, - "warning_id": { - "type": [ - "string", - "null" - ] - } - } - }, - "description": "You can find more information here: https://docs.aiprise.com/docs/warnings-and-error-codes", - "example": [ - { - "code": "BIRTH_DATE_MISMATCH", - "message": "Mismatch between supplied birth date and extracted/looked up birth date.", - "resolution_status": "UNRESOLVED", - "warning_id": "38170889-50aa-4271-9eb1-61113ebf408c" - } - ] - }, - "fraud_warnings": { - "type": [ - "array", - "null" - ], - "items": { - "type": "object", - "properties": { - "id": { - "type": [ - "string", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - }, - "operation": { - "type": [ - "string", - "null" - ] - }, - "score": { - "type": [ - "number", - "null" - ] - } - } - }, - "example": [ - { - "id": "UC114", - "name": "User never used a Datacenter proxy and this device before", - "operation": "+", - "score": 10 - } - ] - }, - "email": { - "type": "string", - "format": "email", - "example": "email@example.com" - }, - "tax_id": { - "type": [ - "string", - "null" - ], - "example": "536804398" - }, - "address_line_1": { - "type": [ - "string", - "null" - ], - "example": "738 Plain St" - }, - "address_line_2": { - "type": [ - "string", - "null" - ], - "example": "Building 22" - }, - "city": { - "type": [ - "string", - "null" - ], - "example": "Marshfield" - }, - "state_province_region": { - "type": [ - "string", - "null" - ], - "example": "MA" - }, - "country": { - "type": "string", - "enum": [ - "AF", - "AL", - "DZ", - "AS", - "AD", - "AO", - "AI", - "AQ", - "AG", - "AR", - "AM", - "AW", - "AU", - "AT", - "AZ", - "BS", - "BH", - "BD", - "BB", - "BY", - "BE", - "BZ", - "BJ", - "BM", - "BT", - "BO", - "BQ", - "BA", - "BW", - "BV", - "BR", - "IO", - "BN", - "BG", - "BF", - "BI", - "CV", - "KH", - "CM", - "CA", - "KY", - "CF", - "TD", - "CL", - "CN", - "CX", - "CC", - "CO", - "KM", - "CD", - "CG", - "CK", - "CR", - "HR", - "CU", - "CW", - "CY", - "CZ", - "CI", - "DK", - "DJ", - "DM", - "DO", - "EC", - "EG", - "SV", - "GQ", - "ER", - "EE", - "SZ", - "ET", - "FK", - "FO", - "FJ", - "FI", - "FR", - "GF", - "PF", - "TF", - "GA", - "GM", - "GE", - "DE", - "GH", - "GI", - "GR", - "GL", - "GD", - "GP", - "GU", - "GT", - "GG", - "GN", - "GW", - "GY", - "HT", - "HM", - "VA", - "HN", - "HK", - "HU", - "IS", - "IN", - "ID", - "IR", - "IQ", - "IE", - "IM", - "IL", - "IT", - "JM", - "JP", - "JE", - "JO", - "KZ", - "KE", - "KI", - "KP", - "KR", - "KW", - "KG", - "LA", - "LV", - "LB", - "LS", - "LR", - "LY", - "LI", - "LT", - "LU", - "MO", - "MG", - "MW", - "MY", - "MV", - "ML", - "MT", - "MH", - "MQ", - "MR", - "MU", - "YT", - "MX", - "FM", - "MD", - "MC", - "MN", - "ME", - "MS", - "MA", - "MZ", - "MM", - "NA", - "NR", - "NP", - "NL", - "NC", - "NZ", - "NI", - "NE", - "NG", - "NU", - "NF", - "MP", - "NO", - "OM", - "PK", - "PW", - "PS", - "PA", - "PG", - "PY", - "PE", - "PH", - "PN", - "PL", - "PT", - "PR", - "QA", - "MK", - "RO", - "RU", - "RW", - "RE", - "BL", - "SH", - "KN", - "LC", - "MF", - "PM", - "VC", - "WS", - "SM", - "ST", - "SA", - "SN", - "RS", - "SC", - "SL", - "SG", - "SX", - "SK", - "SI", - "SB", - "SO", - "ZA", - "GS", - "SS", - "ES", - "LK", - "SD", - "SR", - "SJ", - "SE", - "CH", - "SY", - "TW", - "TJ", - "TZ", - "TH", - "TL", - "TG", - "TK", - "TO", - "TT", - "TN", - "TR", - "TM", - "TC", - "TV", - "UG", - "UA", - "AE", - "GB", - "UM", - "US", - "UY", - "UZ", - "VU", - "VE", - "VN", - "VG", - "VI", - "WF", - "EH", - "YE", - "ZM", - "ZW", - "AX" - ], - "example": "US" - }, - "postal_code": { - "type": [ - "string", - "null" - ], - "example": "02050" - }, - "ip_address": { - "type": [ - "string", - "null" - ], - "format": "ip", - "example": "127.0.0.1" - }, - "latitude": { - "type": [ - "number", - "null" - ], - "minimum": -90, - "maximum": 90, - "description": "Optional geolocation latitude collected from the customer. Forwarded to AiPrise and SEON for fraud analysis.", - "example": 37.7749 - }, - "longitude": { - "type": [ - "number", - "null" - ], - "minimum": -180, - "maximum": 180, - "description": "Optional geolocation longitude collected from the customer. Forwarded to AiPrise and SEON for fraud analysis.", - "example": -122.4194 - }, - "image_url": { - "type": [ - "string", - "null" - ], - "example": "https://example.com/image.png" - }, - "phone_number": { - "type": [ - "string", - "null" - ], - "example": "+13055555555" - }, - "proof_of_address_doc_type": { - "type": [ - "string", - "null" - ], - "enum": [ - "UTILITY_BILL", - "BANK_STATEMENT", - "RENTAL_AGREEMENT", - "TAX_DOCUMENT", - "GOVERNMENT_CORRESPONDENCE" - ], - "example": "UTILITY_BILL" - }, - "proof_of_address_doc_file": { - "type": [ - "string", - "null" - ], - "description": "Please upload one document that serve as proof of address, this needs to be the same physical address as the one provided above. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", - "example": "https://example.com/image.png" - }, - "first_name": { - "type": [ - "string", - "null" - ], - "example": "John" - }, - "last_name": { - "type": [ - "string", - "null" - ], - "example": "Doe" - }, - "date_of_birth": { - "anyOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "type": "string" - }, - { - "type": "null" - } - ], - "example": "1998-01-01T00:00:00Z" - }, - "id_doc_country": { - "type": [ - "string", - "null" - ], - "enum": [ - "AF", - "AL", - "DZ", - "AS", - "AD", - "AO", - "AI", - "AQ", - "AG", - "AR", - "AM", - "AW", - "AU", - "AT", - "AZ", - "BS", - "BH", - "BD", - "BB", - "BY", - "BE", - "BZ", - "BJ", - "BM", - "BT", - "BO", - "BQ", - "BA", - "BW", - "BV", - "BR", - "IO", - "BN", - "BG", - "BF", - "BI", - "CV", - "KH", - "CM", - "CA", - "KY", - "CF", - "TD", - "CL", - "CN", - "CX", - "CC", - "CO", - "KM", - "CD", - "CG", - "CK", - "CR", - "HR", - "CU", - "CW", - "CY", - "CZ", - "CI", - "DK", - "DJ", - "DM", - "DO", - "EC", - "EG", - "SV", - "GQ", - "ER", - "EE", - "SZ", - "ET", - "FK", - "FO", - "FJ", - "FI", - "FR", - "GF", - "PF", - "TF", - "GA", - "GM", - "GE", - "DE", - "GH", - "GI", - "GR", - "GL", - "GD", - "GP", - "GU", - "GT", - "GG", - "GN", - "GW", - "GY", - "HT", - "HM", - "VA", - "HN", - "HK", - "HU", - "IS", - "IN", - "ID", - "IR", - "IQ", - "IE", - "IM", - "IL", - "IT", - "JM", - "JP", - "JE", - "JO", - "KZ", - "KE", - "KI", - "KP", - "KR", - "KW", - "KG", - "LA", - "LV", - "LB", - "LS", - "LR", - "LY", - "LI", - "LT", - "LU", - "MO", - "MG", - "MW", - "MY", - "MV", - "ML", - "MT", - "MH", - "MQ", - "MR", - "MU", - "YT", - "MX", - "FM", - "MD", - "MC", - "MN", - "ME", - "MS", - "MA", - "MZ", - "MM", - "NA", - "NR", - "NP", - "NL", - "NC", - "NZ", - "NI", - "NE", - "NG", - "NU", - "NF", - "MP", - "NO", - "OM", - "PK", - "PW", - "PS", - "PA", - "PG", - "PY", - "PE", - "PH", - "PN", - "PL", - "PT", - "PR", - "QA", - "MK", - "RO", - "RU", - "RW", - "RE", - "BL", - "SH", - "KN", - "LC", - "MF", - "PM", - "VC", - "WS", - "SM", - "ST", - "SA", - "SN", - "RS", - "SC", - "SL", - "SG", - "SX", - "SK", - "SI", - "SB", - "SO", - "ZA", - "GS", - "SS", - "ES", - "LK", - "SD", - "SR", - "SJ", - "SE", - "CH", - "SY", - "TW", - "TJ", - "TZ", - "TH", - "TL", - "TG", - "TK", - "TO", - "TT", - "TN", - "TR", - "TM", - "TC", - "TV", - "UG", - "UA", - "AE", - "GB", - "UM", - "US", - "UY", - "UZ", - "VU", - "VE", - "VN", - "VG", - "VI", - "WF", - "EH", - "YE", - "ZM", - "ZW", - "AX" - ], - "example": "BR" - }, - "id_doc_type": { - "type": [ - "string", - "null" - ], - "enum": [ - "PASSPORT", - "ID_CARD", - "DRIVERS" - ], - "example": "PASSPORT" - }, - "id_doc_front_file": { - "type": [ - "string", - "null" - ], - "description": "Only image files are accepted (.jpg, .jpeg, .png)", - "example": "https://example.com/image.png" - }, - "id_doc_back_file": { - "type": [ - "string", - "null" - ], - "description": "Only image files are accepted (.jpg, .jpeg, .png)", - "example": "https://example.com/image.png" - }, - "legal_name": { - "type": [ - "string", - "null" - ], - "example": "Company Name Inc." - }, - "alternate_name": { - "type": [ - "string", - "null" - ], - "example": "Company Name Inc." - }, - "formation_date": { - "anyOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "type": "string" - }, - { - "type": "null" - } - ], - "example": "1998-01-01T00:00:00Z", - "format": "date-time" - }, - "website": { - "type": [ - "string", - "null" - ], - "format": "uri", - "example": "https://example.com" - }, - "owners": { - "type": [ - "array", - "null" - ], - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "ub_000000000000" - }, - "instance_id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "in_000000000000" - }, - "customer_id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "re_000000000000" - }, - "role": { - "type": "string", - "enum": [ - "beneficial_controlling", - "beneficial_owner", - "controlling_person" - ], - "description": "A beneficial owner is someone who directly or indirectly owns 25% or more of your business. A controlling person is someone with significant responsibility to control, manage or direct your business (typically a CEO, senior executive officer or equivalent).", - "example": "beneficial_owner" - }, - "first_name": { - "type": "string", - "minLength": 1, - "example": "John" - }, - "last_name": { - "type": "string", - "minLength": 1, - "example": "Doe" - }, - "date_of_birth": { - "anyOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "type": "string" - } - ], - "example": "1998-01-01T00:00:00Z" - }, - "tax_id": { - "type": [ - "string", - "null" - ], - "example": "536804398" - }, - "address_line_1": { - "type": "string", - "example": "738 Plain St" - }, - "address_line_2": { - "type": [ - "string", - "null" - ], - "example": "Building 22" - }, - "city": { - "type": "string", - "example": "Marshfield" - }, - "state_province_region": { - "type": "string", - "example": "MA" - }, - "country": { - "type": "string", - "enum": [ - "AF", - "AL", - "DZ", - "AS", - "AD", - "AO", - "AI", - "AQ", - "AG", - "AR", - "AM", - "AW", - "AU", - "AT", - "AZ", - "BS", - "BH", - "BD", - "BB", - "BY", - "BE", - "BZ", - "BJ", - "BM", - "BT", - "BO", - "BQ", - "BA", - "BW", - "BV", - "BR", - "IO", - "BN", - "BG", - "BF", - "BI", - "CV", - "KH", - "CM", - "CA", - "KY", - "CF", - "TD", - "CL", - "CN", - "CX", - "CC", - "CO", - "KM", - "CD", - "CG", - "CK", - "CR", - "HR", - "CU", - "CW", - "CY", - "CZ", - "CI", - "DK", - "DJ", - "DM", - "DO", - "EC", - "EG", - "SV", - "GQ", - "ER", - "EE", - "SZ", - "ET", - "FK", - "FO", - "FJ", - "FI", - "FR", - "GF", - "PF", - "TF", - "GA", - "GM", - "GE", - "DE", - "GH", - "GI", - "GR", - "GL", - "GD", - "GP", - "GU", - "GT", - "GG", - "GN", - "GW", - "GY", - "HT", - "HM", - "VA", - "HN", - "HK", - "HU", - "IS", - "IN", - "ID", - "IR", - "IQ", - "IE", - "IM", - "IL", - "IT", - "JM", - "JP", - "JE", - "JO", - "KZ", - "KE", - "KI", - "KP", - "KR", - "KW", - "KG", - "LA", - "LV", - "LB", - "LS", - "LR", - "LY", - "LI", - "LT", - "LU", - "MO", - "MG", - "MW", - "MY", - "MV", - "ML", - "MT", - "MH", - "MQ", - "MR", - "MU", - "YT", - "MX", - "FM", - "MD", - "MC", - "MN", - "ME", - "MS", - "MA", - "MZ", - "MM", - "NA", - "NR", - "NP", - "NL", - "NC", - "NZ", - "NI", - "NE", - "NG", - "NU", - "NF", - "MP", - "NO", - "OM", - "PK", - "PW", - "PS", - "PA", - "PG", - "PY", - "PE", - "PH", - "PN", - "PL", - "PT", - "PR", - "QA", - "MK", - "RO", - "RU", - "RW", - "RE", - "BL", - "SH", - "KN", - "LC", - "MF", - "PM", - "VC", - "WS", - "SM", - "ST", - "SA", - "SN", - "RS", - "SC", - "SL", - "SG", - "SX", - "SK", - "SI", - "SB", - "SO", - "ZA", - "GS", - "SS", - "ES", - "LK", - "SD", - "SR", - "SJ", - "SE", - "CH", - "SY", - "TW", - "TJ", - "TZ", - "TH", - "TL", - "TG", - "TK", - "TO", - "TT", - "TN", - "TR", - "TM", - "TC", - "TV", - "UG", - "UA", - "AE", - "GB", - "UM", - "US", - "UY", - "UZ", - "VU", - "VE", - "VN", - "VG", - "VI", - "WF", - "EH", - "YE", - "ZM", - "ZW", - "AX" - ], - "example": "US" - }, - "postal_code": { - "type": "string", - "example": "02050" - }, - "id_doc_country": { - "type": "string", - "enum": [ - "AF", - "AL", - "DZ", - "AS", - "AD", - "AO", - "AI", - "AQ", - "AG", - "AR", - "AM", - "AW", - "AU", - "AT", - "AZ", - "BS", - "BH", - "BD", - "BB", - "BY", - "BE", - "BZ", - "BJ", - "BM", - "BT", - "BO", - "BQ", - "BA", - "BW", - "BV", - "BR", - "IO", - "BN", - "BG", - "BF", - "BI", - "CV", - "KH", - "CM", - "CA", - "KY", - "CF", - "TD", - "CL", - "CN", - "CX", - "CC", - "CO", - "KM", - "CD", - "CG", - "CK", - "CR", - "HR", - "CU", - "CW", - "CY", - "CZ", - "CI", - "DK", - "DJ", - "DM", - "DO", - "EC", - "EG", - "SV", - "GQ", - "ER", - "EE", - "SZ", - "ET", - "FK", - "FO", - "FJ", - "FI", - "FR", - "GF", - "PF", - "TF", - "GA", - "GM", - "GE", - "DE", - "GH", - "GI", - "GR", - "GL", - "GD", - "GP", - "GU", - "GT", - "GG", - "GN", - "GW", - "GY", - "HT", - "HM", - "VA", - "HN", - "HK", - "HU", - "IS", - "IN", - "ID", - "IR", - "IQ", - "IE", - "IM", - "IL", - "IT", - "JM", - "JP", - "JE", - "JO", - "KZ", - "KE", - "KI", - "KP", - "KR", - "KW", - "KG", - "LA", - "LV", - "LB", - "LS", - "LR", - "LY", - "LI", - "LT", - "LU", - "MO", - "MG", - "MW", - "MY", - "MV", - "ML", - "MT", - "MH", - "MQ", - "MR", - "MU", - "YT", - "MX", - "FM", - "MD", - "MC", - "MN", - "ME", - "MS", - "MA", - "MZ", - "MM", - "NA", - "NR", - "NP", - "NL", - "NC", - "NZ", - "NI", - "NE", - "NG", - "NU", - "NF", - "MP", - "NO", - "OM", - "PK", - "PW", - "PS", - "PA", - "PG", - "PY", - "PE", - "PH", - "PN", - "PL", - "PT", - "PR", - "QA", - "MK", - "RO", - "RU", - "RW", - "RE", - "BL", - "SH", - "KN", - "LC", - "MF", - "PM", - "VC", - "WS", - "SM", - "ST", - "SA", - "SN", - "RS", - "SC", - "SL", - "SG", - "SX", - "SK", - "SI", - "SB", - "SO", - "ZA", - "GS", - "SS", - "ES", - "LK", - "SD", - "SR", - "SJ", - "SE", - "CH", - "SY", - "TW", - "TJ", - "TZ", - "TH", - "TL", - "TG", - "TK", - "TO", - "TT", - "TN", - "TR", - "TM", - "TC", - "TV", - "UG", - "UA", - "AE", - "GB", - "UM", - "US", - "UY", - "UZ", - "VU", - "VE", - "VN", - "VG", - "VI", - "WF", - "EH", - "YE", - "ZM", - "ZW", - "AX" - ], - "example": "BR" - }, - "id_doc_type": { - "type": "string", - "enum": [ - "PASSPORT", - "ID_CARD", - "DRIVERS" - ], - "example": "PASSPORT" - }, - "id_doc_front_file": { - "type": [ - "string", - "null" - ], - "description": "Only image files are accepted (.jpg, .jpeg, .png)" - }, - "id_doc_back_file": { - "type": [ - "string", - "null" - ], - "description": "Only image files are accepted (.jpg, .jpeg, .png)" - }, - "proof_of_address_doc_type": { - "type": [ - "string", - "null" - ], - "enum": [ - "UTILITY_BILL", - "BANK_STATEMENT", - "RENTAL_AGREEMENT", - "TAX_DOCUMENT", - "GOVERNMENT_CORRESPONDENCE" - ], - "example": "UTILITY_BILL" - }, - "proof_of_address_doc_file": { - "type": [ - "string", - "null" - ], - "description": "Please upload one document that serve as proof of address, this needs to be the same address as the one provided above. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB." - }, - "ownership_percentage": { - "type": [ - "integer", - "null" - ], - "minimum": 0, - "maximum": 100, - "description": "Ownership percentage of the beneficial owner (0-100)", - "example": 25 - }, - "title": { - "type": [ - "string", - "null" - ], - "maxLength": 128, - "description": "Job title of the owner", - "example": "CEO" - }, - "tax_type": { - "type": [ - "string", - "null" - ], - "enum": [ - "SSN", - "ITIN" - ], - "description": "Tax identifier type. Mandatory when country is US; must be SSN or ITIN.", - "example": "SSN" - } - } - }, - "description": "Customer owners", - "example": [ - { - "id": "ub_000000000000", - "first_name": "John", - "last_name": "Doe", - "address_line_1": "738 Plain St", - "address_line_2": "Building 22", - "city": "Marshfield", - "state_province_region": "MA", - "country": "US", - "postal_code": "02050", - "id_doc_country": "BR", - "id_doc_type": "PASSPORT", - "id_doc_front_file": "https://example.com/image.png", - "id_doc_back_file": "https://example.com/image.png" - } - ] - }, - "incorporation_doc_file": { - "type": [ - "string", - "null" - ], - "description": "Please upload your articles of incorporation below. The articles of incorporation or a certificate of incorporation usually includes information like the company name, business purpose, number of shares offered, value of shares, etc. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", - "example": "https://example.com/image.png" - }, - "proof_of_ownership_doc_file": { - "type": [ - "string", - "null" - ], - "description": "Please upload your proof of ownership below. This document usually includes information like the shareholders names and percentages. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", - "example": "https://example.com/image.png" - }, - "source_of_funds_doc_type": { - "type": [ - "string", - "null" - ], - "enum": [ - "business_income", - "gambling_proceeds", - "gifts", - "government_benefits", - "inheritance", - "investment_loans", - "pension_retirement", - "salary", - "sale_of_assets_real_estate", - "savings", - "esops", - "investment_proceeds", - "someone_else_funds" - ], - "example": "business_income" - }, - "source_of_funds_doc_file": { - "type": [ - "string", - "null" - ], - "example": "https://example.com/image.png" - }, - "selfie_file": { - "type": [ - "string", - "null" - ], - "description": "Only image files are accepted (.jpg, .jpeg, .png)", - "example": "https://example.com/image.png" - }, - "purpose_of_transactions": { - "type": [ - "string", - "null" - ], - "enum": [ - "business_transactions", - "charitable_donations", - "investment_purposes", - "payments_to_friends_or_family_abroad", - "personal_or_living_expenses", - "protect_wealth", - "purchase_good_and_services", - "receive_payment_for_freelancing", - "receive_salary", - "other" - ], - "example": "business_transactions" - }, - "purpose_of_transactions_explanation": { - "type": [ - "string", - "null" - ], - "example": "I am a business owner and I want to receive payments from my customers" - }, - "is_fbo": { - "type": [ - "boolean", - "null" - ], - "example": false - }, - "account_purpose": { - "type": [ - "string", - "null" - ], - "enum": [ - "charitable_donations", - "ecommerce_retail_payments", - "investment_purposes", - "business_expenses", - "payments_to_friends_or_family_abroad", - "personal_or_living_expenses", - "protect_wealth", - "purchase_goods_and_services", - "receive_payments_for_goods_and_services", - "tax_optimization", - "third_party_money_transmission", - "payroll", - "treasury_management", - "other" - ], - "example": "treasury_management" - }, - "account_purpose_other": { - "type": [ - "string", - "null" - ], - "maxLength": 512, - "description": "Required when account_purpose is \"other\". Max 512 characters.", - "example": "Custom account purpose description" - }, - "business_type": { - "type": [ - "string", - "null" - ], - "enum": [ - "corporation", - "llc", - "partnership", - "sole_proprietorship", - "trust", - "non_profit" - ], - "example": "llc" - }, - "business_description": { - "type": [ - "string", - "null" - ], - "maxLength": 1000, - "example": "Software development company" - }, - "business_industry": { - "type": [ - "string", - "null" - ], - "enum": [ - "111998", - "112120", - "113310", - "115114", - "541211", - "541810", - "541430", - "541715", - "541930", - "561422", - "561311", - "561612", - "561740", - "561730", - "236115", - "236220", - "237310", - "238210", - "811111", - "812111", - "812112", - "532111", - "624410", - "541922", - "811210", - "812199", - "611110", - "611310", - "611410", - "611710", - "211120", - "212114", - "221310", - "562111", - "562920", - "213112", - "522110", - "522210", - "522320", - "523150", - "523940", - "523999", - "524113", - "813110", - "813211", - "813219", - "551112", - "721110", - "722511", - "722513", - "561510", - "713110", - "713210", - "712110", - "711110", - "711211", - "621111", - "621210", - "622110", - "623110", - "621511", - "623220", - "541940", - "621399", - "621910", - "541110", - "311421", - "337121", - "322220", - "339920", - "334210", - "339930", - "312130", - "334111", - "334118", - "325412", - "339112", - "336110", - "336390", - "315990", - "313110", - "339910", - "516120", - "513130", - "512250", - "519130", - "711410", - "711510", - "531110", - "531120", - "531130", - "531190", - "531210", - "531311", - "531312", - "531320", - "531390", - "454110", - "445110", - "455110", - "457110", - "449210", - "444110", - "459210", - "459120", - "445320", - "458110", - "458210", - "458310", - "455219", - "424210", - "456110", - "446120", - "541511", - "541512", - "541519", - "518210", - "511210", - "517111", - "517112", - "517410", - "481111", - "483111", - "485210", - "488510", - "484121", - "493110", - "423430", - "423690", - "423110", - "423830", - "423840", - "423510", - "424690", - "424990", - "424410", - "424480", - "423940", - "541611", - "541618", - "541330", - "541990", - "541214", - "561499" - ], - "example": "541511" - }, - "estimated_annual_revenue": { - "type": [ - "string", - "null" - ], - "enum": [ - "0_99999", - "100000_999999", - "1000000_9999999", - "10000000_49999999", - "50000000_249999999", - "250000000_plus" - ], - "example": "1000000_9999999" - }, - "source_of_wealth": { - "type": [ - "string", - "null" - ], - "enum": [ - "business_dividends_or_profits", - "investments", - "asset_sales", - "client_investor_contributions", - "gambling", - "charitable_contributions", - "inheritance", - "affiliate_or_royalty_income" - ], - "example": "affiliate_or_royalty_income" - }, - "publicly_traded": { - "type": [ - "boolean", - "null" - ], - "example": false - }, - "occupation": { - "type": [ - "string", - "null" - ], - "maxLength": 255, - "example": "Software Engineer" - }, - "external_id": { - "type": [ - "string", - "null" - ], - "example": "your_company_external_id" - }, - "instance_id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "in_000000000000" - }, - "tos_id": { - "type": [ - "string", - "null" - ], - "minLength": 15, - "maxLength": 15, - "example": "to_000000000000" - }, - "aml_status": { - "type": [ - "string", - "null" - ], - "enum": [ - "clear", - "hit", - "error" - ], - "description": "AML screening status from SEON. null = not yet screened.", - "example": "clear" - }, - "aml_hits": { - "type": [ - "object", - "null" - ], - "properties": { - "has_sanction_match": { - "type": "boolean", - "default": false - }, - "has_pep_match": { - "type": "boolean", - "default": false - }, - "has_watchlist_match": { - "type": "boolean", - "default": false - }, - "has_crimelist_match": { - "type": "boolean", - "default": false - }, - "has_adversemedia_match": { - "type": "boolean", - "default": false - } - }, - "description": "AML screening match details from SEON.", - "example": { - "has_sanction_match": false, - "has_pep_match": false, - "has_watchlist_match": false, - "has_crimelist_match": false, - "has_adversemedia_match": false - } - }, - "created_at": { - "example": "2021-01-01T00:00:00Z" - }, - "updated_at": { - "example": "2021-01-01T00:00:00Z" - }, - "limit": { - "type": "object", - "properties": { - "per_transaction": { - "type": [ - "number", - "null" - ], - "example": 100000 - }, - "daily": { - "type": [ - "number", - "null" - ], - "example": 200000 - }, - "monthly": { - "type": [ - "number", - "null" - ], - "example": 1000000 - } - }, - "required": [ - "per_transaction", - "daily", - "monthly" - ] - }, - "is_tos_accepted": { - "type": [ - "boolean", - "null" - ] - }, - "additional_info": { - "type": [ - "array", - "null" - ], - "items": { - "$ref": "#/components/schemas/AdditionalInfoItem" - }, - "description": "Optional extra documents or notes for this customer. `label` is a known category, `value` is either a URL to upload or a free-text description. Any URLs are downloaded and re-hosted on Blindpay storage before being stored.", - "example": [ - { - "label": "EIN_LETTER", - "value": "https://example.com/ein.pdf" - }, - { - "label": "FLOW_OF_FUNDS", - "value": "Funds originate from US payroll deposits, forwarded weekly to customer." - } - ] - } - }, - "required": [ - "webhook_event", - "id", - "customer_id", - "type", - "kyc_type", - "kyc_status", - "email", - "country", - "instance_id", - "limit" - ] - }, - "CustomerUpdateWebhookOut": { - "type": "object", - "properties": { - "webhook_event": { - "type": "string", - "enum": [ - "customer.update" - ] - }, - "id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "re_000000000000" - }, - "customer_id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "re_000000000000" - }, - "type": { - "type": "string", - "enum": [ - "individual", - "business" - ], - "example": "individual" - }, - "kyc_type": { - "type": "string", - "enum": [ - "light", - "standard", - "enhanced" - ], - "example": "standard" - }, - "kyc_status": { - "type": "string", - "enum": [ - "verifying", - "approved", - "rejected", - "deprecated", - "pending_review", - "awaiting_contract", - "compliance_request", - "approved_rfi" - ], - "example": "verifying" - }, - "kyc_warnings": { - "type": [ - "array", - "null" - ], - "items": { - "type": "object", - "properties": { - "code": { - "type": [ - "string", - "null" - ] - }, - "message": { - "type": [ - "string", - "null" - ] - }, - "resolution_status": { - "type": [ - "string", - "null" - ] - }, - "warning_id": { - "type": [ - "string", - "null" - ] - } - } - }, - "description": "You can find more information here: https://docs.aiprise.com/docs/warnings-and-error-codes", - "example": [ - { - "code": "BIRTH_DATE_MISMATCH", - "message": "Mismatch between supplied birth date and extracted/looked up birth date.", - "resolution_status": "UNRESOLVED", - "warning_id": "38170889-50aa-4271-9eb1-61113ebf408c" - } - ] - }, - "fraud_warnings": { - "type": [ - "array", - "null" - ], - "items": { - "type": "object", - "properties": { - "id": { - "type": [ - "string", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - }, - "operation": { - "type": [ - "string", - "null" - ] - }, - "score": { - "type": [ - "number", - "null" - ] - } - } - }, - "example": [ - { - "id": "UC114", - "name": "User never used a Datacenter proxy and this device before", - "operation": "+", - "score": 10 - } - ] - }, - "email": { - "type": "string", - "format": "email", - "example": "email@example.com" - }, - "tax_id": { - "type": [ - "string", - "null" - ], - "example": "536804398" - }, - "address_line_1": { - "type": [ - "string", - "null" - ], - "example": "738 Plain St" - }, - "address_line_2": { - "type": [ - "string", - "null" - ], - "example": "Building 22" - }, - "city": { - "type": [ - "string", - "null" - ], - "example": "Marshfield" - }, - "state_province_region": { - "type": [ - "string", - "null" - ], - "example": "MA" - }, - "country": { - "type": "string", - "enum": [ - "AF", - "AL", - "DZ", - "AS", - "AD", - "AO", - "AI", - "AQ", - "AG", - "AR", - "AM", - "AW", - "AU", - "AT", - "AZ", - "BS", - "BH", - "BD", - "BB", - "BY", - "BE", - "BZ", - "BJ", - "BM", - "BT", - "BO", - "BQ", - "BA", - "BW", - "BV", - "BR", - "IO", - "BN", - "BG", - "BF", - "BI", - "CV", - "KH", - "CM", - "CA", - "KY", - "CF", - "TD", - "CL", - "CN", - "CX", - "CC", - "CO", - "KM", - "CD", - "CG", - "CK", - "CR", - "HR", - "CU", - "CW", - "CY", - "CZ", - "CI", - "DK", - "DJ", - "DM", - "DO", - "EC", - "EG", - "SV", - "GQ", - "ER", - "EE", - "SZ", - "ET", - "FK", - "FO", - "FJ", - "FI", - "FR", - "GF", - "PF", - "TF", - "GA", - "GM", - "GE", - "DE", - "GH", - "GI", - "GR", - "GL", - "GD", - "GP", - "GU", - "GT", - "GG", - "GN", - "GW", - "GY", - "HT", - "HM", - "VA", - "HN", - "HK", - "HU", - "IS", - "IN", - "ID", - "IR", - "IQ", - "IE", - "IM", - "IL", - "IT", - "JM", - "JP", - "JE", - "JO", - "KZ", - "KE", - "KI", - "KP", - "KR", - "KW", - "KG", - "LA", - "LV", - "LB", - "LS", - "LR", - "LY", - "LI", - "LT", - "LU", - "MO", - "MG", - "MW", - "MY", - "MV", - "ML", - "MT", - "MH", - "MQ", - "MR", - "MU", - "YT", - "MX", - "FM", - "MD", - "MC", - "MN", - "ME", - "MS", - "MA", - "MZ", - "MM", - "NA", - "NR", - "NP", - "NL", - "NC", - "NZ", - "NI", - "NE", - "NG", - "NU", - "NF", - "MP", - "NO", - "OM", - "PK", - "PW", - "PS", - "PA", - "PG", - "PY", - "PE", - "PH", - "PN", - "PL", - "PT", - "PR", - "QA", - "MK", - "RO", - "RU", - "RW", - "RE", - "BL", - "SH", - "KN", - "LC", - "MF", - "PM", - "VC", - "WS", - "SM", - "ST", - "SA", - "SN", - "RS", - "SC", - "SL", - "SG", - "SX", - "SK", - "SI", - "SB", - "SO", - "ZA", - "GS", - "SS", - "ES", - "LK", - "SD", - "SR", - "SJ", - "SE", - "CH", - "SY", - "TW", - "TJ", - "TZ", - "TH", - "TL", - "TG", - "TK", - "TO", - "TT", - "TN", - "TR", - "TM", - "TC", - "TV", - "UG", - "UA", - "AE", - "GB", - "UM", - "US", - "UY", - "UZ", - "VU", - "VE", - "VN", - "VG", - "VI", - "WF", - "EH", - "YE", - "ZM", - "ZW", - "AX" - ], - "example": "US" - }, - "postal_code": { - "type": [ - "string", - "null" - ], - "example": "02050" - }, - "ip_address": { - "type": [ - "string", - "null" - ], - "format": "ip", - "example": "127.0.0.1" - }, - "latitude": { - "type": [ - "number", - "null" - ], - "minimum": -90, - "maximum": 90, - "description": "Optional geolocation latitude collected from the customer. Forwarded to AiPrise and SEON for fraud analysis.", - "example": 37.7749 - }, - "longitude": { - "type": [ - "number", - "null" - ], - "minimum": -180, - "maximum": 180, - "description": "Optional geolocation longitude collected from the customer. Forwarded to AiPrise and SEON for fraud analysis.", - "example": -122.4194 - }, - "image_url": { - "type": [ - "string", - "null" - ], - "example": "https://example.com/image.png" - }, - "phone_number": { - "type": [ - "string", - "null" - ], - "example": "+13055555555" - }, - "proof_of_address_doc_type": { - "type": [ - "string", - "null" - ], - "enum": [ - "UTILITY_BILL", - "BANK_STATEMENT", - "RENTAL_AGREEMENT", - "TAX_DOCUMENT", - "GOVERNMENT_CORRESPONDENCE" - ], - "example": "UTILITY_BILL" - }, - "proof_of_address_doc_file": { - "type": [ - "string", - "null" - ], - "description": "Please upload one document that serve as proof of address, this needs to be the same physical address as the one provided above. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", - "example": "https://example.com/image.png" - }, - "first_name": { - "type": [ - "string", - "null" - ], - "example": "John" - }, - "last_name": { - "type": [ - "string", - "null" - ], - "example": "Doe" - }, - "date_of_birth": { - "anyOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "type": "string" - }, - { - "type": "null" - } - ], - "example": "1998-01-01T00:00:00Z" - }, - "id_doc_country": { - "type": [ - "string", - "null" - ], - "enum": [ - "AF", - "AL", - "DZ", - "AS", - "AD", - "AO", - "AI", - "AQ", - "AG", - "AR", - "AM", - "AW", - "AU", - "AT", - "AZ", - "BS", - "BH", - "BD", - "BB", - "BY", - "BE", - "BZ", - "BJ", - "BM", - "BT", - "BO", - "BQ", - "BA", - "BW", - "BV", - "BR", - "IO", - "BN", - "BG", - "BF", - "BI", - "CV", - "KH", - "CM", - "CA", - "KY", - "CF", - "TD", - "CL", - "CN", - "CX", - "CC", - "CO", - "KM", - "CD", - "CG", - "CK", - "CR", - "HR", - "CU", - "CW", - "CY", - "CZ", - "CI", - "DK", - "DJ", - "DM", - "DO", - "EC", - "EG", - "SV", - "GQ", - "ER", - "EE", - "SZ", - "ET", - "FK", - "FO", - "FJ", - "FI", - "FR", - "GF", - "PF", - "TF", - "GA", - "GM", - "GE", - "DE", - "GH", - "GI", - "GR", - "GL", - "GD", - "GP", - "GU", - "GT", - "GG", - "GN", - "GW", - "GY", - "HT", - "HM", - "VA", - "HN", - "HK", - "HU", - "IS", - "IN", - "ID", - "IR", - "IQ", - "IE", - "IM", - "IL", - "IT", - "JM", - "JP", - "JE", - "JO", - "KZ", - "KE", - "KI", - "KP", - "KR", - "KW", - "KG", - "LA", - "LV", - "LB", - "LS", - "LR", - "LY", - "LI", - "LT", - "LU", - "MO", - "MG", - "MW", - "MY", - "MV", - "ML", - "MT", - "MH", - "MQ", - "MR", - "MU", - "YT", - "MX", - "FM", - "MD", - "MC", - "MN", - "ME", - "MS", - "MA", - "MZ", - "MM", - "NA", - "NR", - "NP", - "NL", - "NC", - "NZ", - "NI", - "NE", - "NG", - "NU", - "NF", - "MP", - "NO", - "OM", - "PK", - "PW", - "PS", - "PA", - "PG", - "PY", - "PE", - "PH", - "PN", - "PL", - "PT", - "PR", - "QA", - "MK", - "RO", - "RU", - "RW", - "RE", - "BL", - "SH", - "KN", - "LC", - "MF", - "PM", - "VC", - "WS", - "SM", - "ST", - "SA", - "SN", - "RS", - "SC", - "SL", - "SG", - "SX", - "SK", - "SI", - "SB", - "SO", - "ZA", - "GS", - "SS", - "ES", - "LK", - "SD", - "SR", - "SJ", - "SE", - "CH", - "SY", - "TW", - "TJ", - "TZ", - "TH", - "TL", - "TG", - "TK", - "TO", - "TT", - "TN", - "TR", - "TM", - "TC", - "TV", - "UG", - "UA", - "AE", - "GB", - "UM", - "US", - "UY", - "UZ", - "VU", - "VE", - "VN", - "VG", - "VI", - "WF", - "EH", - "YE", - "ZM", - "ZW", - "AX" - ], - "example": "BR" - }, - "id_doc_type": { - "type": [ - "string", - "null" - ], - "enum": [ - "PASSPORT", - "ID_CARD", - "DRIVERS" - ], - "example": "PASSPORT" - }, - "id_doc_front_file": { - "type": [ - "string", - "null" - ], - "description": "Only image files are accepted (.jpg, .jpeg, .png)", - "example": "https://example.com/image.png" - }, - "id_doc_back_file": { - "type": [ - "string", - "null" - ], - "description": "Only image files are accepted (.jpg, .jpeg, .png)", - "example": "https://example.com/image.png" - }, - "legal_name": { - "type": [ - "string", - "null" - ], - "example": "Company Name Inc." - }, - "alternate_name": { - "type": [ - "string", - "null" - ], - "example": "Company Name Inc." - }, - "formation_date": { - "anyOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "type": "string" - }, - { - "type": "null" - } - ], - "example": "1998-01-01T00:00:00Z", - "format": "date-time" - }, - "website": { - "type": [ - "string", - "null" - ], - "format": "uri", - "example": "https://example.com" - }, - "owners": { - "type": [ - "array", - "null" - ], - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "ub_000000000000" - }, - "instance_id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "in_000000000000" - }, - "customer_id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "re_000000000000" - }, - "role": { - "type": "string", - "enum": [ - "beneficial_controlling", - "beneficial_owner", - "controlling_person" - ], - "description": "A beneficial owner is someone who directly or indirectly owns 25% or more of your business. A controlling person is someone with significant responsibility to control, manage or direct your business (typically a CEO, senior executive officer or equivalent).", - "example": "beneficial_owner" - }, - "first_name": { - "type": "string", - "minLength": 1, - "example": "John" - }, - "last_name": { - "type": "string", - "minLength": 1, - "example": "Doe" - }, - "date_of_birth": { - "anyOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "type": "string" - } - ], - "example": "1998-01-01T00:00:00Z" - }, - "tax_id": { - "type": [ - "string", - "null" - ], - "example": "536804398" - }, - "address_line_1": { - "type": "string", - "example": "738 Plain St" - }, - "address_line_2": { - "type": [ - "string", - "null" - ], - "example": "Building 22" - }, - "city": { - "type": "string", - "example": "Marshfield" - }, - "state_province_region": { - "type": "string", - "example": "MA" - }, - "country": { - "type": "string", - "enum": [ - "AF", - "AL", - "DZ", - "AS", - "AD", - "AO", - "AI", - "AQ", - "AG", - "AR", - "AM", - "AW", - "AU", - "AT", - "AZ", - "BS", - "BH", - "BD", - "BB", - "BY", - "BE", - "BZ", - "BJ", - "BM", - "BT", - "BO", - "BQ", - "BA", - "BW", - "BV", - "BR", - "IO", - "BN", - "BG", - "BF", - "BI", - "CV", - "KH", - "CM", - "CA", - "KY", - "CF", - "TD", - "CL", - "CN", - "CX", - "CC", - "CO", - "KM", - "CD", - "CG", - "CK", - "CR", - "HR", - "CU", - "CW", - "CY", - "CZ", - "CI", - "DK", - "DJ", - "DM", - "DO", - "EC", - "EG", - "SV", - "GQ", - "ER", - "EE", - "SZ", - "ET", - "FK", - "FO", - "FJ", - "FI", - "FR", - "GF", - "PF", - "TF", - "GA", - "GM", - "GE", - "DE", - "GH", - "GI", - "GR", - "GL", - "GD", - "GP", - "GU", - "GT", - "GG", - "GN", - "GW", - "GY", - "HT", - "HM", - "VA", - "HN", - "HK", - "HU", - "IS", - "IN", - "ID", - "IR", - "IQ", - "IE", - "IM", - "IL", - "IT", - "JM", - "JP", - "JE", - "JO", - "KZ", - "KE", - "KI", - "KP", - "KR", - "KW", - "KG", - "LA", - "LV", - "LB", - "LS", - "LR", - "LY", - "LI", - "LT", - "LU", - "MO", - "MG", - "MW", - "MY", - "MV", - "ML", - "MT", - "MH", - "MQ", - "MR", - "MU", - "YT", - "MX", - "FM", - "MD", - "MC", - "MN", - "ME", - "MS", - "MA", - "MZ", - "MM", - "NA", - "NR", - "NP", - "NL", - "NC", - "NZ", - "NI", - "NE", - "NG", - "NU", - "NF", - "MP", - "NO", - "OM", - "PK", - "PW", - "PS", - "PA", - "PG", - "PY", - "PE", - "PH", - "PN", - "PL", - "PT", - "PR", - "QA", - "MK", - "RO", - "RU", - "RW", - "RE", - "BL", - "SH", - "KN", - "LC", - "MF", - "PM", - "VC", - "WS", - "SM", - "ST", - "SA", - "SN", - "RS", - "SC", - "SL", - "SG", - "SX", - "SK", - "SI", - "SB", - "SO", - "ZA", - "GS", - "SS", - "ES", - "LK", - "SD", - "SR", - "SJ", - "SE", - "CH", - "SY", - "TW", - "TJ", - "TZ", - "TH", - "TL", - "TG", - "TK", - "TO", - "TT", - "TN", - "TR", - "TM", - "TC", - "TV", - "UG", - "UA", - "AE", - "GB", - "UM", - "US", - "UY", - "UZ", - "VU", - "VE", - "VN", - "VG", - "VI", - "WF", - "EH", - "YE", - "ZM", - "ZW", - "AX" - ], - "example": "US" - }, - "postal_code": { - "type": "string", - "example": "02050" - }, - "id_doc_country": { - "type": "string", - "enum": [ - "AF", - "AL", - "DZ", - "AS", - "AD", - "AO", - "AI", - "AQ", - "AG", - "AR", - "AM", - "AW", - "AU", - "AT", - "AZ", - "BS", - "BH", - "BD", - "BB", - "BY", - "BE", - "BZ", - "BJ", - "BM", - "BT", - "BO", - "BQ", - "BA", - "BW", - "BV", - "BR", - "IO", - "BN", - "BG", - "BF", - "BI", - "CV", - "KH", - "CM", - "CA", - "KY", - "CF", - "TD", - "CL", - "CN", - "CX", - "CC", - "CO", - "KM", - "CD", - "CG", - "CK", - "CR", - "HR", - "CU", - "CW", - "CY", - "CZ", - "CI", - "DK", - "DJ", - "DM", - "DO", - "EC", - "EG", - "SV", - "GQ", - "ER", - "EE", - "SZ", - "ET", - "FK", - "FO", - "FJ", - "FI", - "FR", - "GF", - "PF", - "TF", - "GA", - "GM", - "GE", - "DE", - "GH", - "GI", - "GR", - "GL", - "GD", - "GP", - "GU", - "GT", - "GG", - "GN", - "GW", - "GY", - "HT", - "HM", - "VA", - "HN", - "HK", - "HU", - "IS", - "IN", - "ID", - "IR", - "IQ", - "IE", - "IM", - "IL", - "IT", - "JM", - "JP", - "JE", - "JO", - "KZ", - "KE", - "KI", - "KP", - "KR", - "KW", - "KG", - "LA", - "LV", - "LB", - "LS", - "LR", - "LY", - "LI", - "LT", - "LU", - "MO", - "MG", - "MW", - "MY", - "MV", - "ML", - "MT", - "MH", - "MQ", - "MR", - "MU", - "YT", - "MX", - "FM", - "MD", - "MC", - "MN", - "ME", - "MS", - "MA", - "MZ", - "MM", - "NA", - "NR", - "NP", - "NL", - "NC", - "NZ", - "NI", - "NE", - "NG", - "NU", - "NF", - "MP", - "NO", - "OM", - "PK", - "PW", - "PS", - "PA", - "PG", - "PY", - "PE", - "PH", - "PN", - "PL", - "PT", - "PR", - "QA", - "MK", - "RO", - "RU", - "RW", - "RE", - "BL", - "SH", - "KN", - "LC", - "MF", - "PM", - "VC", - "WS", - "SM", - "ST", - "SA", - "SN", - "RS", - "SC", - "SL", - "SG", - "SX", - "SK", - "SI", - "SB", - "SO", - "ZA", - "GS", - "SS", - "ES", - "LK", - "SD", - "SR", - "SJ", - "SE", - "CH", - "SY", - "TW", - "TJ", - "TZ", - "TH", - "TL", - "TG", - "TK", - "TO", - "TT", - "TN", - "TR", - "TM", - "TC", - "TV", - "UG", - "UA", - "AE", - "GB", - "UM", - "US", - "UY", - "UZ", - "VU", - "VE", - "VN", - "VG", - "VI", - "WF", - "EH", - "YE", - "ZM", - "ZW", - "AX" - ], - "example": "BR" - }, - "id_doc_type": { - "type": "string", - "enum": [ - "PASSPORT", - "ID_CARD", - "DRIVERS" - ], - "example": "PASSPORT" - }, - "id_doc_front_file": { - "type": [ - "string", - "null" - ], - "description": "Only image files are accepted (.jpg, .jpeg, .png)" - }, - "id_doc_back_file": { - "type": [ - "string", - "null" - ], - "description": "Only image files are accepted (.jpg, .jpeg, .png)" - }, - "proof_of_address_doc_type": { - "type": [ - "string", - "null" - ], - "enum": [ - "UTILITY_BILL", - "BANK_STATEMENT", - "RENTAL_AGREEMENT", - "TAX_DOCUMENT", - "GOVERNMENT_CORRESPONDENCE" - ], - "example": "UTILITY_BILL" - }, - "proof_of_address_doc_file": { - "type": [ - "string", - "null" - ], - "description": "Please upload one document that serve as proof of address, this needs to be the same address as the one provided above. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB." - }, - "ownership_percentage": { - "type": [ - "integer", - "null" - ], - "minimum": 0, - "maximum": 100, - "description": "Ownership percentage of the beneficial owner (0-100)", - "example": 25 - }, - "title": { - "type": [ - "string", - "null" - ], - "maxLength": 128, - "description": "Job title of the owner", - "example": "CEO" - }, - "tax_type": { - "type": [ - "string", - "null" - ], - "enum": [ - "SSN", - "ITIN" - ], - "description": "Tax identifier type. Mandatory when country is US; must be SSN or ITIN.", - "example": "SSN" - } - } - }, - "description": "Customer owners", - "example": [ - { - "id": "ub_000000000000", - "first_name": "John", - "last_name": "Doe", - "address_line_1": "738 Plain St", - "address_line_2": "Building 22", - "city": "Marshfield", - "state_province_region": "MA", - "country": "US", - "postal_code": "02050", - "id_doc_country": "BR", - "id_doc_type": "PASSPORT", - "id_doc_front_file": "https://example.com/image.png", - "id_doc_back_file": "https://example.com/image.png" - } - ] - }, - "incorporation_doc_file": { - "type": [ - "string", - "null" - ], - "description": "Please upload your articles of incorporation below. The articles of incorporation or a certificate of incorporation usually includes information like the company name, business purpose, number of shares offered, value of shares, etc. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", - "example": "https://example.com/image.png" - }, - "proof_of_ownership_doc_file": { - "type": [ - "string", - "null" - ], - "description": "Please upload your proof of ownership below. This document usually includes information like the shareholders names and percentages. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", - "example": "https://example.com/image.png" - }, - "source_of_funds_doc_type": { - "type": [ - "string", - "null" - ], - "enum": [ - "business_income", - "gambling_proceeds", - "gifts", - "government_benefits", - "inheritance", - "investment_loans", - "pension_retirement", - "salary", - "sale_of_assets_real_estate", - "savings", - "esops", - "investment_proceeds", - "someone_else_funds" - ], - "example": "business_income" - }, - "source_of_funds_doc_file": { - "type": [ - "string", - "null" - ], - "example": "https://example.com/image.png" - }, - "selfie_file": { - "type": [ - "string", - "null" - ], - "description": "Only image files are accepted (.jpg, .jpeg, .png)", - "example": "https://example.com/image.png" - }, - "purpose_of_transactions": { - "type": [ - "string", - "null" - ], - "enum": [ - "business_transactions", - "charitable_donations", - "investment_purposes", - "payments_to_friends_or_family_abroad", - "personal_or_living_expenses", - "protect_wealth", - "purchase_good_and_services", - "receive_payment_for_freelancing", - "receive_salary", - "other" - ], - "example": "business_transactions" - }, - "purpose_of_transactions_explanation": { - "type": [ - "string", - "null" - ], - "example": "I am a business owner and I want to receive payments from my customers" - }, - "is_fbo": { - "type": [ - "boolean", - "null" - ], - "example": false - }, - "account_purpose": { - "type": [ - "string", - "null" - ], - "enum": [ - "charitable_donations", - "ecommerce_retail_payments", - "investment_purposes", - "business_expenses", - "payments_to_friends_or_family_abroad", - "personal_or_living_expenses", - "protect_wealth", - "purchase_goods_and_services", - "receive_payments_for_goods_and_services", - "tax_optimization", - "third_party_money_transmission", - "payroll", - "treasury_management", - "other" - ], - "example": "treasury_management" - }, - "account_purpose_other": { - "type": [ - "string", - "null" - ], - "maxLength": 512, - "description": "Required when account_purpose is \"other\". Max 512 characters.", - "example": "Custom account purpose description" - }, - "business_type": { - "type": [ - "string", - "null" - ], - "enum": [ - "corporation", - "llc", - "partnership", - "sole_proprietorship", - "trust", - "non_profit" - ], - "example": "llc" - }, - "business_description": { - "type": [ - "string", - "null" - ], - "maxLength": 1000, - "example": "Software development company" - }, - "business_industry": { - "type": [ - "string", - "null" - ], - "enum": [ - "111998", - "112120", - "113310", - "115114", - "541211", - "541810", - "541430", - "541715", - "541930", - "561422", - "561311", - "561612", - "561740", - "561730", - "236115", - "236220", - "237310", - "238210", - "811111", - "812111", - "812112", - "532111", - "624410", - "541922", - "811210", - "812199", - "611110", - "611310", - "611410", - "611710", - "211120", - "212114", - "221310", - "562111", - "562920", - "213112", - "522110", - "522210", - "522320", - "523150", - "523940", - "523999", - "524113", - "813110", - "813211", - "813219", - "551112", - "721110", - "722511", - "722513", - "561510", - "713110", - "713210", - "712110", - "711110", - "711211", - "621111", - "621210", - "622110", - "623110", - "621511", - "623220", - "541940", - "621399", - "621910", - "541110", - "311421", - "337121", - "322220", - "339920", - "334210", - "339930", - "312130", - "334111", - "334118", - "325412", - "339112", - "336110", - "336390", - "315990", - "313110", - "339910", - "516120", - "513130", - "512250", - "519130", - "711410", - "711510", - "531110", - "531120", - "531130", - "531190", - "531210", - "531311", - "531312", - "531320", - "531390", - "454110", - "445110", - "455110", - "457110", - "449210", - "444110", - "459210", - "459120", - "445320", - "458110", - "458210", - "458310", - "455219", - "424210", - "456110", - "446120", - "541511", - "541512", - "541519", - "518210", - "511210", - "517111", - "517112", - "517410", - "481111", - "483111", - "485210", - "488510", - "484121", - "493110", - "423430", - "423690", - "423110", - "423830", - "423840", - "423510", - "424690", - "424990", - "424410", - "424480", - "423940", - "541611", - "541618", - "541330", - "541990", - "541214", - "561499" - ], - "example": "541511" - }, - "estimated_annual_revenue": { - "type": [ - "string", - "null" - ], - "enum": [ - "0_99999", - "100000_999999", - "1000000_9999999", - "10000000_49999999", - "50000000_249999999", - "250000000_plus" - ], - "example": "1000000_9999999" - }, - "source_of_wealth": { - "type": [ - "string", - "null" - ], - "enum": [ - "business_dividends_or_profits", - "investments", - "asset_sales", - "client_investor_contributions", - "gambling", - "charitable_contributions", - "inheritance", - "affiliate_or_royalty_income" - ], - "example": "affiliate_or_royalty_income" - }, - "publicly_traded": { - "type": [ - "boolean", - "null" - ], - "example": false - }, - "occupation": { - "type": [ - "string", - "null" - ], - "maxLength": 255, - "example": "Software Engineer" - }, - "external_id": { - "type": [ - "string", - "null" - ], - "example": "your_company_external_id" - }, - "instance_id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "in_000000000000" - }, - "tos_id": { - "type": [ - "string", - "null" - ], - "minLength": 15, - "maxLength": 15, - "example": "to_000000000000" - }, - "aml_status": { - "type": [ - "string", - "null" - ], - "enum": [ - "clear", - "hit", - "error" - ], - "description": "AML screening status from SEON. null = not yet screened.", - "example": "clear" - }, - "aml_hits": { - "type": [ - "object", - "null" - ], - "properties": { - "has_sanction_match": { - "type": "boolean", - "default": false - }, - "has_pep_match": { - "type": "boolean", - "default": false - }, - "has_watchlist_match": { - "type": "boolean", - "default": false - }, - "has_crimelist_match": { - "type": "boolean", - "default": false - }, - "has_adversemedia_match": { - "type": "boolean", - "default": false - } - }, - "description": "AML screening match details from SEON.", - "example": { - "has_sanction_match": false, - "has_pep_match": false, - "has_watchlist_match": false, - "has_crimelist_match": false, - "has_adversemedia_match": false - } - }, - "created_at": { - "example": "2021-01-01T00:00:00Z" - }, - "updated_at": { - "example": "2021-01-01T00:00:00Z" - }, - "limit": { - "type": "object", - "properties": { - "per_transaction": { - "type": [ - "number", - "null" - ], - "example": 100000 - }, - "daily": { - "type": [ - "number", - "null" - ], - "example": 200000 - }, - "monthly": { - "type": [ - "number", - "null" - ], - "example": 1000000 - } - }, - "required": [ - "per_transaction", - "daily", - "monthly" - ] - }, - "is_tos_accepted": { - "type": [ - "boolean", - "null" - ] - }, - "additional_info": { - "type": [ - "array", - "null" - ], - "items": { - "$ref": "#/components/schemas/AdditionalInfoItem" - }, - "description": "Optional extra documents or notes for this customer. `label` is a known category, `value` is either a URL to upload or a free-text description. Any URLs are downloaded and re-hosted on Blindpay storage before being stored.", - "example": [ - { - "label": "EIN_LETTER", - "value": "https://example.com/ein.pdf" - }, - { - "label": "FLOW_OF_FUNDS", - "value": "Funds originate from US payroll deposits, forwarded weekly to customer." - } - ] - } - }, - "required": [ - "webhook_event", - "id", - "customer_id", - "type", - "kyc_type", - "kyc_status", - "email", - "country", - "instance_id", - "limit" - ] - }, - "CustomerDeleteWebhookOut": { - "type": "object", - "properties": { - "webhook_event": { - "type": "string", - "enum": [ - "customer.delete" - ] - }, - "id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "re_000000000000" - }, - "customer_id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "re_000000000000" - }, - "instance_id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "in_000000000000" - }, - "type": { - "type": "string", - "enum": [ - "individual", - "business" - ], - "example": "individual" - }, - "kyc_type": { - "type": "string", - "enum": [ - "light", - "standard", - "enhanced" - ], - "example": "standard" - }, - "kyc_status": { - "type": "string", - "enum": [ - "verifying", - "approved", - "rejected", - "deprecated", - "pending_review", - "awaiting_contract", - "compliance_request", - "approved_rfi" - ], - "example": "verifying" - }, - "deleted_at": { - "type": "string", - "format": "date-time" - } - }, - "required": [ - "webhook_event", - "id", - "customer_id", - "instance_id", - "type", - "kyc_type", - "kyc_status", - "deleted_at" - ] - }, - "TosAcceptWebhookOut": { - "type": "object", - "properties": { - "webhook_event": { - "type": "string", - "enum": [ - "tos.accept" - ] - }, - "tos_id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "to_000000000000" - }, - "idempotency_key": { - "type": "string", - "format": "uuid", - "example": "123e4567-e89b-12d3-a456-426614174000" - }, - "customer_id": { - "type": [ - "string", - "null" - ], - "minLength": 15, - "maxLength": 15, - "example": "re_000000000000" - }, - "version": { - "type": [ - "string", - "null" - ], - "enum": [ - "1.0.0", - "1.0.1" - ], - "example": "1.0.0" - } - }, - "required": [ - "webhook_event", - "tos_id", - "idempotency_key" - ] - }, - "CircleTransactionWebhookOut": { - "type": "object", - "properties": { - "notificationType": { - "type": "string", - "enum": [ - "transactions.outbound", - "transactions.inbound" - ] - }, - "notification": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "refId": { - "type": [ - "string", - "null" - ] - }, - "state": { - "type": "string", - "enum": [ - "INITIATED", - "PENDING_RISK_SCREENING", - "CLEARED", - "QUEUED", - "SENT", - "STUCK", - "CONFIRMED", - "COMPLETE", - "DENIED", - "FAILED", - "CANCELLED", - "ACCELERATED" - ] - }, - "errorReason": { - "type": [ - "string", - "null" - ] - }, - "transactionType": { - "type": "string", - "enum": [ - "OUTBOUND", - "INBOUND" - ] - }, - "txHash": { - "type": [ - "string", - "null" - ] - }, - "blockchain": { - "type": "string", - "enum": [ - "ETH", - "ETH-SEPOLIA", - "AVAX", - "AVAX-FUJI", - "MATIC", - "MATIC-AMOY", - "SOL", - "SOL-DEVNET", - "ARB", - "ARB-SEPOLIA", - "BASE", - "BASE-SEPOLIA", - "NEAR", - "NEAR-TESTNET", - "EVM", - "EVM-TESTNET", - "UNI-SEPOLIA" - ] - }, - "tokenId": { - "type": "string" - }, - "amounts": { - "type": "array", - "items": { - "type": "string" - } - }, - "walletId": { - "type": "string" - }, - "sourceAddress": { - "type": [ - "string", - "null" - ] - }, - "destinationAddress": { - "type": [ - "string", - "null" - ] - }, - "createDate": { - "type": [ - "string", - "null" - ] - }, - "updateDate": { - "type": [ - "string", - "null" - ] - }, - "networkFeeInUSD": { - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "id", - "state", - "transactionType", - "blockchain", - "tokenId", - "amounts", - "walletId" - ] - }, - "timestamp": { - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "notificationType", - "notification" - ] - }, - "CreateTransferSchemaOut": { - "type": "object", - "properties": { - "id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "pa_000000000000" - }, - "status": { - "type": "string", - "enum": [ - "processing", - "failed", - "refunded", - "completed" - ], - "description": "Transfer general status", - "example": "processing" - }, - "tracking_bridge_swap": { - "type": "object", - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Complete step", - "example": "on_hold" - }, - "transaction_hash": { - "type": [ - "string", - "null" - ], - "description": "Complete transaction hash", - "example": "0x123...890" - }, - "gas_fee": { - "type": [ - "string", - "null" - ], - "description": "Gas fee related to transaction", - "example": "100" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Complete completed date", - "example": "2011-10-05T14:48:00.000Z" - }, - "error_message": { - "type": [ - "string", - "null" - ], - "example": "Gas fee is too low" - } - }, - "required": [ - "step" - ] - }, - "tracking_complete": { - "type": "object", - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Complete step", - "example": "on_hold" - }, - "transaction_hash": { - "type": [ - "string", - "null" - ], - "description": "Complete transaction hash", - "example": "0x123...890" - }, - "gas_fee": { - "type": [ - "string", - "null" - ], - "description": "Gas fee related to transaction", - "example": "100" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Complete completed date", - "example": "2011-10-05T14:48:00.000Z" - }, - "error_message": { - "type": [ - "string", - "null" - ], - "example": "Gas fee is too low" - } - }, - "required": [ - "step" - ] - }, - "tracking_paymaster": { - "type": "object", - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Complete step", - "example": "on_hold" - }, - "transaction_hash": { - "type": [ - "string", - "null" - ], - "description": "Complete transaction hash", - "example": "0x123...890" - }, - "gas_fee": { - "type": [ - "string", - "null" - ], - "description": "Gas fee related to transaction", - "example": "100" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Complete completed date", - "example": "2011-10-05T14:48:00.000Z" - }, - "error_message": { - "type": [ - "string", - "null" - ], - "example": "Gas fee is too low" - } - }, - "required": [ - "step" - ] - }, - "tracking_transaction_monitoring": { - "type": "object", - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Transaction monitoring step", - "example": "processing" - }, - "blockchain_screening": { - "type": [ - "number", - "null" - ], - "minimum": 0, - "maximum": 100, - "description": "Blindpay screening step", - "example": 1 - }, - "risk_score": { - "type": [ - "number", - "null" - ], - "minimum": 0, - "maximum": 100, - "description": "Risk score", - "example": 1 - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Transfer transaction completed date", - "example": "2011-10-05T14:48:00.000Z" - } - }, - "required": [ - "step" - ] - } - }, - "required": [ - "id", - "status", - "tracking_bridge_swap", - "tracking_complete", - "tracking_paymaster", - "tracking_transaction_monitoring" - ] - }, - "WalletTokenOut": { - "type": "object", - "properties": { - "address": { - "type": "string" - }, - "id": { - "type": "string" - }, - "symbol": { - "type": "string", - "enum": [ - "USDC", - "USDT", - "USDB" - ] - }, - "amount": { - "type": "number" - } - }, - "required": [ - "address", - "id", - "symbol", - "amount" - ] - }, - "WalletInboundSchemaOut": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "address": { - "type": "string" - }, - "network": { - "type": "string", - "enum": [ - "base", - "sepolia", - "arbitrum_sepolia", - "base_sepolia", - "arbitrum", - "polygon", - "polygon_amoy", - "ethereum", - "stellar", - "stellar_testnet", - "tron", - "solana", - "solana_devnet" - ] - }, - "token": { - "$ref": "#/components/schemas/WalletTokenOut" - } - }, - "required": [ - "id", - "address", - "network", - "token" - ] - }, - "Success": { - "type": "object", - "properties": { - "success": { - "type": "boolean", - "example": true - } - }, - "required": [ - "success" - ] - }, - "Error": { - "type": "object", - "properties": { - "success": { - "type": "boolean", - "example": false - }, - "code": { - "type": "string", - "description": "Stable error code. See the Error codes section for the full list.", - "example": "PAYOUTS_INSUFFICIENT_BALANCE" - }, - "message": { - "type": "string", - "description": "Legacy machine-readable message. Prefer `code` for programmatic handling.", - "example": "not_enough_balance" - }, - "description": { - "type": "string", - "description": "Human-readable explanation, safe to show to end users.", - "example": "There is not enough balance to complete this payout. Fund your balance and try again." - }, - "errors": { - "type": "array", - "items": { - "type": "string" - }, - "example": [ - "Bad Request" - ] - }, - "trace_id": { - "type": "string", - "description": "Request trace ID. Include it when contacting support.", - "example": "0af7651916cd43dd8448eb211c80319c" - } - }, - "required": [ - "success", - "message", - "errors" - ] - }, - "UploadOut": { - "type": "object", - "properties": { - "file_url": { - "type": "string" - } - }, - "required": [ - "file_url" - ] - }, - "UploadIn": { - "type": "object", - "properties": { - "file": {}, - "bucket": { - "type": "string", - "enum": [ - "avatar", - "onboarding", - "limit_increase" - ] - } - }, - "required": [ - "file", - "bucket" - ] - }, - "UploadAnalyzeOut": { - "type": "object", - "properties": { - "approval_rate": { - "type": "string", - "enum": [ - "low", - "medium", - "high" - ], - "description": "Confidence that the document should be approved.", - "example": "high" - }, - "description": { - "type": "string", - "description": "Short explanation of why the document should or should not be approved." - } - }, - "required": [ - "approval_rate", - "description" - ] - }, - "UploadAnalyzeIn": { - "type": "object", - "properties": { - "file": { - "description": "The document to analyze (PDF, JPG, or PNG).", - "example": {} - }, - "type": { - "type": "string", - "enum": [ - "proof_of_address", - "identity_document", - "incorporation_document", - "proof_of_ownership", - "source_of_funds", - "selfie", - "bank_statement", - "tax_return", - "proof_of_income", - "financial_statement", - "invoice", - "transaction_document", - "passport", - "pay_stub", - "employment_letter", - "investment", - "crypto_exchange", - "blockchain_wallet", - "contract", - "accounts_receivable", - "merchant_processor", - "shareholder_loan" - ], - "description": "The kind of document being analyzed. Selects the rule set used for the analysis.", - "example": "proof_of_address" - }, - "metadata": { - "type": "string", - "description": "Optional JSON object of expected values to verify against the document (e.g. {\"full_name\":\"Jane Doe\",\"date_of_birth\":\"1990-01-01\"}). When provided, a clear mismatch caps the rating at low.", - "example": "{\"full_name\":\"Jane Doe\"}" - } - }, - "required": [ - "file", - "type" - ] - }, - "QuoteOut": { - "type": "object", - "properties": { - "id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "qu_000000000000" - }, - "expires_at": { - "type": [ - "number", - "null" - ], - "description": "Epoch unix timestamp that represents the final datetime to transaction be received on blockchain. For SEPA payouts this may be shorter than the default 5 minute window if Circle CPN returns an earlier expiry.", - "example": 1712958191 - }, - "commercial_quotation": { - "type": [ - "number", - "null" - ], - "description": "1 USD = 4.95 BRL", - "example": 495 - }, - "blindpay_quotation": { - "type": [ - "number", - "null" - ], - "description": "1 USD = 4.85 BRL (commercial quotation - (blindpay taxes))", - "example": 485 - }, - "receiver_amount": { - "type": [ - "number", - "null" - ], - "description": "52.40 BRL", - "example": 5240 - }, - "sender_amount": { - "type": [ - "number", - "null" - ], - "description": "10.10 USDC needs to be sent to bank account blockchain address", - "example": 1010 - }, - "partner_fee_amount": { - "type": [ - "number", - "null" - ], - "default": 0, - "description": "1.5 USDC", - "example": 150 - }, - "flat_fee": { - "type": [ - "number", - "null" - ], - "description": "0.5 USDC", - "example": 50 - }, - "billing_fee_amount": { - "type": [ - "number", - "null" - ], - "description": "Billing fee in cents (charged via invoice at the end of the month)", - "example": 50 - }, - "contract": { - "type": [ - "object", - "null" - ], - "properties": { - "abi": { - "type": "array", - "items": { - "type": "object", - "properties": {}, - "description": "Contract abi related to the network you send in request params", - "example": {} - } - }, - "address": { - "type": "string", - "description": "Token address related to the network you send in request params", - "example": "0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238" - }, - "functionName": { - "type": "string", - "enum": [ - "approve" - ], - "description": "Function name from ERC20 smart contract", - "example": "approve" - }, - "blindpayContractAddress": { - "type": "string", - "description": "Blindpay contract address", - "example": "0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238" - }, - "amount": { - "type": "string", - "description": "Amount to approve with correct decimal places", - "example": "1000000000000000000" - }, - "network": { - "type": "object", - "properties": { - "name": { - "type": "string", - "example": "Ethereum" - }, - "chainId": { - "type": "number", - "example": 1 - } - }, - "required": [ - "name", - "chainId" - ] - } - }, - "required": [ - "abi", - "address", - "functionName", - "blindpayContractAddress", - "amount", - "network" - ] - }, - "customer_local_amount": { - "type": [ - "number", - "null" - ], - "description": "Estimated amount in the currency of recipient bank account", - "example": 1000 - }, - "description": { - "type": [ - "string", - "null" - ], - "maxLength": 128, - "example": "Memo code or description, only works with USD and BRL" - } - }, - "required": [ - "id", - "expires_at", - "commercial_quotation", - "blindpay_quotation", - "receiver_amount", - "sender_amount" - ] - }, - "QuoteIn": { - "type": "object", - "properties": { - "bank_account_id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "ba_000000000000" - }, - "currency_type": { - "type": "string", - "enum": [ - "sender", - "receiver" - ], - "description": "", - "example": "sender" - }, - "cover_fees": { - "type": [ - "boolean", - "null" - ], - "description": "If true, the sender will cover the fees. If false, the customer will cover the fees.", - "example": true - }, - "request_amount": { - "type": "integer", - "minimum": 500, - "description": "1000 represents 10.00, 2050 represents 20.50", - "example": 1000 - }, - "network": { - "type": "string", - "enum": [ - "base", - "sepolia", - "arbitrum_sepolia", - "base_sepolia", - "arbitrum", - "polygon", - "polygon_amoy", - "ethereum", - "stellar", - "stellar_testnet", - "tron", - "solana", - "solana_devnet" - ], - "description": "Check blindpay available networks", - "example": "sepolia" - }, - "token": { - "type": "string", - "enum": [ - "USDC", - "USDT", - "USDB" - ], - "description": "Check blindpay available tokens", - "example": "USDC" - }, - "description": { - "type": [ - "string", - "null" - ], - "maxLength": 128, - "example": "Memo code or description, only works with USD and BRL" - }, - "partner_fee_id": { - "type": [ - "string", - "null" - ], - "minLength": 15, - "maxLength": 15, - "example": "pf_000000000000" - }, - "refund_wallet_address": { - "type": [ - "string", - "null" - ], - "description": "Optional wallet address to receive the refund if this payout fails or is refunded. Must be a valid address on the quote network. When omitted, refunds are sent back to the sender wallet address.", - "example": "0xDD6a3aD0949396e57C7738ba8FC1A46A5a1C372C" - } - }, - "required": [ - "bank_account_id", - "currency_type", - "request_amount", - "network", - "token" - ] - }, - "PayoutOut": { - "type": "object", - "properties": { - "customer_id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "description": "Customer id", - "example": "re_000000000000" - }, - "id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "pa_000000000000" - }, - "status": { - "type": "string", - "enum": [ - "processing", - "failed", - "refunded", - "completed", - "on_hold" - ], - "description": "Payout general status", - "example": "processing" - }, - "sender_wallet_address": { - "type": "string", - "description": "Payout wallet address", - "example": "0x123...890" - }, - "signed_transaction": { - "type": [ - "string", - "null" - ], - "description": "Signed transaction", - "example": "AAA...Zey8y0A" - }, - "quote_id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "qu_000000000000" - }, - "instance_id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "in_000000000000" - }, - "partner_fee": { - "type": "integer", - "minimum": 0, - "default": 0, - "description": "Payout partner fee amount in cents (can be negative for rebates)", - "example": -25000 - }, - "tracking_transaction": { - "type": "object", - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Payout transaction step", - "example": "processing" - }, - "status": { - "type": [ - "string", - "null" - ], - "enum": [ - "failed", - "found" - ], - "description": "Payout transaction status", - "example": "failed" - }, - "transaction_hash": { - "type": [ - "string", - "null" - ], - "description": "Blockchain transaction hash", - "example": "0x123...890" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Payout transaction completed date", - "example": "2011-10-05T14:48:00.000Z" - }, - "provider_transaction_id": { - "type": [ - "string", - "null" - ], - "description": "Provider-side handle for the on-chain leg (e.g. Circle CPN payment id).", - "example": "67c12eae-b7bc-31cc-a5ef-623dcea82346" - }, - "provider_error_reason": { - "type": [ - "string", - "null" - ], - "description": "Provider error reason when the crypto collection fails (e.g. erc20_allowance_insufficient, ESTIMATION_ERROR: execution reverted)", - "example": "erc20_allowance_insufficient" - }, - "ledger_in_transaction_id": { - "type": [ - "string", - "null" - ], - "description": "Ledger transaction ID for the IN (crypto deposit) transaction" - }, - "ledger_out_transaction_id": { - "type": [ - "string", - "null" - ], - "description": "Ledger transaction ID for the OUT (fiat withdrawal) transaction" - } - }, - "required": [ - "step" - ] - }, - "tracking_payment": { - "type": "object", - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Payment step", - "example": "on_hold" - }, - "provider_name": { - "type": [ - "string", - "null" - ], - "enum": [ - "Nvio Pagos", - "Brex", - "Stark Bank", - "JPMorgan Chase", - "HSBC", - "Inter", - "JP Morgan Chase", - "Bitso", - "Citi", - "CFSB", - "Triple A Technologies", - "Portage Bank" - ], - "description": "Payment provider name", - "example": "HSBC" - }, - "provider_integration": { - "type": [ - "string", - "null" - ], - "enum": [ - "veem", - "zenus", - "checkbook", - "onemoney", - "bitso", - "starkbank", - "triplea", - "infinitus" - ], - "description": "Machine-readable integration that executed the fiat leg. Unlike provider_name (a client-facing bank label), this uniquely identifies the integration — e.g. zenus vs checkbook, which share the \"JPMorgan Chase\" label.", - "example": "zenus" - }, - "provider_transaction_id": { - "type": [ - "string", - "null" - ], - "description": "Payment provider transaction id", - "example": "0x123...890" - }, - "provider_status": { - "type": [ - "string", - "null" - ], - "enum": [ - "canceled", - "failed", - "returned", - "sent" - ], - "description": "Payment provider status", - "example": "canceled" - }, - "provider_error_reason": { - "type": [ - "string", - "null" - ], - "description": "Provider error reason when payment fails (e.g. invalid_key, wrong_parameters)", - "example": "invalid_key" - }, - "provider_uetr": { - "type": [ - "string", - "null" - ], - "maxLength": 120, - "description": "Unique end-to-end transaction reference (UETR). Populated once the wire is confirmed by the network; null while the payment is in flight or when the rail does not expose it (e.g. ACH).", - "example": "37d10eff-d450-4aba-a5d4-e3978f5a3343" - }, - "provider_imad": { - "type": [ - "string", - "null" - ], - "maxLength": 120, - "description": "Fed Input Message Accountability Data (IMAD). Domestic Fedwire payments only; null on ACH and SWIFT.", - "example": "20260526MMQFMP2M008120" - }, - "provider_reference": { - "type": [ - "string", - "null" - ], - "maxLength": 120, - "description": "Provider (JPMorgan/Zenus) payment reference captured from the ACCOUNT.ACCOUNT booking webhook (Zenus contractSource.sourceRef). Present for some ACH/wire payouts; a bank-side reference, not the formal ACH network trace number.", - "example": "2084734238TC" - }, - "provider_clearing_system": { - "type": [ - "string", - "null" - ], - "maxLength": 40, - "description": "Clearing system that processed the payment (e.g. FED, CHIPS, ACH, SWIFT).", - "example": "FED" - }, - "recipient_name": { - "type": [ - "string", - "null" - ], - "description": "Recipient name", - "example": "John Doe" - }, - "recipient_tax_id": { - "type": [ - "string", - "null" - ], - "description": "Recipient tax id", - "example": "123.456.789-10" - }, - "recipient_bank_code": { - "type": [ - "string", - "null" - ], - "description": "Recipient bank code", - "example": "00416968" - }, - "recipient_branch_code": { - "type": [ - "string", - "null" - ], - "description": "Recipient branch code", - "example": "0001" - }, - "recipient_account_number": { - "type": [ - "string", - "null" - ], - "description": "Recipient account number", - "example": "1234567890" - }, - "recipient_account_type": { - "type": [ - "string", - "null" - ], - "description": "Recipient account type", - "example": "checking" - }, - "coelsa_id": { - "type": [ - "string", - "null" - ], - "description": "COELSA transaction reference ID for ARS transfers (Argentine national banking system)", - "example": "1LMP68NKV46DRDYK2R7OEV" - }, - "end_to_end_id": { - "type": [ - "string", - "null" - ], - "description": "BACEN Pix end-to-end transaction ID (govt Pix ID)", - "example": "E20018183202603311320vm6ALFpJpsS" - }, - "estimated_time_of_arrival": { - "type": [ - "string", - "null" - ], - "enum": [ - "5_min", - "5_30_min", - "30_min", - "2_hours", - "1_business_day", - "2_business_days", - "5_business_days" - ], - "description": "Estimated time of arrival", - "example": "5_min" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Payment completed date", - "example": "2011-10-05T14:48:00.000Z" - } - }, - "required": [ - "step" - ] - }, - "tracking_liquidity": { - "type": [ - "object", - "null" - ], - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Payout liquidity step", - "example": "processing" - }, - "provider_transaction_id": { - "type": [ - "string", - "null" - ], - "description": "Payment provider transaction id", - "example": "0x123...890" - }, - "provider_status": { - "type": [ - "string", - "null" - ], - "enum": [ - "deposited", - "converted", - "withdrawn" - ], - "description": "Payment provider status", - "example": "deposited" - }, - "estimated_time_of_arrival": { - "type": [ - "string", - "null" - ], - "enum": [ - "5_min", - "5_30_min", - "30_min", - "2_hours", - "1_business_day", - "2_business_days", - "5_business_days" - ], - "description": "Estimated time of arrival", - "example": "1_business_day" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Payout transaction completed date", - "example": "2011-10-05T14:48:00.000Z" - } - }, - "required": [ - "step" - ] - }, - "tracking_complete": { - "type": "object", - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Complete step", - "example": "on_hold" - }, - "status": { - "type": [ - "string", - "null" - ], - "enum": [ - "tokens_refunded", - "paid" - ], - "description": "Complete status", - "example": "tokens_refunded" - }, - "refund_reason": { - "type": [ - "string", - "null" - ], - "description": "Reason for refund when tokens are returned to sender", - "example": "fiat_payment_failed" - }, - "transaction_hash": { - "type": [ - "string", - "null" - ], - "description": "Complete transaction hash", - "example": "0x123...890" - }, - "provider_transaction_id": { - "type": [ - "string", - "null" - ], - "description": "Provider-side handle for the refund transaction (e.g. Circle transaction id)", - "example": "67c12eae-b7bc-31cc-a5ef-623dcea82346" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Complete completed date", - "example": "2011-10-05T14:48:00.000Z" - } - }, - "required": [ - "step" - ] - }, - "tracking_documents": { - "type": [ - "object", - "null" - ], - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Documents step", - "example": "processing" - }, - "status": { - "type": [ - "string", - "null" - ], - "enum": [ - "waiting_documents", - "compliance_reviewing" - ], - "description": "Documents status", - "example": "waiting_documents" - }, - "reviewed_by": { - "type": [ - "string", - "null" - ], - "description": "Reviewer email/name", - "example": "compliance@example.com" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Documents completed date", - "example": "2011-10-05T14:48:00.000Z" - } - }, - "required": [ - "step" - ] - }, - "jpm_track_data": { - "type": [ - "object", - "null" - ], - "properties": { - "jpm_trace_number": { - "type": [ - "string", - "null" - ], - "description": "JPM trace number", - "example": "317802200000565" - }, - "jpm_processing_status": { - "type": [ - "string", - "null" - ], - "description": "JPM processing status", - "example": "Completed" - }, - "extended_tracking_status": { - "type": [ - "string", - "null" - ], - "description": "Extended tracking status from JPM", - "example": "Delivered to next bank" - }, - "jpm_reference_number": { - "type": [ - "string", - "null" - ], - "description": "JPM reference number", - "example": "9483400364JO" - }, - "uetr": { - "type": [ - "string", - "null" - ], - "description": "Unique end-to-end transaction reference", - "example": "4ad5f98a-5279-410a-99a2-39a729aceb35" - }, - "fed_imad": { - "type": [ - "string", - "null" - ], - "description": "Fed IMAD number (Wire payments only)", - "example": "1230MMQFMP2L034796" - }, - "payment_date": { - "type": [ - "string", - "null" - ], - "description": "Payment date", - "example": "Dec 30 2025" - }, - "payment_amount": { - "type": [ - "string", - "null" - ], - "description": "Payment amount", - "example": "3,914.00" - }, - "payment_currency": { - "type": [ - "string", - "null" - ], - "description": "Payment currency", - "example": "USD" - } - } - }, - "cpn_payment_id": { - "type": [ - "string", - "null" - ], - "description": "Circle CPN payment id", - "example": "f06dbc45-58a4-389f-beb8-581c3fafff3c" - }, - "created_at": { - "example": "2021-01-01T00:00:00Z" - }, - "updated_at": { - "example": "2021-01-01T00:00:00Z" - }, - "image_url": { - "type": [ - "string", - "null" - ], - "format": "uri", - "example": "https://example.com/image.png" - }, - "first_name": { - "type": [ - "string", - "null" - ], - "example": "John" - }, - "last_name": { - "type": [ - "string", - "null" - ], - "example": "Doe" - }, - "legal_name": { - "type": [ - "string", - "null" - ], - "example": "Company Name Inc." - }, - "network": { - "type": "string", - "enum": [ - "base", - "sepolia", - "arbitrum_sepolia", - "base_sepolia", - "arbitrum", - "polygon", - "polygon_amoy", - "ethereum", - "stellar", - "stellar_testnet", - "tron", - "solana", - "solana_devnet" - ], - "description": "Check blindpay available networks", - "example": "sepolia" - }, - "token": { - "type": "string", - "enum": [ - "USDC", - "USDT", - "USDB" - ], - "description": "Check blindpay available tokens", - "example": "USDC" - }, - "description": { - "type": [ - "string", - "null" - ], - "maxLength": 128, - "example": "Memo code or description, only works with USD and BRL" - }, - "sender_amount": { - "type": [ - "number", - "null" - ], - "description": "10.10 USDC needs to be sent to bank account blockchain address", - "example": 1010 - }, - "receiver_amount": { - "type": [ - "number", - "null" - ], - "description": "52.40 BRL", - "example": 5240 - }, - "partner_fee_id": { - "type": [ - "string", - "null" - ], - "minLength": 15, - "maxLength": 15, - "example": "pf_000000000000" - }, - "partner_fee_amount": { - "type": [ - "number", - "null" - ], - "default": 0, - "description": "1.5 USDC", - "example": 150 - }, - "commercial_quotation": { - "type": [ - "number", - "null" - ], - "description": "1 USD = 4.95 BRL", - "example": 495 - }, - "blindpay_quotation": { - "type": [ - "number", - "null" - ], - "description": "1 USD = 4.85 BRL (commercial quotation - (blindpay taxes))", - "example": 485 - }, - "total_fee_amount": { - "type": [ - "number", - "null" - ], - "default": 0, - "description": "1.5 USDC", - "example": 1.5 - }, - "customer_local_amount": { - "type": [ - "number", - "null" - ], - "description": "Estimated amount in the currency of recipient bank account", - "example": 1000 - }, - "currency": { - "type": "string", - "enum": [ - "BRL", - "USD", - "MXN", - "COP", - "ARS", - "EUR" - ], - "description": "ISO 4271 currency code", - "example": "BRL" - }, - "transaction_fee_amount": { - "type": [ - "number", - "null" - ], - "description": "Transaction fee in cents (percentage-based fee)", - "example": 100 - }, - "billing_fee_amount": { - "type": [ - "number", - "null" - ], - "description": "Billing fee in cents (charged via invoice at the end of the month)", - "example": 50 - }, - "transaction_document_file": { - "type": [ - "string", - "null" - ], - "format": "uri", - "example": "https://example.com/image.png" - }, - "transaction_document_type": { - "type": [ - "string", - "null" - ], - "enum": [ - "invoice", - "purchase_order", - "delivery_slip", - "contract", - "customs_declaration", - "bill_of_lading", - "others" - ], - "example": "invoice" - }, - "transaction_document_id": { - "type": [ - "string", - "null" - ], - "maxLength": 512, - "example": "1234567890" - }, - "name": { - "type": "string", - "example": "Bank Account Name" - }, - "type": { - "type": "string", - "enum": [ - "wire", - "ach", - "pix", - "pix_safe", - "ted", - "spei_bitso", - "transfers_bitso", - "ach_cop_bitso", - "international_swift", - "rtp", - "sepa" - ], - "example": "wire" - }, - "pix_key": { - "type": [ - "string", - "null" - ], - "example": "14947677768" - }, - "pix_safe_bank_code": { - "type": [ - "string", - "null" - ], - "pattern": "^\\d{4,8}$", - "example": "00416968" - }, - "pix_safe_branch_code": { - "type": [ - "string", - "null" - ], - "pattern": "^\\d{4}(-\\d)?$", - "example": "0001" - }, - "pix_safe_cpf_cnpj": { - "type": [ - "string", - "null" - ], - "example": "12345678901" - }, - "ted_bank_code": { - "type": [ - "string", - "null" - ], - "pattern": "^\\d{3,5}$", - "example": "033" - }, - "ted_branch_code": { - "type": [ - "string", - "null" - ], - "pattern": "^\\d{4}(-\\d)?$", - "example": "0001" - }, - "ted_cpf_cnpj": { - "type": [ - "string", - "null" - ], - "example": "12345678901" - }, - "account_number": { - "type": [ - "string", - "null" - ], - "example": "1001001234" - }, - "routing_number": { - "type": [ - "string", - "null" - ], - "example": "012345678" - }, - "country": { - "type": [ - "string", - "null" - ], - "enum": [ - "AF", - "AL", - "DZ", - "AS", - "AD", - "AO", - "AI", - "AQ", - "AG", - "AR", - "AM", - "AW", - "AU", - "AT", - "AZ", - "BS", - "BH", - "BD", - "BB", - "BY", - "BE", - "BZ", - "BJ", - "BM", - "BT", - "BO", - "BQ", - "BA", - "BW", - "BV", - "BR", - "IO", - "BN", - "BG", - "BF", - "BI", - "CV", - "KH", - "CM", - "CA", - "KY", - "CF", - "TD", - "CL", - "CN", - "CX", - "CC", - "CO", - "KM", - "CD", - "CG", - "CK", - "CR", - "HR", - "CU", - "CW", - "CY", - "CZ", - "CI", - "DK", - "DJ", - "DM", - "DO", - "EC", - "EG", - "SV", - "GQ", - "ER", - "EE", - "SZ", - "ET", - "FK", - "FO", - "FJ", - "FI", - "FR", - "GF", - "PF", - "TF", - "GA", - "GM", - "GE", - "DE", - "GH", - "GI", - "GR", - "GL", - "GD", - "GP", - "GU", - "GT", - "GG", - "GN", - "GW", - "GY", - "HT", - "HM", - "VA", - "HN", - "HK", - "HU", - "IS", - "IN", - "ID", - "IR", - "IQ", - "IE", - "IM", - "IL", - "IT", - "JM", - "JP", - "JE", - "JO", - "KZ", - "KE", - "KI", - "KP", - "KR", - "KW", - "KG", - "LA", - "LV", - "LB", - "LS", - "LR", - "LY", - "LI", - "LT", - "LU", - "MO", - "MG", - "MW", - "MY", - "MV", - "ML", - "MT", - "MH", - "MQ", - "MR", - "MU", - "YT", - "MX", - "FM", - "MD", - "MC", - "MN", - "ME", - "MS", - "MA", - "MZ", - "MM", - "NA", - "NR", - "NP", - "NL", - "NC", - "NZ", - "NI", - "NE", - "NG", - "NU", - "NF", - "MP", - "NO", - "OM", - "PK", - "PW", - "PS", - "PA", - "PG", - "PY", - "PE", - "PH", - "PN", - "PL", - "PT", - "PR", - "QA", - "MK", - "RO", - "RU", - "RW", - "RE", - "BL", - "SH", - "KN", - "LC", - "MF", - "PM", - "VC", - "WS", - "SM", - "ST", - "SA", - "SN", - "RS", - "SC", - "SL", - "SG", - "SX", - "SK", - "SI", - "SB", - "SO", - "ZA", - "GS", - "SS", - "ES", - "LK", - "SD", - "SR", - "SJ", - "SE", - "CH", - "SY", - "TW", - "TJ", - "TZ", - "TH", - "TL", - "TG", - "TK", - "TO", - "TT", - "TN", - "TR", - "TM", - "TC", - "TV", - "UG", - "UA", - "AE", - "GB", - "UM", - "US", - "UY", - "UZ", - "VU", - "VE", - "VN", - "VG", - "VI", - "WF", - "EH", - "YE", - "ZM", - "ZW", - "AX" - ], - "example": "US" - }, - "account_class": { - "type": [ - "string", - "null" - ], - "enum": [ - "individual", - "business" - ], - "example": "individual" - }, - "address_line_1": { - "type": [ - "string", - "null" - ], - "example": "Address line 1" - }, - "address_line_2": { - "type": [ - "string", - "null" - ], - "example": "Address line 2" - }, - "city": { - "type": [ - "string", - "null" - ], - "example": "City" - }, - "state_province_region": { - "type": [ - "string", - "null" - ], - "example": "State/Province/Region" - }, - "postal_code": { - "type": [ - "string", - "null" - ], - "example": "Postal code" - }, - "account_type": { - "type": [ - "string", - "null" - ], - "enum": [ - "checking", - "saving" - ], - "example": "checking" - }, - "ach_cop_beneficiary_first_name": { - "type": [ - "string", - "null" - ], - "example": "Fernando" - }, - "ach_cop_bank_account": { - "type": [ - "string", - "null" - ], - "example": "12345678" - }, - "ach_cop_bank_code": { - "type": [ - "string", - "null" - ], - "example": "051" - }, - "ach_cop_beneficiary_last_name": { - "type": [ - "string", - "null" - ], - "example": "Guzman Alarcón" - }, - "ach_cop_document_id": { - "type": [ - "string", - "null" - ], - "example": "1661105408" - }, - "ach_cop_document_type": { - "type": [ - "string", - "null" - ], - "enum": [ - "CC", - "CE", - "NIT", - "PASS", - "PEP" - ], - "description": "CC - Cédula de Ciudadanía; CE - Cédula de Extranjería; NIT - Número de Identificación Tributaria; PASS - Passport; PEP - Permiso Especial de Permanencia", - "example": "CC" - }, - "ach_cop_email": { - "type": [ - "string", - "null" - ], - "example": "fernando.guzman@gmail.com" - }, - "beneficiary_name": { - "type": [ - "string", - "null" - ], - "maxLength": 128, - "example": "Individual full name or business name" - }, - "spei_clabe": { - "type": [ - "string", - "null" - ], - "example": "5482347403740546" - }, - "spei_protocol": { - "type": [ - "string", - "null" - ], - "enum": [ - "clabe", - "debitcard", - "phonenum" - ], - "description": "For debitcard and phonenum the spei_institution_code is required", - "example": "clabe" - }, - "spei_institution_code": { - "type": [ - "string", - "null" - ], - "minLength": 5, - "maxLength": 5, - "example": "40002" - }, - "swift_beneficiary_country": { - "type": [ - "string", - "null" - ], - "enum": [ - "AF", - "AL", - "DZ", - "AS", - "AD", - "AO", - "AI", - "AQ", - "AG", - "AR", - "AM", - "AW", - "AU", - "AT", - "AZ", - "BS", - "BH", - "BD", - "BB", - "BY", - "BE", - "BZ", - "BJ", - "BM", - "BT", - "BO", - "BQ", - "BA", - "BW", - "BV", - "BR", - "IO", - "BN", - "BG", - "BF", - "BI", - "CV", - "KH", - "CM", - "CA", - "KY", - "CF", - "TD", - "CL", - "CN", - "CX", - "CC", - "CO", - "KM", - "CD", - "CG", - "CK", - "CR", - "HR", - "CU", - "CW", - "CY", - "CZ", - "CI", - "DK", - "DJ", - "DM", - "DO", - "EC", - "EG", - "SV", - "GQ", - "ER", - "EE", - "SZ", - "ET", - "FK", - "FO", - "FJ", - "FI", - "FR", - "GF", - "PF", - "TF", - "GA", - "GM", - "GE", - "DE", - "GH", - "GI", - "GR", - "GL", - "GD", - "GP", - "GU", - "GT", - "GG", - "GN", - "GW", - "GY", - "HT", - "HM", - "VA", - "HN", - "HK", - "HU", - "IS", - "IN", - "ID", - "IR", - "IQ", - "IE", - "IM", - "IL", - "IT", - "JM", - "JP", - "JE", - "JO", - "KZ", - "KE", - "KI", - "KP", - "KR", - "KW", - "KG", - "LA", - "LV", - "LB", - "LS", - "LR", - "LY", - "LI", - "LT", - "LU", - "MO", - "MG", - "MW", - "MY", - "MV", - "ML", - "MT", - "MH", - "MQ", - "MR", - "MU", - "YT", - "MX", - "FM", - "MD", - "MC", - "MN", - "ME", - "MS", - "MA", - "MZ", - "MM", - "NA", - "NR", - "NP", - "NL", - "NC", - "NZ", - "NI", - "NE", - "NG", - "NU", - "NF", - "MP", - "NO", - "OM", - "PK", - "PW", - "PS", - "PA", - "PG", - "PY", - "PE", - "PH", - "PN", - "PL", - "PT", - "PR", - "QA", - "MK", - "RO", - "RU", - "RW", - "RE", - "BL", - "SH", - "KN", - "LC", - "MF", - "PM", - "VC", - "WS", - "SM", - "ST", - "SA", - "SN", - "RS", - "SC", - "SL", - "SG", - "SX", - "SK", - "SI", - "SB", - "SO", - "ZA", - "GS", - "SS", - "ES", - "LK", - "SD", - "SR", - "SJ", - "SE", - "CH", - "SY", - "TW", - "TJ", - "TZ", - "TH", - "TL", - "TG", - "TK", - "TO", - "TT", - "TN", - "TR", - "TM", - "TC", - "TV", - "UG", - "UA", - "AE", - "GB", - "UM", - "US", - "UY", - "UZ", - "VU", - "VE", - "VN", - "VG", - "VI", - "WF", - "EH", - "YE", - "ZM", - "ZW", - "AX" - ], - "example": "MX" - }, - "swift_code_bic": { - "type": [ - "string", - "null" - ], - "example": "123456789" - }, - "swift_account_holder_name": { - "type": [ - "string", - "null" - ], - "maxLength": 50, - "example": "John Doe" - }, - "swift_account_number_iban": { - "type": [ - "string", - "null" - ], - "example": "123456789" - }, - "transfers_account": { - "type": [ - "string", - "null" - ], - "example": "BM123123123123" - }, - "transfers_type": { - "type": [ - "string", - "null" - ], - "enum": [ - "CVU", - "CBU", - "ALIAS" - ], - "example": "CVU" - }, - "has_virtual_account": { - "type": [ - "boolean", - "null" - ], - "description": "Has virtual account", - "example": true - }, - "sender_legal_name": { - "type": [ - "string", - "null" - ], - "description": "Legal name of the sending instance (originator), shown on the receipt", - "example": "LRB TRADING INVESTMENT L.L.C" - } - }, - "required": [ - "customer_id", - "id", - "status", - "sender_wallet_address", - "quote_id", - "instance_id", - "tracking_transaction", - "tracking_payment", - "tracking_complete", - "network", - "token", - "sender_amount", - "receiver_amount", - "commercial_quotation", - "blindpay_quotation", - "currency", - "name", - "type" - ] - }, - "PaginationMetadata": { - "type": "object", - "properties": { - "has_more": { - "type": "boolean", - "description": "Whether or not there are more elements available after this set.", - "example": true - }, - "next_page": { - "type": [ - "string", - "null" - ], - "description": "The ID of the first item in the next page of results.", - "example": "pi_123" - }, - "prev_page": { - "type": [ - "string", - "null" - ], - "description": "The ID of the first item in the previous page of results.", - "example": "pi_123" - } - }, - "required": [ - "has_more" - ] - }, - "PayoutOnStellarAuthorizeIn": { - "type": "object", - "properties": { - "quote_id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "qu_000000000000" - }, - "sender_wallet_address": { - "type": "string", - "description": "Payout wallet address", - "example": "0x123...890" - } - }, - "required": [ - "quote_id", - "sender_wallet_address" - ] - }, - "PayoutOnEvmOut": { - "type": "object", - "properties": { - "id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "pa_000000000000" - }, - "status": { - "type": "string", - "enum": [ - "processing", - "failed", - "refunded", - "completed", - "on_hold" - ], - "description": "Payout general status", - "example": "processing" - }, - "sender_wallet_address": { - "type": "string", - "description": "Payout wallet address", - "example": "0x123...890" - }, - "billing_fee_amount": { - "type": [ - "number", - "null" - ], - "description": "Billing fee in cents (charged via invoice at the end of the month)", - "example": 50 - }, - "transaction_fee_amount": { - "type": [ - "number", - "null" - ], - "description": "Transaction fee in cents (percentage-based fee)", - "example": 100 - }, - "partner_fee": { - "type": "integer", - "minimum": 0, - "default": 0, - "description": "Payout partner fee amount in cents (can be negative for rebates)", - "example": -25000 - }, - "tracking_complete": { - "type": "object", - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Complete step", - "example": "on_hold" - }, - "status": { - "type": [ - "string", - "null" - ], - "enum": [ - "tokens_refunded", - "paid" - ], - "description": "Complete status", - "example": "tokens_refunded" - }, - "refund_reason": { - "type": [ - "string", - "null" - ], - "description": "Reason for refund when tokens are returned to sender", - "example": "fiat_payment_failed" - }, - "transaction_hash": { - "type": [ - "string", - "null" - ], - "description": "Complete transaction hash", - "example": "0x123...890" - }, - "provider_transaction_id": { - "type": [ - "string", - "null" - ], - "description": "Provider-side handle for the refund transaction (e.g. Circle transaction id)", - "example": "67c12eae-b7bc-31cc-a5ef-623dcea82346" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Complete completed date", - "example": "2011-10-05T14:48:00.000Z" - } - }, - "required": [ - "step" - ] - }, - "tracking_payment": { - "type": "object", - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Payment step", - "example": "on_hold" - }, - "provider_name": { - "type": [ - "string", - "null" - ], - "enum": [ - "Nvio Pagos", - "Brex", - "Stark Bank", - "JPMorgan Chase", - "HSBC", - "Inter", - "JP Morgan Chase", - "Bitso", - "Citi", - "CFSB", - "Triple A Technologies", - "Portage Bank" - ], - "description": "Payment provider name", - "example": "HSBC" - }, - "provider_integration": { - "type": [ - "string", - "null" - ], - "enum": [ - "veem", - "zenus", - "checkbook", - "onemoney", - "bitso", - "starkbank", - "triplea", - "infinitus" - ], - "description": "Machine-readable integration that executed the fiat leg. Unlike provider_name (a client-facing bank label), this uniquely identifies the integration — e.g. zenus vs checkbook, which share the \"JPMorgan Chase\" label.", - "example": "zenus" - }, - "provider_transaction_id": { - "type": [ - "string", - "null" - ], - "description": "Payment provider transaction id", - "example": "0x123...890" - }, - "provider_status": { - "type": [ - "string", - "null" - ], - "enum": [ - "canceled", - "failed", - "returned", - "sent" - ], - "description": "Payment provider status", - "example": "canceled" - }, - "provider_error_reason": { - "type": [ - "string", - "null" - ], - "description": "Provider error reason when payment fails (e.g. invalid_key, wrong_parameters)", - "example": "invalid_key" - }, - "provider_uetr": { - "type": [ - "string", - "null" - ], - "maxLength": 120, - "description": "Unique end-to-end transaction reference (UETR). Populated once the wire is confirmed by the network; null while the payment is in flight or when the rail does not expose it (e.g. ACH).", - "example": "37d10eff-d450-4aba-a5d4-e3978f5a3343" - }, - "provider_imad": { - "type": [ - "string", - "null" - ], - "maxLength": 120, - "description": "Fed Input Message Accountability Data (IMAD). Domestic Fedwire payments only; null on ACH and SWIFT.", - "example": "20260526MMQFMP2M008120" - }, - "provider_reference": { - "type": [ - "string", - "null" - ], - "maxLength": 120, - "description": "Provider (JPMorgan/Zenus) payment reference captured from the ACCOUNT.ACCOUNT booking webhook (Zenus contractSource.sourceRef). Present for some ACH/wire payouts; a bank-side reference, not the formal ACH network trace number.", - "example": "2084734238TC" - }, - "provider_clearing_system": { - "type": [ - "string", - "null" - ], - "maxLength": 40, - "description": "Clearing system that processed the payment (e.g. FED, CHIPS, ACH, SWIFT).", - "example": "FED" - }, - "recipient_name": { - "type": [ - "string", - "null" - ], - "description": "Recipient name", - "example": "John Doe" - }, - "recipient_tax_id": { - "type": [ - "string", - "null" - ], - "description": "Recipient tax id", - "example": "123.456.789-10" - }, - "recipient_bank_code": { - "type": [ - "string", - "null" - ], - "description": "Recipient bank code", - "example": "00416968" - }, - "recipient_branch_code": { - "type": [ - "string", - "null" - ], - "description": "Recipient branch code", - "example": "0001" - }, - "recipient_account_number": { - "type": [ - "string", - "null" - ], - "description": "Recipient account number", - "example": "1234567890" - }, - "recipient_account_type": { - "type": [ - "string", - "null" - ], - "description": "Recipient account type", - "example": "checking" - }, - "coelsa_id": { - "type": [ - "string", - "null" - ], - "description": "COELSA transaction reference ID for ARS transfers (Argentine national banking system)", - "example": "1LMP68NKV46DRDYK2R7OEV" - }, - "end_to_end_id": { - "type": [ - "string", - "null" - ], - "description": "BACEN Pix end-to-end transaction ID (govt Pix ID)", - "example": "E20018183202603311320vm6ALFpJpsS" - }, - "estimated_time_of_arrival": { - "type": [ - "string", - "null" - ], - "enum": [ - "5_min", - "5_30_min", - "30_min", - "2_hours", - "1_business_day", - "2_business_days", - "5_business_days" - ], - "description": "Estimated time of arrival", - "example": "5_min" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Payment completed date", - "example": "2011-10-05T14:48:00.000Z" - } - }, - "required": [ - "step" - ] - }, - "tracking_transaction": { - "type": "object", - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Payout transaction step", - "example": "processing" - }, - "status": { - "type": [ - "string", - "null" - ], - "enum": [ - "failed", - "found" - ], - "description": "Payout transaction status", - "example": "failed" - }, - "transaction_hash": { - "type": [ - "string", - "null" - ], - "description": "Blockchain transaction hash", - "example": "0x123...890" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Payout transaction completed date", - "example": "2011-10-05T14:48:00.000Z" - }, - "provider_transaction_id": { - "type": [ - "string", - "null" - ], - "description": "Provider-side handle for the on-chain leg (e.g. Circle CPN payment id).", - "example": "67c12eae-b7bc-31cc-a5ef-623dcea82346" - }, - "provider_error_reason": { - "type": [ - "string", - "null" - ], - "description": "Provider error reason when the crypto collection fails (e.g. erc20_allowance_insufficient, ESTIMATION_ERROR: execution reverted)", - "example": "erc20_allowance_insufficient" - }, - "ledger_in_transaction_id": { - "type": [ - "string", - "null" - ], - "description": "Ledger transaction ID for the IN (crypto deposit) transaction" - }, - "ledger_out_transaction_id": { - "type": [ - "string", - "null" - ], - "description": "Ledger transaction ID for the OUT (fiat withdrawal) transaction" - } - }, - "required": [ - "step" - ] - }, - "tracking_liquidity": { - "type": [ - "object", - "null" - ], - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Payout liquidity step", - "example": "processing" - }, - "provider_transaction_id": { - "type": [ - "string", - "null" - ], - "description": "Payment provider transaction id", - "example": "0x123...890" - }, - "provider_status": { - "type": [ - "string", - "null" - ], - "enum": [ - "deposited", - "converted", - "withdrawn" - ], - "description": "Payment provider status", - "example": "deposited" - }, - "estimated_time_of_arrival": { - "type": [ - "string", - "null" - ], - "enum": [ - "5_min", - "5_30_min", - "30_min", - "2_hours", - "1_business_day", - "2_business_days", - "5_business_days" - ], - "description": "Estimated time of arrival", - "example": "1_business_day" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Payout transaction completed date", - "example": "2011-10-05T14:48:00.000Z" - } - }, - "required": [ - "step" - ] - }, - "tracking_documents": { - "type": [ - "object", - "null" - ], - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Documents step", - "example": "processing" - }, - "status": { - "type": [ - "string", - "null" - ], - "enum": [ - "waiting_documents", - "compliance_reviewing" - ], - "description": "Documents status", - "example": "waiting_documents" - }, - "reviewed_by": { - "type": [ - "string", - "null" - ], - "description": "Reviewer email/name", - "example": "compliance@example.com" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Documents completed date", - "example": "2011-10-05T14:48:00.000Z" - } - }, - "required": [ - "step" - ] - }, - "customer_id": { - "type": [ - "string", - "null" - ], - "minLength": 15, - "maxLength": 15, - "example": "re_000000000000" - }, - "bank_account_id": { - "type": [ - "string", - "null" - ], - "minLength": 15, - "maxLength": 15, - "example": "ba_000000000000" - }, - "offramp_wallet_id": { - "type": [ - "string", - "null" - ], - "minLength": 15, - "maxLength": 15, - "example": "ow_000000000000" - } - }, - "required": [ - "id", - "status", - "sender_wallet_address", - "tracking_complete", - "tracking_payment", - "tracking_transaction" - ] - }, - "PayoutOnStellarIn": { - "type": "object", - "properties": { - "quote_id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "qu_000000000000" - }, - "signed_transaction": { - "type": [ - "string", - "null" - ], - "description": "Signed transaction", - "example": "AAA...Zey8y0A" - }, - "sender_wallet_address": { - "type": "string", - "description": "Payout wallet address", - "example": "0x123...890" - } - }, - "required": [ - "quote_id", - "sender_wallet_address" - ] - }, - "PayoutOnSolanaIn": { - "type": "object", - "properties": { - "quote_id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "qu_000000000000" - }, - "signed_transaction": { - "type": [ - "string", - "null" - ], - "description": "Signed transaction", - "example": "AAA...Zey8y0A" - }, - "sender_wallet_address": { - "type": "string", - "description": "Payout wallet address", - "example": "0x123...890" - } - }, - "required": [ - "quote_id", - "sender_wallet_address" - ] - }, - "PayoutOnEvmIn": { - "type": "object", - "properties": { - "quote_id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "qu_000000000000" - }, - "sender_wallet_address": { - "type": "string", - "description": "Payout wallet address", - "example": "0x123...890" - } - }, - "required": [ - "quote_id", - "sender_wallet_address" - ] - }, - "SubmitPayoutDocumentsIn": { - "type": "object", - "properties": { - "transaction_document_type": { - "type": "string", - "enum": [ - "invoice", - "purchase_order", - "delivery_slip", - "contract", - "customs_declaration", - "bill_of_lading", - "others" - ], - "description": "Document type", - "example": "invoice" - }, - "transaction_document_id": { - "type": "string", - "minLength": 1, - "maxLength": 512, - "description": "Document identifier (invoice number, contract ID, etc.)", - "example": "INV-12345" - }, - "transaction_document_file": { - "type": "string", - "format": "uri", - "description": "URL to the uploaded document", - "example": "https://example.com/document.pdf" - }, - "description": { - "type": "string", - "maxLength": 128, - "description": "Optional payment description/memo (max 128 chars)", - "example": "Payment for services - Invoice #12345" - } - }, - "required": [ - "transaction_document_type", - "transaction_document_id", - "transaction_document_file" - ] - }, - "AvailableBankDetails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "label": { - "type": "string", - "example": "Account Number" - }, - "regex": { - "type": "string", - "example": "^[0-9]{9}$" - }, - "key": { - "type": "string", - "enum": [ - "type", - "name", - "status", - "recipient_relationship", - "swift_payment_code", - "pix_key", - "force_cpf_cnpj", - "beneficiary_name", - "routing_number", - "account_number", - "account_type", - "account_class", - "address_line_1", - "address_line_2", - "city", - "state_province_region", - "country", - "postal_code", - "checkbook_account_id", - "checkbook_user_key", - "onemoney_external_account_id", - "pix_safe_bank_code", - "pix_safe_branch_code", - "pix_safe_cpf_cnpj", - "ted_bank_code", - "ted_branch_code", - "ted_cpf_cnpj", - "spei_protocol", - "spei_institution_code", - "spei_clabe", - "transfers_type", - "transfers_account", - "ach_cop_beneficiary_first_name", - "ach_cop_beneficiary_last_name", - "ach_cop_document_id", - "ach_cop_document_type", - "ach_cop_email", - "ach_cop_bank_code", - "ach_cop_bank_account", - "swift_code_bic", - "swift_account_holder_name", - "swift_account_number_iban", - "swift_beneficiary_address_line_1", - "swift_beneficiary_address_line_2", - "swift_beneficiary_country", - "swift_beneficiary_city", - "swift_beneficiary_state_province_region", - "swift_beneficiary_postal_code", - "swift_bank_name", - "swift_bank_address_line_1", - "swift_bank_address_line_2", - "swift_bank_country", - "swift_bank_city", - "swift_bank_state_province_region", - "swift_bank_postal_code", - "swift_ifsc_branch_code", - "swift_intermediary_bank_swift_code_bic", - "swift_intermediary_bank_account_number_iban", - "swift_intermediary_bank_name", - "swift_intermediary_bank_country", - "sepa_iban", - "sepa_beneficiary_bic", - "sepa_beneficiary_legal_name", - "sepa_beneficiary_address_line_1", - "sepa_beneficiary_address_line_2", - "sepa_beneficiary_city", - "sepa_beneficiary_state_province_region", - "sepa_beneficiary_postal_code", - "sepa_beneficiary_country", - "business_industry", - "phone_number", - "tax_id", - "date_of_birth" - ], - "example": "account_number" - }, - "items": { - "type": "array", - "items": { - "type": "object", - "properties": { - "label": { - "type": "string", - "example": "United States of America" - }, - "value": { - "type": "string", - "example": "US" - }, - "is_active": { - "type": "boolean", - "example": true - } - }, - "required": [ - "label", - "value" - ] - } - }, - "required": { - "type": [ - "boolean", - "null" - ], - "example": false - }, - "requiredWhen": { - "type": "object", - "properties": { - "field": { - "type": "string", - "enum": [ - "type", - "name", - "status", - "recipient_relationship", - "swift_payment_code", - "pix_key", - "force_cpf_cnpj", - "beneficiary_name", - "routing_number", - "account_number", - "account_type", - "account_class", - "address_line_1", - "address_line_2", - "city", - "state_province_region", - "country", - "postal_code", - "checkbook_account_id", - "checkbook_user_key", - "onemoney_external_account_id", - "pix_safe_bank_code", - "pix_safe_branch_code", - "pix_safe_cpf_cnpj", - "ted_bank_code", - "ted_branch_code", - "ted_cpf_cnpj", - "spei_protocol", - "spei_institution_code", - "spei_clabe", - "transfers_type", - "transfers_account", - "ach_cop_beneficiary_first_name", - "ach_cop_beneficiary_last_name", - "ach_cop_document_id", - "ach_cop_document_type", - "ach_cop_email", - "ach_cop_bank_code", - "ach_cop_bank_account", - "swift_code_bic", - "swift_account_holder_name", - "swift_account_number_iban", - "swift_beneficiary_address_line_1", - "swift_beneficiary_address_line_2", - "swift_beneficiary_country", - "swift_beneficiary_city", - "swift_beneficiary_state_province_region", - "swift_beneficiary_postal_code", - "swift_bank_name", - "swift_bank_address_line_1", - "swift_bank_address_line_2", - "swift_bank_country", - "swift_bank_city", - "swift_bank_state_province_region", - "swift_bank_postal_code", - "swift_ifsc_branch_code", - "swift_intermediary_bank_swift_code_bic", - "swift_intermediary_bank_account_number_iban", - "swift_intermediary_bank_name", - "swift_intermediary_bank_country", - "sepa_iban", - "sepa_beneficiary_bic", - "sepa_beneficiary_legal_name", - "sepa_beneficiary_address_line_1", - "sepa_beneficiary_address_line_2", - "sepa_beneficiary_city", - "sepa_beneficiary_state_province_region", - "sepa_beneficiary_postal_code", - "sepa_beneficiary_country", - "business_industry", - "phone_number", - "tax_id", - "date_of_birth" - ], - "example": "country" - }, - "operator": { - "type": "string", - "enum": [ - "in", - "eq", - "notIn", - "notEq" - ], - "example": "in" - }, - "values": { - "type": "array", - "items": { - "type": "string" - }, - "example": [ - "US", - "GB" - ] - } - }, - "required": [ - "field", - "operator", - "values" - ], - "example": { - "field": "country", - "operator": "in", - "values": [ - "US", - "GB" - ] - } - } - }, - "required": [ - "label", - "regex", - "key" - ] - } - }, - "AvailableRails": { - "type": "array", - "items": { - "type": "object", - "properties": { - "label": { - "type": "string", - "example": "Domestic Wire" - }, - "value": { - "type": "string", - "enum": [ - "wire", - "ach", - "pix", - "pix_safe", - "ted", - "spei_bitso", - "transfers_bitso", - "ach_cop_bitso", - "international_swift", - "rtp", - "sepa" - ], - "example": "wire" - }, - "country": { - "type": "string", - "enum": [ - "AF", - "AL", - "DZ", - "AS", - "AD", - "AO", - "AI", - "AQ", - "AG", - "AR", - "AM", - "AW", - "AU", - "AT", - "AZ", - "BS", - "BH", - "BD", - "BB", - "BY", - "BE", - "BZ", - "BJ", - "BM", - "BT", - "BO", - "BQ", - "BA", - "BW", - "BV", - "BR", - "IO", - "BN", - "BG", - "BF", - "BI", - "CV", - "KH", - "CM", - "CA", - "KY", - "CF", - "TD", - "CL", - "CN", - "CX", - "CC", - "CO", - "KM", - "CD", - "CG", - "CK", - "CR", - "HR", - "CU", - "CW", - "CY", - "CZ", - "CI", - "DK", - "DJ", - "DM", - "DO", - "EC", - "EG", - "SV", - "GQ", - "ER", - "EE", - "SZ", - "ET", - "FK", - "FO", - "FJ", - "FI", - "FR", - "GF", - "PF", - "TF", - "GA", - "GM", - "GE", - "DE", - "GH", - "GI", - "GR", - "GL", - "GD", - "GP", - "GU", - "GT", - "GG", - "GN", - "GW", - "GY", - "HT", - "HM", - "VA", - "HN", - "HK", - "HU", - "IS", - "IN", - "ID", - "IR", - "IQ", - "IE", - "IM", - "IL", - "IT", - "JM", - "JP", - "JE", - "JO", - "KZ", - "KE", - "KI", - "KP", - "KR", - "KW", - "KG", - "LA", - "LV", - "LB", - "LS", - "LR", - "LY", - "LI", - "LT", - "LU", - "MO", - "MG", - "MW", - "MY", - "MV", - "ML", - "MT", - "MH", - "MQ", - "MR", - "MU", - "YT", - "MX", - "FM", - "MD", - "MC", - "MN", - "ME", - "MS", - "MA", - "MZ", - "MM", - "NA", - "NR", - "NP", - "NL", - "NC", - "NZ", - "NI", - "NE", - "NG", - "NU", - "NF", - "MP", - "NO", - "OM", - "PK", - "PW", - "PS", - "PA", - "PG", - "PY", - "PE", - "PH", - "PN", - "PL", - "PT", - "PR", - "QA", - "MK", - "RO", - "RU", - "RW", - "RE", - "BL", - "SH", - "KN", - "LC", - "MF", - "PM", - "VC", - "WS", - "SM", - "ST", - "SA", - "SN", - "RS", - "SC", - "SL", - "SG", - "SX", - "SK", - "SI", - "SB", - "SO", - "ZA", - "GS", - "SS", - "ES", - "LK", - "SD", - "SR", - "SJ", - "SE", - "CH", - "SY", - "TW", - "TJ", - "TZ", - "TH", - "TL", - "TG", - "TK", - "TO", - "TT", - "TN", - "TR", - "TM", - "TC", - "TV", - "UG", - "UA", - "AE", - "GB", - "UM", - "US", - "UY", - "UZ", - "VU", - "VE", - "VN", - "VG", - "VI", - "WF", - "EH", - "YE", - "ZM", - "ZW", - "AX" - ], - "example": "US" - } - }, - "required": [ - "label", - "value", - "country" - ] - } - }, - "AvailableNaicsList": { - "type": "array", - "items": { - "type": "object", - "properties": { - "label": { - "type": "string", - "example": "(339910) Jewelry and Silverware Manufacturing" - }, - "value": { - "type": "string", - "example": "339910" - } - }, - "required": [ - "label", - "value" - ] - } - }, - "SwiftCodeItem": { - "type": "object", - "properties": { - "id": { - "type": "string", - "example": "416" - }, - "bank": { - "type": "string", - "example": "BANK OF AMERICA, N.A." - }, - "city": { - "type": "string", - "example": "NEW JERSEY" - }, - "branch": { - "type": "string", - "example": "LENDING SERVICES AND OPERATIONS (LSOP)" - }, - "swiftCode": { - "type": "string", - "example": "BOFAUS3NLMA" - }, - "swiftCodeLink": { - "type": "string", - "example": "https://bank.codes/swift-code/united-states/bofaus3nlma/" - }, - "country": { - "type": "string", - "example": "United States" - }, - "countrySlug": { - "type": "string", - "example": "united-states" - } - }, - "required": [ - "id", - "bank", - "city", - "branch", - "swiftCode", - "swiftCodeLink", - "country", - "countrySlug" - ] - }, - "SwiftCodeResponse": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SwiftCodeItem" - } - }, - "ExternalOnboardingInfo": { - "type": "object", - "properties": { - "legal_name": { - "type": [ - "string", - "null" - ] - }, - "onboarding_step": { - "type": "string", - "enum": [ - "initial", - "business_details", - "business_profile", - "documents", - "applicant", - "completed", - "blocked" - ], - "example": "initial" - }, - "email": { - "type": "string", - "format": "email" - } - }, - "required": [ - "legal_name", - "onboarding_step", - "email" - ] - }, - "InstanceIn": { - "type": "object", - "properties": { - "name": { - "type": "string", - "minLength": 3, - "maxLength": 100, - "example": "My Instance" - }, - "type": { - "type": "string", - "enum": [ - "production", - "development" - ], - "example": "development" - }, - "seed_sample_data": { - "type": "boolean", - "description": "Development instances only: seed sample customers, payouts and payins so the dashboard lands populated.", - "example": true - } - }, - "required": [ - "name", - "type" - ] - }, - "PaymentRoute": { - "type": [ - "object", - "null" - ], - "properties": { - "ach": { - "type": "string", - "enum": [ - "zenus", - "veem", - "infinitus_portage", - "blocked" - ] - }, - "wire": { - "type": "string", - "enum": [ - "zenus", - "veem", - "infinitus_portage", - "blocked" - ] - }, - "international_swift": { - "type": "string", - "enum": [ - "zenus", - "veem", - "infinitus_portage", - "blocked" - ] - }, - "rtp": { - "type": "string", - "enum": [ - "zenus", - "veem", - "infinitus_portage", - "blocked" - ] - } - }, - "description": "Per-instance USD payout rail override. Maps a bank rail to a PSP (zenus | veem | infinitus) or to \"blocked\" to disable the rail. Absent rails fall back to default routing.", - "example": { - "ach": "zenus", - "wire": "zenus", - "international_swift": "zenus", - "rtp": "blocked" - } - }, - "ManualReviewSkip": { - "type": [ - "object", - "null" - ], - "properties": { - "ach": { - "type": "object", - "properties": { - "max_amount_usd_cents": { - "type": "integer", - "minimum": 0, - "description": "Threshold in USD cents. Payins and payouts on this rail at or below it skip the manual review.", - "example": 100000 - } - }, - "required": [ - "max_amount_usd_cents" - ] - }, - "wire": { - "type": "object", - "properties": { - "max_amount_usd_cents": { - "type": "integer", - "minimum": 0, - "description": "Threshold in USD cents. Payins and payouts on this rail at or below it skip the manual review.", - "example": 100000 - } - }, - "required": [ - "max_amount_usd_cents" - ] - }, - "rtp": { - "type": "object", - "properties": { - "max_amount_usd_cents": { - "type": "integer", - "minimum": 0, - "description": "Threshold in USD cents. Payins and payouts on this rail at or below it skip the manual review.", - "example": 100000 - } - }, - "required": [ - "max_amount_usd_cents" - ] - }, - "pix": { - "type": "object", - "properties": { - "max_amount_brl_cents": { - "type": "integer", - "minimum": 0, - "description": "Threshold in BRL cents. Pix payins and payouts at or below it skip the manual review.", - "example": 500000 - } - }, - "required": [ - "max_amount_brl_cents" - ] - } - }, - "description": "Per-rail threshold (in cents of the rail currency: USD for ach/wire/rtp, BRL for pix) at or below which payins and payouts skip the manual review. Takes precedence over the manual-review toggles (customer force_manual_review and instance manual_review_all_payments). FULL bypass: it also takes precedence over the SEON pre-send fraud gate (the check still runs and flags are still posted to Slack for audit). Configure only for fully trusted instances with low thresholds.", - "example": { - "ach": { - "max_amount_usd_cents": 100000 - }, - "wire": { - "max_amount_usd_cents": 500000 - }, - "rtp": { - "max_amount_usd_cents": 50000 - }, - "pix": { - "max_amount_brl_cents": 500000 - } - } - }, - "InstanceOut": { - "type": "object", - "properties": { - "id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "in_000000000000" - }, - "name": { - "type": "string", - "minLength": 3, - "maxLength": 100, - "example": "My Instance" - }, - "type": { - "type": "string", - "enum": [ - "production", - "development" - ], - "example": "development" - }, - "last_payout_date": { - "anyOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "type": "string" - }, - { - "type": "null" - } - ], - "example": "2022-01-01T00:00:00.000Z" - }, - "customers_amount": { - "type": [ - "number", - "null" - ], - "example": 150 - }, - "subscription_features": { - "anyOf": [ - { - "type": "object", - "properties": { - "international_swift": { - "type": "boolean" - }, - "virtual_accounts": { - "type": "boolean" - }, - "otc": { - "type": [ - "boolean", - "null" - ] - }, - "otc_dynamic_rate": { - "type": [ - "boolean", - "null" - ] - }, - "otc_manual_execution": { - "type": [ - "boolean", - "null" - ] - }, - "billing_charge": { - "type": [ - "boolean", - "null" - ] - }, - "wallets_and_transfers": { - "type": [ - "boolean", - "null" - ] - }, - "manual_review_all_payments": { - "type": [ - "boolean", - "null" - ] - }, - "ted_payin": { - "type": [ - "boolean", - "null" - ] - }, - "payment_route": { - "$ref": "#/components/schemas/PaymentRoute" - }, - "manual_review_skip": { - "$ref": "#/components/schemas/ManualReviewSkip" - } - }, - "required": [ - "international_swift", - "virtual_accounts" - ] - }, - { - "type": "string" - } - ], - "example": { - "international_swift": true, - "virtual_accounts": false, - "otc": false, - "otc_manual_execution": false, - "billing_charge": false, - "wallets_and_transfers": false, - "manual_review_all_payments": false - } - }, - "subscription_plan": { - "type": [ - "string", - "null" - ], - "enum": [ - "Basic", - "Business", - "Enterprise" - ], - "description": "Subscription plan: Basic, Business, or Enterprise", - "example": "Basic" - }, - "subscription_status": { - "type": [ - "string", - "null" - ], - "enum": [ - "active", - "pending_payment", - "past_due", - "cancelled" - ], - "description": "Subscription status: active, pending_payment, past_due, or cancelled", - "example": "active" - }, - "subscription_plan_amount": { - "type": [ - "number", - "null" - ], - "minimum": 0, - "description": "Monthly subscription plan amount in USD", - "example": 249 - }, - "invoice_due_date_days": { - "type": [ - "integer", - "null" - ], - "minimum": 0, - "description": "Number of days from invoice creation to due date", - "example": 15 - }, - "minimum_monthly_amount": { - "type": [ - "number", - "null" - ], - "minimum": 0, - "description": "Minimum monthly billing amount in USD", - "example": 2000 - }, - "user_owner_id": { - "type": "string", - "example": "us_000000000000" - }, - "user_role": { - "type": [ - "string", - "null" - ], - "enum": [ - "owner", - "admin", - "finance", - "checker", - "operations", - "developer", - "viewer" - ], - "example": "admin" - }, - "onboarding_step": { - "type": "string", - "enum": [ - "initial", - "business_details", - "business_profile", - "documents", - "applicant", - "completed", - "blocked" - ], - "example": "initial" - }, - "customer_invite_redirect_url": { - "type": [ - "string", - "null" - ], - "format": "uri", - "example": "https://blindpay.com" - }, - "email_notifications": { - "type": "boolean", - "default": true, - "description": "Whether email notifications are enabled for this instance", - "example": true - }, - "require_passkey": { - "type": "boolean", - "default": false, - "description": "Whether passkey verification is required for protected actions", - "example": false - }, - "compliance_emails": { - "type": [ - "array", - "null" - ], - "items": { - "type": "string", - "format": "email" - }, - "maxItems": 20, - "description": "When non-empty, compliance Request for Information emails are sent only to these addresses instead of all instance members", - "example": [ - "compliance@example.com" - ] - }, - "customer_rfi_emails_enabled": { - "type": "boolean", - "default": true, - "description": "Whether customer (customer) Request for Information notification emails are sent for this instance. Instance-level RFI emails are always sent regardless of this setting.", - "example": true - }, - "is_fbo": { - "type": [ - "boolean", - "null" - ], - "example": false - } - }, - "required": [ - "id", - "name", - "type", - "subscription_features", - "user_owner_id", - "onboarding_step" - ] - }, - "ExternalInstanceOut": { - "type": "object", - "properties": { - "legal_name": { - "type": [ - "string", - "null" - ], - "example": "My Company" - }, - "customer_invite_redirect_url": { - "type": [ - "string", - "null" - ], - "format": "uri", - "example": "https://blindpay.com" - } - } - }, - "UpdateInstanceIn": { - "type": "object", - "properties": { - "name": { - "type": "string", - "minLength": 3, - "maxLength": 100, - "example": "My Instance" - }, - "customer_invite_redirect_url": { - "type": [ - "string", - "null" - ], - "format": "uri", - "example": "https://blindpay.com" - }, - "email_notifications": { - "type": "boolean", - "default": true, - "description": "Whether email notifications are enabled for this instance", - "example": true - }, - "require_passkey": { - "type": "boolean", - "default": false, - "description": "Whether passkey verification is required for protected actions", - "example": false - }, - "compliance_emails": { - "type": [ - "array", - "null" - ], - "items": { - "type": "string", - "format": "email" - }, - "maxItems": 20, - "description": "When non-empty, compliance Request for Information emails are sent only to these addresses instead of all instance members", - "example": [ - "compliance@example.com" - ] - }, - "customer_rfi_emails_enabled": { - "type": "boolean", - "description": "Whether customer (customer) Request for Information notification emails are sent for this instance. Omit to leave unchanged.", - "example": true - } - }, - "required": [ - "name" - ] - }, - "UpdateInstanceMemberIn": { - "type": "object", - "properties": { - "user_role": { - "type": "string", - "enum": [ - "owner", - "admin", - "finance", - "checker", - "operations", - "developer", - "viewer" - ], - "example": "admin" - } - }, - "required": [ - "user_role" - ] - }, - "CopyInstanceMembersOut": { - "type": "object", - "properties": { - "copied_members": { - "type": "integer", - "example": 3 - }, - "copied_invites": { - "type": "integer", - "example": 1 - }, - "skipped_members": { - "type": "integer", - "description": "Source members that already belong to the target instance", - "example": 2 - } - }, - "required": [ - "copied_members", - "copied_invites", - "skipped_members" - ] - }, - "CopyInstanceMembersIn": { - "type": "object", - "properties": { - "source_instance_id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "in_000000000000" - } - }, - "required": [ - "source_instance_id" - ] - }, - "MigrateInstanceOwnershipIn": { - "type": "object", - "properties": { - "user_id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "us_000000000000" - } - }, - "required": [ - "user_id" - ] - }, - "AuditActor": { - "type": [ - "object", - "null" - ], - "properties": { - "id": { - "type": [ - "string", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - }, - "email": { - "type": [ - "string", - "null" - ] - }, - "image_url": { - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "id", - "name", - "email", - "image_url" - ] - }, - "AuditLog": { - "type": "object", - "properties": { - "id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "al_000000000000" - }, - "instance_id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "in_000000000000" - }, - "actor_type": { - "type": "string", - "enum": [ - "user", - "api_key" - ], - "example": "user" - }, - "user_id": { - "type": [ - "string", - "null" - ], - "example": "us_000000000000" - }, - "api_key_id": { - "type": [ - "string", - "null" - ], - "example": null - }, - "role": { - "type": "string", - "example": "admin" - }, - "feature": { - "type": "string", - "example": "payin" - }, - "operation": { - "type": "string", - "enum": [ - "create", - "update", - "delete" - ], - "example": "create" - }, - "entity_type": { - "type": "string", - "example": "payin" - }, - "entity_id": { - "type": "string", - "example": "pi_000000000000" - }, - "metadata": { - "type": "object", - "additionalProperties": {}, - "example": {} - }, - "ip_address": { - "type": [ - "string", - "null" - ], - "example": "177.137.230.244" - }, - "user_agent": { - "type": [ - "string", - "null" - ], - "example": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)" - }, - "country": { - "type": [ - "string", - "null" - ], - "example": "US" - }, - "has_passkey": { - "type": [ - "boolean", - "null" - ], - "example": true - }, - "request_id": { - "type": [ - "string", - "null" - ], - "example": "abcd1234" - }, - "created_at": { - "example": "2021-01-01T00:00:00Z" - } - }, - "required": [ - "id", - "instance_id", - "actor_type", - "user_id", - "api_key_id", - "role", - "feature", - "operation", - "entity_type", - "entity_id", - "metadata", - "ip_address", - "user_agent", - "country", - "has_passkey", - "request_id" - ] - }, - "AuditLogOut": { - "allOf": [ - { - "$ref": "#/components/schemas/AuditLog" - }, - { - "type": "object", - "properties": { - "actor": { - "$ref": "#/components/schemas/AuditActor" - } - }, - "required": [ - "actor" - ] - } - ] - }, - "FeedbackOut": { - "type": "object", - "properties": { - "id": { - "type": "string", - "example": "fb_000000000000" - }, - "instance_id": { - "type": [ - "string", - "null" - ], - "example": "in_000000000000" - }, - "user_id": { - "type": [ - "string", - "null" - ], - "example": "us_000000000000" - }, - "type": { - "type": "string", - "enum": [ - "bug", - "suggestion", - "feedback", - "praise", - "complaint" - ] - }, - "title": { - "type": "string" - }, - "description": { - "type": "string" - }, - "email": { - "type": [ - "string", - "null" - ] - }, - "page_url": { - "type": [ - "string", - "null" - ] - }, - "user_agent": { - "type": [ - "string", - "null" - ] - }, - "created_at": { - "example": "2021-01-01T00:00:00Z" - } - }, - "required": [ - "id", - "instance_id", - "user_id", - "type", - "title", - "description", - "email", - "page_url", - "user_agent" - ] - }, - "CreateFeedbackIn": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "bug", - "suggestion", - "feedback", - "praise" - ], - "example": "bug" - }, - "title": { - "type": "string", - "minLength": 1, - "maxLength": 200, - "example": "Cannot create payout" - }, - "description": { - "type": "string", - "minLength": 1, - "maxLength": 5000, - "example": "When I click the create payout button, nothing happens." - }, - "page_url": { - "type": [ - "string", - "null" - ], - "maxLength": 2000, - "example": "https://app.blindpay.com/instances/in_123/payouts" - }, - "user_agent": { - "type": [ - "string", - "null" - ], - "maxLength": 500, - "example": "Mozilla/5.0" - } - }, - "required": [ - "type", - "title", - "description" - ] - }, - "FeeOptions": { - "type": "object", - "properties": { - "payin_flat": { - "type": "integer", - "description": "Payin flat fee in cents", - "example": 40 - }, - "payin_percentage": { - "type": "integer", - "description": "Payin percentage fee in basis points", - "example": 50 - }, - "payout_flat": { - "type": "integer", - "description": "Payout flat fee in cents", - "example": 40 - }, - "payout_percentage": { - "type": "integer", - "description": "Payout percentage fee in basis points", - "example": 50 - } - }, - "required": [ - "payin_flat", - "payin_percentage", - "payout_flat", - "payout_percentage" - ] - }, - "GetFeesOut": { - "type": "object", - "properties": { - "id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "fe_000000000000" - }, - "instance_id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "in_000000000000" - }, - "ach": { - "$ref": "#/components/schemas/FeeOptions" - }, - "domestic_wire": { - "$ref": "#/components/schemas/FeeOptions" - }, - "rtp": { - "$ref": "#/components/schemas/FeeOptions" - }, - "international_swift": { - "$ref": "#/components/schemas/FeeOptions" - }, - "pix": { - "$ref": "#/components/schemas/FeeOptions" - }, - "pix_safe": { - "$ref": "#/components/schemas/FeeOptions" - }, - "ted": { - "allOf": [ - { - "$ref": "#/components/schemas/FeeOptions" - }, - { - "type": [ - "object", - "null" - ] - } - ] - }, - "ach_colombia": { - "$ref": "#/components/schemas/FeeOptions" - }, - "transfers_3": { - "$ref": "#/components/schemas/FeeOptions" - }, - "spei": { - "$ref": "#/components/schemas/FeeOptions" - }, - "sepa": { - "$ref": "#/components/schemas/FeeOptions" - }, - "tron": { - "$ref": "#/components/schemas/FeeOptions" - }, - "ethereum": { - "$ref": "#/components/schemas/FeeOptions" - }, - "polygon": { - "$ref": "#/components/schemas/FeeOptions" - }, - "base": { - "$ref": "#/components/schemas/FeeOptions" - }, - "arbitrum": { - "$ref": "#/components/schemas/FeeOptions" - }, - "stellar": { - "$ref": "#/components/schemas/FeeOptions" - }, - "solana": { - "$ref": "#/components/schemas/FeeOptions" - }, - "created_at": { - "example": "2021-01-01T00:00:00Z" - }, - "updated_at": { - "example": "2021-01-01T00:00:00Z" - } - }, - "required": [ - "id", - "instance_id", - "ach", - "domestic_wire", - "rtp", - "international_swift", - "pix", - "pix_safe", - "ach_colombia", - "transfers_3", - "spei", - "sepa", - "tron", - "ethereum", - "polygon", - "base", - "arbitrum", - "stellar", - "solana" - ] - }, - "CreateInviteIn": { - "type": "object", - "properties": { - "email": { - "type": "string", - "format": "email", - "example": "john@doe.com" - }, - "user_role": { - "type": "string", - "enum": [ - "owner", - "admin", - "finance", - "checker", - "operations", - "developer", - "viewer" - ], - "example": "admin" - }, - "invite_all_owned_instances": { - "type": "boolean", - "default": false, - "description": "When true, the member is added/invited to every instance the inviter owns, ignoring the instance in the path.", - "example": false - } - }, - "required": [ - "email", - "user_role" - ] - }, - "InitiateTosOut": { - "type": "object", - "properties": { - "url": { - "type": "string", - "format": "uri", - "example": "https://app.blindpay.com/e/terms-of-service?session_token=SESSION_TOKEN_FROM_INITIATE_TOS_RESPONSE" - } - }, - "required": [ - "url" - ] - }, - "InitiateTosIn": { - "type": "object", - "properties": { - "idempotency_key": { - "type": "string", - "format": "uuid", - "example": "123e4567-e89b-12d3-a456-426614174000" - }, - "customer_id": { - "type": [ - "string", - "null" - ], - "minLength": 15, - "maxLength": 15, - "example": "re_000000000000" - }, - "redirect_url": { - "type": [ - "string", - "null" - ], - "format": "uri" - } - }, - "required": [ - "idempotency_key" - ] - }, - "AcceptTosOut": { - "type": "object", - "properties": { - "tos_id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "to_000000000000" - }, - "idempotency_key": { - "type": "string", - "format": "uuid", - "example": "123e4567-e89b-12d3-a456-426614174000" - }, - "customer_id": { - "type": [ - "string", - "null" - ], - "minLength": 15, - "maxLength": 15, - "example": "re_000000000000" - }, - "version": { - "type": [ - "string", - "null" - ], - "enum": [ - "1.0.0", - "1.0.1" - ], - "example": "1.0.0" - } - }, - "required": [ - "tos_id", - "idempotency_key" - ] - }, - "AcceptTosIn": { - "type": "object", - "properties": { - "session_token": { - "type": "string", - "example": "SESSION_TOKEN_FROM_INITIATE_TOS_RESPONSE" - }, - "idempotency_key": { - "type": "string", - "format": "uuid", - "example": "123e4567-e89b-12d3-a456-426614174000" - }, - "customer_id": { - "type": [ - "string", - "null" - ], - "minLength": 15, - "maxLength": 15, - "example": "re_000000000000" - }, - "session": { - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "session_token", - "idempotency_key" - ] - }, - "CreateExternalCustomerTokenIn": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "individual", - "business" - ], - "example": "individual" - }, - "kyc_type": { - "type": "string", - "enum": [ - "light", - "standard", - "enhanced" - ], - "example": "standard" - } - }, - "required": [ - "type", - "kyc_type" - ] - }, - "CreateInstanceOnboardingInviteIn": { - "type": "object", - "properties": { - "email": { - "type": "string", - "format": "email", - "description": "Email address of the person who will receive the onboarding invite", - "example": "collaborator@example.com" - } - }, - "required": [ - "email" - ] - }, - "CreateApiKeyOut": { - "type": "object", - "properties": { - "id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "ap_000000000000" - }, - "token": { - "type": "string", - "example": "token" - } - }, - "required": [ - "id", - "token" - ] - }, - "CreateApiKeyIn": { - "type": "object", - "properties": { - "name": { - "type": "string", - "minLength": 1, - "example": "API Key Name" - }, - "permission": { - "type": "string", - "enum": [ - "full_access" - ], - "example": "full_access" - }, - "ip_whitelist": { - "type": [ - "array", - "null" - ], - "items": { - "type": "string", - "format": "ip" - }, - "example": [ - "127.0.0.1", - "192.168.0.1" - ] - } - }, - "required": [ - "name", - "permission" - ] - }, - "ApiKeyPublic": { - "type": "object", - "properties": { - "id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "ap_000000000000" - }, - "name": { - "type": "string", - "minLength": 1, - "example": "API Key Name" - }, - "permission": { - "type": "string", - "enum": [ - "full_access" - ], - "example": "full_access" - }, - "token": { - "type": "string", - "example": "token" - }, - "ip_whitelist": { - "type": [ - "array", - "null" - ], - "items": { - "type": "string", - "format": "ip" - }, - "example": [ - "127.0.0.1", - "192.168.0.1" - ] - }, - "last_used_at": { - "example": "2021-01-01T00:00:00Z" - }, - "instance_id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "in_000000000000" - }, - "created_at": { - "example": "2021-01-01T00:00:00Z" - }, - "updated_at": { - "example": "2021-01-01T00:00:00Z" - } - }, - "required": [ - "id", - "name", - "permission", - "token", - "instance_id" - ] - }, - "WebhookEndpointOut": { - "type": "object", - "properties": { - "id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "we_000000000000" - } - }, - "required": [ - "id" - ] - }, - "WebhookEndpointIn": { - "type": "object", - "properties": { - "url": { - "type": "string", - "format": "uri", - "example": "https://example.com/webhook" - }, - "events": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "customer.new", - "customer.update", - "customer.delete", - "bankAccount.new", - "payout.new", - "payout.update", - "payout.complete", - "payout.partnerFee", - "blockchainWallet.new", - "payin.new", - "payin.update", - "payin.complete", - "payin.partnerFee", - "tos.accept", - "limitIncrease.new", - "limitIncrease.update", - "virtualAccount.new", - "virtualAccount.complete", - "transfer.new", - "transfer.update", - "transfer.complete", - "wallet.new", - "wallet.inbound" - ] - }, - "example": [ - "customer.new" - ] - } - }, - "required": [ - "url", - "events" - ] - }, - "WebhookEndpoint": { - "type": "object", - "properties": { - "id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "we_000000000000" - }, - "url": { - "type": "string", - "format": "uri", - "example": "https://example.com/webhook" - }, - "events": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "customer.new", - "customer.update", - "customer.delete", - "bankAccount.new", - "payout.new", - "payout.update", - "payout.complete", - "payout.partnerFee", - "blockchainWallet.new", - "payin.new", - "payin.update", - "payin.complete", - "payin.partnerFee", - "tos.accept", - "limitIncrease.new", - "limitIncrease.update", - "virtualAccount.new", - "virtualAccount.complete", - "transfer.new", - "transfer.update", - "transfer.complete", - "wallet.new", - "wallet.inbound" - ] - }, - "example": [ - "customer.new" - ] - }, - "last_event_at": { - "anyOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "type": "string" - }, - { - "type": "null" - } - ], - "example": "2024-01-01T00:00:00.000Z" - }, - "instance_id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "in_000000000000" - }, - "created_at": { - "example": "2021-01-01T00:00:00Z" - }, - "updated_at": { - "example": "2021-01-01T00:00:00Z" - } - }, - "required": [ - "id", - "url", - "events", - "instance_id" - ] - }, - "PortalAccessOut": { - "type": "object", - "properties": { - "url": { - "type": "string", - "format": "uri", - "example": "https://example.com/webhook" - } - }, - "required": [ - "url" - ] - }, - "PayinOut": { - "type": "object", - "properties": { - "id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "re_000000000000" - }, - "pix_code": { - "type": [ - "string", - "null" - ], - "description": "PIX code", - "example": "00020101021226790014br.gov.bcb.pix2557brcode.starkinfra.com/v2/bcf07f6c4110454e9fd6f120bab13e835204000053039865802BR5915Blind Pay, Inc.6010Vila Velha62070503***6304BCAB" - }, - "memo_code": { - "type": [ - "string", - "null" - ], - "description": "Memo code", - "example": "8K45GHBNT6BQ6462" - }, - "clabe": { - "type": [ - "string", - "null" - ], - "description": "CLABE code", - "example": "014027000000000008" - }, - "status": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "failed", - "refunded", - "completed" - ], - "description": "Payin general status", - "example": "processing" - }, - "payin_quote_id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "pq_000000000000" - }, - "instance_id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "in_000000000000" - }, - "customer_id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "re_000000000000" - }, - "partner_fee": { - "type": "integer", - "minimum": 0, - "default": 0, - "description": "Payin partner fee amount in cents", - "example": 25000 - }, - "tracking_transaction": { - "type": "object", - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Payin transaction step", - "example": "processing" - }, - "status": { - "type": [ - "string", - "null" - ], - "enum": [ - "failed", - "completed" - ], - "description": "Payin transaction status", - "example": "failed" - }, - "external_id": { - "type": [ - "string", - "null" - ], - "description": "Payin transaction external id", - "example": "12345678" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Payin transaction completed date", - "example": "2011-10-05T14:48:00.000Z" - }, - "transaction_hash": { - "type": [ - "string", - "null" - ], - "description": "Blockchain transaction hash", - "example": "0x123...890" - }, - "provider_name": { - "type": [ - "string", - "null" - ], - "enum": [ - "Nvio Pagos", - "Brex", - "Stark Bank", - "JPMorgan Chase", - "HSBC", - "Inter", - "JP Morgan Chase", - "Bitso", - "Citi", - "CFSB", - "Triple A Technologies", - "Portage Bank" - ], - "description": "Payment provider name", - "example": "HSBC" - }, - "provider_transaction_id": { - "type": [ - "string", - "null" - ], - "description": "Payment provider transaction id", - "example": "" - }, - "sender_name": { - "type": [ - "string", - "null" - ], - "example": "John Doe Smith" - }, - "sender_bank_name": { - "type": [ - "string", - "null" - ], - "example": "Bank of America" - }, - "sender_tax_id": { - "type": [ - "string", - "null" - ], - "example": "123.456.789-10" - }, - "sender_bank_code": { - "type": [ - "string", - "null" - ], - "example": "00416968" - }, - "sender_account_number": { - "type": [ - "string", - "null" - ], - "example": "1234567890" - }, - "end_to_end_id": { - "type": [ - "string", - "null" - ], - "description": "BACEN Pix end-to-end transaction ID (govt Pix ID)", - "example": "E20018183202603311320vm6ALFpJpsS" - }, - "trace_number": { - "type": [ - "string", - "null" - ], - "example": "1234567890" - }, - "transaction_reference": { - "type": [ - "string", - "null" - ], - "example": "1234567890" - }, - "description": { - "type": [ - "string", - "null" - ], - "example": "Payment from John Doe Smith" - }, - "pse_instruction": { - "type": [ - "object", - "null" - ], - "properties": { - "payment_link": { - "type": "string", - "description": "PSE payment link URL", - "example": "https://pse.example.com/payment/abc123" - }, - "fid": { - "type": "string", - "description": "PSE funding identifier for webhook matching", - "example": "fid_abc123" - }, - "full_name": { - "type": "string", - "description": "PSE payer full name", - "example": "Juan Pérez García" - }, - "tax_id": { - "type": "string", - "description": "PSE payer document number", - "example": "1234567890" - }, - "document_type": { - "type": "string", - "enum": [ - "CC", - "NIT" - ], - "description": "PSE payer document type", - "example": "CC" - }, - "phone": { - "type": "string", - "description": "PSE payer phone number", - "example": "+573001234567" - }, - "email": { - "type": "string", - "description": "PSE payer email", - "example": "juan@example.com" - }, - "bank_code": { - "type": [ - "string", - "null" - ], - "description": "PSE payer bank code", - "example": "1007" - } - }, - "required": [ - "payment_link", - "fid", - "full_name", - "tax_id", - "document_type", - "phone", - "email" - ] - }, - "transfers_instruction": { - "type": [ - "object", - "null" - ], - "properties": { - "account": { - "type": "string", - "description": "CVU/CBU/Alias account number", - "example": "0000003100012389237485" - }, - "type": { - "type": "string", - "enum": [ - "CVU", - "CBU", - "ALIAS" - ], - "description": "Account type (CVU, CBU, or ALIAS)", - "example": "CVU" - }, - "tax_id": { - "type": [ - "string", - "null" - ], - "description": "CUIT/CUIL (normalized, digits only)", - "example": "20123456783" - } - }, - "required": [ - "account", - "type" - ] - }, - "ted_instruction": { - "type": [ - "object", - "null" - ], - "properties": { - "beneficiary_name": { - "type": "string", - "example": "Blind Pay, Inc." - }, - "tax_id": { - "type": "string", - "example": "57.599.376/0001-81" - }, - "bank_code": { - "type": "string", - "example": "665" - }, - "bank_name": { - "type": "string", - "example": "STARK BANK S.A." - }, - "branch_code": { - "type": "string", - "example": "5340" - }, - "account_number": { - "type": "string", - "example": "01011707084-8" - }, - "account_type": { - "type": "string", - "example": "checking" - } - }, - "required": [ - "beneficiary_name", - "tax_id", - "bank_code", - "bank_name", - "branch_code", - "account_number", - "account_type" - ] - } - }, - "required": [ - "step" - ] - }, - "tracking_payment": { - "type": "object", - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Payment step", - "example": "on_hold" - }, - "provider_name": { - "type": [ - "string", - "null" - ], - "description": "Payment provider name", - "example": "blockchain" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Payment completed date", - "example": "2011-10-05T14:48:00.000Z" - }, - "review_source": { - "type": [ - "string", - "null" - ], - "description": "Risk source that sent this payin to manual review", - "example": "seon_review" - }, - "review_context": { - "type": [ - "object", - "null" - ], - "additionalProperties": {}, - "description": "Structured risk context for manual review" - }, - "approved_risk_sources": { - "type": [ - "array", - "null" - ], - "items": { - "type": "string" - }, - "description": "Risk sources already approved by an analyst", - "example": [ - "seon_review" - ] - } - }, - "required": [ - "step" - ] - }, - "tracking_complete": { - "type": "object", - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Complete step", - "example": "on_hold" - }, - "transaction_hash": { - "type": [ - "string", - "null" - ], - "description": "Complete transaction hash", - "example": "0x123...890" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Complete completed date", - "example": "2011-10-05T14:48:00.000Z" - } - }, - "required": [ - "step" - ] - }, - "manual_execution_status": { - "type": [ - "string", - "null" - ], - "enum": [ - "pending", - "concluded", - "failed" - ], - "description": "When non-null, the payin was created while the manual OTC liquidity toggle was ON. `pending` means an operator must convert BRL→USDT manually and click \"Mark concluded\"; `concluded` closes the internal flow. Customer-facing behavior is identical in either mode.", - "example": null - }, - "manual_concluded_at": { - "description": "When `manual_execution_status` transitioned to `concluded`. Postgres returns a Date; this transform normalizes to an ISO string for the SDK.", - "example": null - }, - "manual_concluded_by": { - "type": [ - "string", - "null" - ], - "description": "Identifier of the operator who marked the manual OTC concluded.", - "example": null - }, - "created_at": { - "example": "2021-01-01T00:00:00Z" - }, - "updated_at": { - "example": "2021-01-01T00:00:00Z" - }, - "image_url": { - "type": [ - "string", - "null" - ], - "format": "uri", - "example": "https://example.com/image.png" - }, - "first_name": { - "type": [ - "string", - "null" - ], - "example": "John" - }, - "last_name": { - "type": [ - "string", - "null" - ], - "example": "Doe" - }, - "legal_name": { - "type": [ - "string", - "null" - ], - "example": "Company Name Inc." - }, - "type": { - "type": "string", - "enum": [ - "individual", - "business" - ], - "example": "individual" - }, - "payment_method": { - "type": "string", - "enum": [ - "ach", - "wire", - "pix", - "ted", - "spei", - "transfers", - "pse", - "international_swift", - "rtp" - ], - "example": "pix" - }, - "sender_amount": { - "type": [ - "number", - "null" - ], - "description": "52.40 BRL needs to be sent in a pix transfer", - "example": 5240 - }, - "receiver_amount": { - "type": [ - "number", - "null" - ], - "description": "10.10 USDC", - "example": 1010 - }, - "token": { - "type": "string", - "enum": [ - "USDC", - "USDT", - "USDB" - ], - "example": "USDC" - }, - "partner_fee_id": { - "type": [ - "string", - "null" - ], - "minLength": 15, - "maxLength": 15, - "example": "pf_000000000000" - }, - "partner_fee_amount": { - "type": [ - "number", - "null" - ], - "default": 0, - "description": "1.5 USDC", - "example": 150 - }, - "total_fee_amount": { - "type": [ - "number", - "null" - ], - "default": 0, - "description": "1.53 USDC", - "example": 1.53 - }, - "commercial_quotation": { - "type": [ - "number", - "null" - ], - "description": "1 USD = 4.95 BRL", - "example": 495 - }, - "blindpay_quotation": { - "type": [ - "number", - "null" - ], - "description": "1 USD = 5.05 BRL (commercial quotation + (blindpay taxes))", - "example": 505 - }, - "currency": { - "type": "string", - "enum": [ - "BRL", - "USD", - "MXN", - "COP", - "ARS", - "EUR" - ], - "description": "ISO 4271 currency code", - "example": "BRL" - }, - "billing_fee_amount": { - "type": [ - "number", - "null" - ], - "description": "Billing fee in cents (charged at the end of the month)", - "example": 50 - }, - "transaction_fee_amount": { - "type": [ - "number", - "null" - ], - "description": "Transaction fee in cents (percentage-based fee)", - "example": 100 - }, - "is_otc": { - "type": [ - "boolean", - "null" - ], - "description": "If true, the payin quote is for an OTC (Over the Counter) transaction", - "example": false - }, - "payer_rules": { - "type": [ - "object", - "null" - ], - "properties": { - "pix_allowed_tax_ids": { - "type": [ - "array", - "null" - ], - "items": { - "type": "string", - "example": "123.456.789-09" - } - }, - "transfers_allowed_tax_id": { - "type": [ - "string", - "null" - ], - "example": "20-12345678-3" - }, - "pse_allowed_tax_ids": { - "type": [ - "array", - "null" - ], - "items": { - "type": "string", - "example": "1234567890" - } - }, - "pse_full_name": { - "type": [ - "string", - "null" - ], - "maxLength": 50 - }, - "pse_document_type": { - "type": [ - "string", - "null" - ], - "enum": [ - "CC", - "NIT" - ] - }, - "pse_document_number": { - "type": [ - "string", - "null" - ] - }, - "pse_email": { - "type": [ - "string", - "null" - ], - "format": "email" - }, - "pse_phone": { - "type": [ - "string", - "null" - ], - "pattern": "^\\+573\\d{9}$" - }, - "pse_bank_code": { - "type": [ - "string", - "null" - ] - } - }, - "example": { - "pix_allowed_tax_ids": [ - "123.456.789-09" - ], - "transfers_allowed_tax_id": "20-12345678-3", - "pse_allowed_tax_ids": [ - "1234567890" - ] - } - }, - "name": { - "type": "string", - "example": "Wallet Display Name" - }, - "address": { - "type": [ - "string", - "null" - ], - "example": "0xDD6a3aD0949396e57C7738ba8FC1A46A5a1C372C" - }, - "network": { - "type": "string", - "enum": [ - "base", - "sepolia", - "arbitrum_sepolia", - "base_sepolia", - "arbitrum", - "polygon", - "polygon_amoy", - "ethereum", - "stellar", - "stellar_testnet", - "tron", - "solana", - "solana_devnet" - ], - "example": "polygon" - }, - "blindpay_bank_details": { - "type": [ - "object", - "null" - ], - "properties": { - "routing_number": { - "type": "string", - "default": "121145349", - "example": "121145349" - }, - "account_number": { - "type": "string", - "default": "621327727210181", - "example": "621327727210181" - }, - "account_type": { - "type": "string", - "default": "Business checking", - "example": "Business checking" - }, - "swift_bic_code": { - "type": [ - "string", - "null" - ], - "default": "CHASUS33", - "example": "CHASUS33" - }, - "ach": { - "type": [ - "object", - "null" - ], - "properties": { - "routing_number": { - "type": "string", - "example": "123456789" - }, - "account_number": { - "type": "string", - "example": "123456789" - } - }, - "required": [ - "routing_number", - "account_number" - ] - }, - "wire": { - "type": [ - "object", - "null" - ], - "properties": { - "routing_number": { - "type": "string", - "example": "123456789" - }, - "account_number": { - "type": "string", - "example": "123456789" - } - }, - "required": [ - "routing_number", - "account_number" - ] - }, - "rtp": { - "type": [ - "object", - "null" - ], - "properties": { - "routing_number": { - "type": "string", - "example": "123456789" - }, - "account_number": { - "type": "string", - "example": "123456789" - } - }, - "required": [ - "routing_number", - "account_number" - ] - }, - "beneficiary": { - "type": "object", - "properties": { - "name": { - "type": "string", - "default": "BlindPay, Inc.", - "example": "BlindPay, Inc." - }, - "address_line_1": { - "type": "string", - "default": "8 The Green, #19364", - "example": "8 The Green, #19364" - }, - "address_line_2": { - "type": "string", - "default": "Dover, DE 19901", - "example": "Dover, DE 19901" - } - } - }, - "receiving_bank": { - "type": "object", - "properties": { - "name": { - "type": "string", - "default": "CFSB", - "example": "CFSB" - }, - "address_line_1": { - "type": "string", - "default": "1 Letterman Drive, Building A, Suite A4-700", - "example": "1 Letterman Drive, Building A, Suite A4-700" - }, - "address_line_2": { - "type": "string", - "default": "San Francisco, CA 94129", - "example": "San Francisco, CA 94129" - } - } - }, - "swift_account_number": { - "type": [ - "string", - "null" - ], - "example": "GB50TCCL04140449730892" - }, - "swift_receiving_bank": { - "type": [ - "object", - "null" - ], - "properties": { - "name": { - "type": [ - "string", - "null" - ], - "example": "JPMorgan Chase" - }, - "address_line_1": { - "type": [ - "string", - "null" - ], - "example": "270 Park Ave" - }, - "address_line_2": { - "type": [ - "string", - "null" - ], - "example": "New York, NY, 10017-2070" - } - } - } - }, - "required": [ - "beneficiary", - "receiving_bank" - ] - }, - "pse_payment_link": { - "type": [ - "string", - "null" - ], - "description": "PSE payment link (derived from tracking_transaction.pse_instruction)", - "example": "https://pse.example.com/payment/abc123" - }, - "pse_full_name": { - "type": [ - "string", - "null" - ], - "description": "PSE payer full name", - "example": "Juan Pérez García" - }, - "pse_tax_id": { - "type": [ - "string", - "null" - ], - "description": "PSE payer document number", - "example": "1234567890" - }, - "pse_document_type": { - "type": [ - "string", - "null" - ], - "enum": [ - "CC", - "NIT" - ], - "description": "PSE payer document type", - "example": "CC" - } - }, - "required": [ - "id", - "status", - "payin_quote_id", - "instance_id", - "customer_id", - "tracking_transaction", - "tracking_payment", - "tracking_complete", - "type", - "payment_method", - "sender_amount", - "receiver_amount", - "token", - "commercial_quotation", - "blindpay_quotation", - "currency", - "name", - "network" - ] - }, - "CreatePayinOut": { - "type": "object", - "properties": { - "id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "pi_000000000000" - }, - "status": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "failed", - "refunded", - "completed" - ], - "description": "Payin general status", - "example": "processing" - }, - "pix_code": { - "type": [ - "string", - "null" - ], - "description": "PIX code", - "example": "00020101021226790014br.gov.bcb.pix2557brcode.starkinfra.com/v2/bcf07f6c4110454e9fd6f120bab13e835204000053039865802BR5915Blind Pay, Inc.6010Vila Velha62070503***6304BCAB" - }, - "memo_code": { - "type": [ - "string", - "null" - ], - "description": "Memo code", - "example": "8K45GHBNT6BQ6462" - }, - "clabe": { - "type": [ - "string", - "null" - ], - "description": "CLABE code", - "example": "014027000000000008" - }, - "partner_fee": { - "type": "integer", - "minimum": 0, - "default": 0, - "description": "Payin partner fee amount in cents", - "example": 25000 - }, - "tracking_complete": { - "type": "object", - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Complete step", - "example": "on_hold" - }, - "transaction_hash": { - "type": [ - "string", - "null" - ], - "description": "Complete transaction hash", - "example": "0x123...890" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Complete completed date", - "example": "2011-10-05T14:48:00.000Z" - } - }, - "required": [ - "step" - ] - }, - "tracking_payment": { - "type": "object", - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Payment step", - "example": "on_hold" - }, - "provider_name": { - "type": [ - "string", - "null" - ], - "description": "Payment provider name", - "example": "blockchain" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Payment completed date", - "example": "2011-10-05T14:48:00.000Z" - }, - "review_source": { - "type": [ - "string", - "null" - ], - "description": "Risk source that sent this payin to manual review", - "example": "seon_review" - }, - "review_context": { - "type": [ - "object", - "null" - ], - "additionalProperties": {}, - "description": "Structured risk context for manual review" - }, - "approved_risk_sources": { - "type": [ - "array", - "null" - ], - "items": { - "type": "string" - }, - "description": "Risk sources already approved by an analyst", - "example": [ - "seon_review" - ] - } - }, - "required": [ - "step" - ] - }, - "tracking_transaction": { - "type": "object", - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Payin transaction step", - "example": "processing" - }, - "status": { - "type": [ - "string", - "null" - ], - "enum": [ - "failed", - "completed" - ], - "description": "Payin transaction status", - "example": "failed" - }, - "external_id": { - "type": [ - "string", - "null" - ], - "description": "Payin transaction external id", - "example": "12345678" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Payin transaction completed date", - "example": "2011-10-05T14:48:00.000Z" - }, - "transaction_hash": { - "type": [ - "string", - "null" - ], - "description": "Blockchain transaction hash", - "example": "0x123...890" - }, - "provider_name": { - "type": [ - "string", - "null" - ], - "enum": [ - "Nvio Pagos", - "Brex", - "Stark Bank", - "JPMorgan Chase", - "HSBC", - "Inter", - "JP Morgan Chase", - "Bitso", - "Citi", - "CFSB", - "Triple A Technologies", - "Portage Bank" - ], - "description": "Payment provider name", - "example": "HSBC" - }, - "provider_transaction_id": { - "type": [ - "string", - "null" - ], - "description": "Payment provider transaction id", - "example": "" - }, - "sender_name": { - "type": [ - "string", - "null" - ], - "example": "John Doe Smith" - }, - "sender_bank_name": { - "type": [ - "string", - "null" - ], - "example": "Bank of America" - }, - "sender_tax_id": { - "type": [ - "string", - "null" - ], - "example": "123.456.789-10" - }, - "sender_bank_code": { - "type": [ - "string", - "null" - ], - "example": "00416968" - }, - "sender_account_number": { - "type": [ - "string", - "null" - ], - "example": "1234567890" - }, - "end_to_end_id": { - "type": [ - "string", - "null" - ], - "description": "BACEN Pix end-to-end transaction ID (govt Pix ID)", - "example": "E20018183202603311320vm6ALFpJpsS" - }, - "trace_number": { - "type": [ - "string", - "null" - ], - "example": "1234567890" - }, - "transaction_reference": { - "type": [ - "string", - "null" - ], - "example": "1234567890" - }, - "description": { - "type": [ - "string", - "null" - ], - "example": "Payment from John Doe Smith" - }, - "pse_instruction": { - "type": [ - "object", - "null" - ], - "properties": { - "payment_link": { - "type": "string", - "description": "PSE payment link URL", - "example": "https://pse.example.com/payment/abc123" - }, - "fid": { - "type": "string", - "description": "PSE funding identifier for webhook matching", - "example": "fid_abc123" - }, - "full_name": { - "type": "string", - "description": "PSE payer full name", - "example": "Juan Pérez García" - }, - "tax_id": { - "type": "string", - "description": "PSE payer document number", - "example": "1234567890" - }, - "document_type": { - "type": "string", - "enum": [ - "CC", - "NIT" - ], - "description": "PSE payer document type", - "example": "CC" - }, - "phone": { - "type": "string", - "description": "PSE payer phone number", - "example": "+573001234567" - }, - "email": { - "type": "string", - "description": "PSE payer email", - "example": "juan@example.com" - }, - "bank_code": { - "type": [ - "string", - "null" - ], - "description": "PSE payer bank code", - "example": "1007" - } - }, - "required": [ - "payment_link", - "fid", - "full_name", - "tax_id", - "document_type", - "phone", - "email" - ] - }, - "transfers_instruction": { - "type": [ - "object", - "null" - ], - "properties": { - "account": { - "type": "string", - "description": "CVU/CBU/Alias account number", - "example": "0000003100012389237485" - }, - "type": { - "type": "string", - "enum": [ - "CVU", - "CBU", - "ALIAS" - ], - "description": "Account type (CVU, CBU, or ALIAS)", - "example": "CVU" - }, - "tax_id": { - "type": [ - "string", - "null" - ], - "description": "CUIT/CUIL (normalized, digits only)", - "example": "20123456783" - } - }, - "required": [ - "account", - "type" - ] - }, - "ted_instruction": { - "type": [ - "object", - "null" - ], - "properties": { - "beneficiary_name": { - "type": "string", - "example": "Blind Pay, Inc." - }, - "tax_id": { - "type": "string", - "example": "57.599.376/0001-81" - }, - "bank_code": { - "type": "string", - "example": "665" - }, - "bank_name": { - "type": "string", - "example": "STARK BANK S.A." - }, - "branch_code": { - "type": "string", - "example": "5340" - }, - "account_number": { - "type": "string", - "example": "01011707084-8" - }, - "account_type": { - "type": "string", - "example": "checking" - } - }, - "required": [ - "beneficiary_name", - "tax_id", - "bank_code", - "bank_name", - "branch_code", - "account_number", - "account_type" - ] - } - }, - "required": [ - "step" - ] - }, - "billing_fee_amount": { - "type": [ - "number", - "null" - ], - "description": "Billing fee in cents (charged at the end of the month)", - "example": 50 - }, - "transaction_fee_amount": { - "type": [ - "number", - "null" - ], - "description": "Transaction fee in cents (percentage-based fee)", - "example": 100 - }, - "blindpay_bank_details": { - "type": "object", - "properties": { - "routing_number": { - "type": "string", - "default": "121145349", - "example": "121145349" - }, - "account_number": { - "type": "string", - "default": "621327727210181", - "example": "621327727210181" - }, - "account_type": { - "type": "string", - "default": "Business checking", - "example": "Business checking" - }, - "swift_bic_code": { - "type": [ - "string", - "null" - ], - "default": "CHASUS33", - "example": "CHASUS33" - }, - "ach": { - "type": [ - "object", - "null" - ], - "properties": { - "routing_number": { - "type": "string", - "example": "123456789" - }, - "account_number": { - "type": "string", - "example": "123456789" - } - }, - "required": [ - "routing_number", - "account_number" - ] - }, - "wire": { - "type": [ - "object", - "null" - ], - "properties": { - "routing_number": { - "type": "string", - "example": "123456789" - }, - "account_number": { - "type": "string", - "example": "123456789" - } - }, - "required": [ - "routing_number", - "account_number" - ] - }, - "rtp": { - "type": [ - "object", - "null" - ], - "properties": { - "routing_number": { - "type": "string", - "example": "123456789" - }, - "account_number": { - "type": "string", - "example": "123456789" - } - }, - "required": [ - "routing_number", - "account_number" - ] - }, - "beneficiary": { - "type": "object", - "properties": { - "name": { - "type": "string", - "default": "BlindPay, Inc.", - "example": "BlindPay, Inc." - }, - "address_line_1": { - "type": "string", - "default": "8 The Green, #19364", - "example": "8 The Green, #19364" - }, - "address_line_2": { - "type": "string", - "default": "Dover, DE 19901", - "example": "Dover, DE 19901" - } - } - }, - "receiving_bank": { - "type": "object", - "properties": { - "name": { - "type": "string", - "default": "CFSB", - "example": "CFSB" - }, - "address_line_1": { - "type": "string", - "default": "1 Letterman Drive, Building A, Suite A4-700", - "example": "1 Letterman Drive, Building A, Suite A4-700" - }, - "address_line_2": { - "type": "string", - "default": "San Francisco, CA 94129", - "example": "San Francisco, CA 94129" - } - } - }, - "swift_account_number": { - "type": [ - "string", - "null" - ], - "example": "GB50TCCL04140449730892" - }, - "swift_receiving_bank": { - "type": [ - "object", - "null" - ], - "properties": { - "name": { - "type": [ - "string", - "null" - ], - "example": "JPMorgan Chase" - }, - "address_line_1": { - "type": [ - "string", - "null" - ], - "example": "270 Park Ave" - }, - "address_line_2": { - "type": [ - "string", - "null" - ], - "example": "New York, NY, 10017-2070" - } - } - } - }, - "required": [ - "beneficiary", - "receiving_bank" - ] - }, - "customer_id": { - "type": [ - "string", - "null" - ], - "minLength": 15, - "maxLength": 15, - "example": "re_000000000000" - }, - "receiver_amount": { - "type": [ - "number", - "null" - ], - "description": "10.10 USDC", - "example": 1010 - }, - "payment_method": { - "type": [ - "string", - "null" - ], - "enum": [ - "ach", - "wire", - "pix", - "ted", - "spei", - "transfers", - "pse", - "international_swift", - "rtp" - ], - "example": "pix" - }, - "sender_amount": { - "type": [ - "number", - "null" - ], - "description": "52.40 BRL needs to be sent in a pix transfer", - "example": 5240 - } - }, - "required": [ - "id", - "status", - "tracking_complete", - "tracking_payment", - "tracking_transaction", - "blindpay_bank_details" - ] - }, - "CreatePayinIn": { - "type": "object", - "properties": { - "payin_quote_id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "pq_000000000000" - } - }, - "required": [ - "payin_quote_id" - ] - }, - "CreatePayinQuoteOut": { - "type": "object", - "properties": { - "id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "qu_000000000000" - }, - "expires_at": { - "type": [ - "number", - "null" - ], - "description": "Epoch unix timestamp that represents the final datetime to transaction be received on blockchain", - "example": 1712958191 - }, - "commercial_quotation": { - "type": [ - "number", - "null" - ], - "description": "1 USD = 4.95 BRL", - "example": 495 - }, - "blindpay_quotation": { - "type": [ - "number", - "null" - ], - "description": "1 USD = 5.05 BRL (commercial quotation + (blindpay taxes))", - "example": 505 - }, - "receiver_amount": { - "type": [ - "number", - "null" - ], - "description": "10.10 USDC", - "example": 1010 - }, - "sender_amount": { - "type": [ - "number", - "null" - ], - "description": "52.40 BRL needs to be sent in a pix transfer", - "example": 5240 - }, - "partner_fee_amount": { - "type": [ - "number", - "null" - ], - "default": 0, - "description": "1.5 USDC", - "example": 150 - }, - "flat_fee": { - "type": [ - "number", - "null" - ], - "description": "0.5 USDC", - "example": 50 - }, - "billing_fee_amount": { - "type": [ - "number", - "null" - ], - "description": "Billing fee in cents (charged at the end of the month)", - "example": 50 - }, - "is_otc": { - "type": [ - "boolean", - "null" - ], - "description": "If true, the payin quote is for an OTC (Over the Counter) transaction", - "example": false - } - }, - "required": [ - "id", - "expires_at", - "commercial_quotation", - "blindpay_quotation", - "receiver_amount", - "sender_amount", - "flat_fee" - ] - }, - "CreatePayinQuoteIn": { - "type": "object", - "properties": { - "blockchain_wallet_id": { - "type": [ - "string", - "null" - ], - "minLength": 15, - "maxLength": 15, - "example": "bw_000000000000" - }, - "wallet_id": { - "type": [ - "string", - "null" - ], - "minLength": 15, - "maxLength": 15, - "example": "bl_000000000000" - }, - "currency_type": { - "type": "string", - "enum": [ - "sender", - "receiver" - ], - "description": "", - "example": "sender" - }, - "cover_fees": { - "type": [ - "boolean", - "null" - ], - "description": "If true, the sender will cover the fees. If false, the customer will cover the fees.", - "example": true - }, - "request_amount": { - "type": "integer", - "minimum": 500, - "description": "1000 represents 10.00, 2050 represents 20.50", - "example": 1000 - }, - "payment_method": { - "type": "string", - "enum": [ - "ach", - "wire", - "pix", - "ted", - "spei", - "transfers", - "pse", - "international_swift", - "rtp" - ], - "example": "pix" - }, - "token": { - "type": "string", - "enum": [ - "USDC", - "USDT", - "USDB" - ], - "example": "USDC" - }, - "partner_fee_id": { - "type": [ - "string", - "null" - ], - "minLength": 15, - "maxLength": 15, - "example": "pf_000000000000" - }, - "payer_rules": { - "type": [ - "object", - "null" - ], - "properties": { - "pix_allowed_tax_ids": { - "type": [ - "array", - "null" - ], - "items": { - "type": "string", - "example": "123.456.789-09" - } - }, - "transfers_allowed_tax_id": { - "type": [ - "string", - "null" - ], - "example": "20-12345678-3" - }, - "pse_allowed_tax_ids": { - "type": [ - "array", - "null" - ], - "items": { - "type": "string", - "example": "1234567890" - } - }, - "pse_full_name": { - "type": [ - "string", - "null" - ], - "maxLength": 50 - }, - "pse_document_type": { - "type": [ - "string", - "null" - ], - "enum": [ - "CC", - "NIT" - ] - }, - "pse_document_number": { - "type": [ - "string", - "null" - ] - }, - "pse_email": { - "type": [ - "string", - "null" - ], - "format": "email" - }, - "pse_phone": { - "type": [ - "string", - "null" - ], - "pattern": "^\\+573\\d{9}$" - }, - "pse_bank_code": { - "type": [ - "string", - "null" - ] - } - }, - "example": { - "pix_allowed_tax_ids": [ - "123.456.789-09" - ], - "transfers_allowed_tax_id": "20-12345678-3", - "pse_allowed_tax_ids": [ - "1234567890" - ] - } - }, - "is_otc": { - "type": [ - "boolean", - "null" - ], - "description": "If true, the payin quote is for an OTC (Over the Counter) transaction", - "example": false - } - }, - "required": [ - "currency_type", - "request_amount", - "payment_method", - "token" - ] - }, - "BillingSubscription": { - "type": "object", - "properties": { - "minimum_per_month": { - "type": "integer", - "description": "Minimum monthly billing amount in cents", - "example": 0 - }, - "subscription_plan": { - "type": [ - "string", - "null" - ], - "enum": [ - "Basic", - "Business", - "Enterprise" - ], - "description": "Subscription plan: Basic, Business, or Enterprise", - "example": "Basic" - }, - "subscription_price": { - "type": "integer", - "description": "Subscription price in cents", - "example": 24900 - }, - "started_at": { - "type": [ - "string", - "null" - ], - "format": "date-time", - "description": "When the subscription started", - "example": "2025-01-01T00:00:00.000Z" - }, - "invoice_due_date_days": { - "type": "integer", - "description": "Days after period end when invoice is due", - "example": 15 - }, - "status": { - "type": "string", - "enum": [ - "active", - "pending_payment", - "past_due", - "cancelled" - ], - "description": "Subscription billing status: active (no issues), overdue (invoice past due), pending (awaiting payment)", - "example": "active" - }, - "billing_charge": { - "type": [ - "boolean", - "null" - ], - "description": "If true, fees are charged via monthly invoice instead of at transaction time", - "example": false - } - }, - "required": [ - "minimum_per_month", - "subscription_price", - "invoice_due_date_days", - "status" - ] - }, - "BillingDetails": { - "type": "object", - "properties": { - "name": { - "type": "string", - "example": "Blind Pay, Inc." - }, - "email": { - "anyOf": [ - { - "type": "string", - "format": "email" - }, - { - "type": "string", - "enum": [ - "" - ] - } - ], - "example": "billing@blindpay.com" - }, - "tax_id": { - "type": "string", - "example": "123456789" - }, - "address_line_1": { - "type": "string", - "example": "8 The Green, #19364" - }, - "address_line_2": { - "type": "string", - "example": "Suite 200" - }, - "city": { - "type": "string", - "example": "Dover" - }, - "state_province_region": { - "type": "string", - "example": "DE" - }, - "postal_code": { - "type": "string", - "example": "19901" - }, - "country": { - "type": "string", - "example": "United States" - }, - "copy_emails": { - "type": "array", - "items": { - "type": "string", - "format": "email" - }, - "default": [], - "description": "Optional CC emails for billing communications", - "example": [ - "finance@example.com" - ] - } - }, - "required": [ - "name", - "email", - "tax_id", - "address_line_1", - "address_line_2", - "city", - "state_province_region", - "postal_code", - "country" - ] - }, - "VirtualAccountsUsage": { - "type": "object", - "properties": { - "count": { - "type": "integer", - "description": "Number of active virtual accounts", - "example": 100 - }, - "unit_cost": { - "type": "integer", - "description": "Cost per virtual account in cents", - "example": 1500 - }, - "total": { - "type": "integer", - "description": "Total virtual account fees in cents", - "example": 150000 - } - }, - "required": [ - "count", - "unit_cost", - "total" - ] - }, - "AddonItemSchema": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "Recurring item or invoice item ID", - "example": "ri_000000000000" - }, - "name": { - "type": "string", - "description": "Addon name", - "example": "Swift" - }, - "description": { - "type": [ - "string", - "null" - ], - "description": "Addon description", - "example": "Swift" - }, - "amount": { - "type": "integer", - "description": "Addon amount in cents", - "example": 50000 - }, - "quantity": { - "type": "integer", - "description": "Addon quantity", - "example": 1 - } - }, - "required": [ - "id", - "name", - "amount", - "quantity" - ] - }, - "CurrentUsageSchema": { - "type": "object", - "properties": { - "period_start": { - "type": "string", - "format": "date-time", - "description": "Start of billing period", - "example": "2025-12-01T00:00:00.000Z" - }, - "period_end": { - "type": "string", - "format": "date-time", - "description": "End of billing period", - "example": "2025-12-31T23:59:59.999Z" - }, - "due_date": { - "type": [ - "string", - "null" - ], - "format": "date-time", - "description": "Expected due date when invoice is generated (null for partner-fee-only invoices)", - "example": "2025-01-21T00:00:00.000Z" - }, - "minimum_monthly_amount": { - "type": "integer", - "description": "Minimum monthly amount in cents", - "example": 200000 - }, - "subscription_plan": { - "type": [ - "string", - "null" - ], - "enum": [ - "Basic", - "Business", - "Enterprise" - ], - "description": "Subscription plan: Basic, Business, or Enterprise", - "example": "Basic" - }, - "subscription_plan_amount": { - "type": "integer", - "description": "Subscription plan amount in cents", - "example": 24900 - }, - "virtual_accounts": { - "$ref": "#/components/schemas/VirtualAccountsUsage" - }, - "virtual_account_fees": { - "type": "integer", - "description": "Virtual account fees in cents", - "example": 10000 - }, - "payin_billing_fees": { - "type": "integer", - "description": "Payin billing fees in cents", - "example": 10000 - }, - "payin_partner_fees": { - "type": "integer", - "description": "Payin partner fees in cents (earnings)", - "example": 25000 - }, - "payout_billing_fees": { - "type": "integer", - "description": "Payout billing fees in cents", - "example": 10000 - }, - "payout_partner_fees": { - "type": "integer", - "description": "Payout partner fees in cents (earnings)", - "example": 25000 - }, - "total_to_pay": { - "type": "integer", - "description": "Total amount owed to Blindpay in cents", - "example": 40000 - }, - "total_to_collect": { - "type": "integer", - "description": "Total partner fees to collect (earnings) in cents", - "example": 50000 - }, - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AddonItemSchema" - }, - "description": "Recurring addon items due for the current period" - } - }, - "required": [ - "period_start", - "period_end", - "due_date", - "minimum_monthly_amount", - "subscription_plan_amount", - "virtual_accounts", - "virtual_account_fees", - "payin_billing_fees", - "payin_partner_fees", - "payout_billing_fees", - "payout_partner_fees", - "total_to_pay", - "total_to_collect", - "items" - ] - }, - "InvoiceItemSchema": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "Invoice ID", - "example": "iv_000000000000" - }, - "period_start": { - "type": "string", - "format": "date-time", - "description": "Start of billing period", - "example": "2025-11-01T00:00:00.000Z" - }, - "period_end": { - "type": "string", - "format": "date-time", - "description": "End of billing period", - "example": "2025-11-30T23:59:59.999Z" - }, - "due_date": { - "type": [ - "string", - "null" - ], - "format": "date-time", - "description": "Invoice due date (null for partner-fee-only invoices)", - "example": "2025-11-21T00:00:00.000Z" - }, - "status": { - "type": "string", - "enum": [ - "owing", - "paid", - "claimable", - "collected", - "expired", - "overdue" - ], - "description": "Invoice status: owing (unpaid), paid (payment received), claimable (has partner fees to claim), collected (partner fees claimed), expired (voided), overdue (past due date)", - "example": "paid" - }, - "virtual_account_fees": { - "type": "integer", - "description": "Virtual account fees in cents", - "example": 10000 - }, - "payin_billing_fees": { - "type": "integer", - "description": "Payin billing fees in cents", - "example": 10000 - }, - "payin_partner_fees": { - "type": "integer", - "description": "Payin partner fees in cents (earnings)", - "example": 25000 - }, - "payout_billing_fees": { - "type": "integer", - "description": "Payout billing fees in cents", - "example": 10000 - }, - "payout_partner_fees": { - "type": "integer", - "description": "Payout partner fees in cents (earnings)", - "example": 25000 - }, - "total_to_pay": { - "type": "integer", - "description": "Total amount owed to Blindpay in cents", - "example": 40000 - }, - "total_to_collect": { - "type": "integer", - "description": "Total partner fees to collect (earnings) in cents", - "example": 50000 - }, - "discount": { - "type": "integer", - "description": "Discount amount in cents from Stripe coupon", - "example": 0 - }, - "reference": { - "type": [ - "string", - "null" - ], - "description": "Invoice reference (billing period month/year)", - "example": "01/2026" - }, - "url": { - "type": "string", - "description": "Invoice URL", - "example": "https://example.com" - }, - "payment_id": { - "type": [ - "string", - "null" - ], - "description": "Reference to invoice_payment record", - "example": "ip_000000000000" - }, - "collection_id": { - "type": [ - "string", - "null" - ], - "description": "Reference to invoice_collection record", - "example": "ic_000000000000" - }, - "has_partner_fee_invoice": { - "type": "boolean", - "description": "Whether a partner fee collection invoice PDF is available", - "example": false - }, - "minimum_per_month": { - "type": "integer", - "description": "Minimum monthly amount in cents at time of invoice", - "example": 200000 - }, - "subscription_plan": { - "type": [ - "string", - "null" - ], - "enum": [ - "Basic", - "Business", - "Enterprise" - ], - "description": "Subscription plan used", - "example": "Basic" - }, - "subscription_price": { - "type": "integer", - "description": "Subscription price in cents used", - "example": 24900 - } - }, - "required": [ - "id", - "period_start", - "period_end", - "due_date", - "status", - "virtual_account_fees", - "payin_billing_fees", - "payin_partner_fees", - "payout_billing_fees", - "payout_partner_fees", - "total_to_pay", - "total_to_collect", - "discount", - "url", - "has_partner_fee_invoice", - "minimum_per_month", - "subscription_price" - ] - }, - "GetInvoicesSchemaOut": { - "type": "object", - "properties": { - "current": { - "$ref": "#/components/schemas/CurrentUsageSchema" - }, - "invoices": { - "type": "array", - "items": { - "$ref": "#/components/schemas/InvoiceItemSchema" - } - } - }, - "required": [ - "current", - "invoices" - ] - }, - "GetInvoiceSchemaOut": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "Invoice ID", - "example": "iv_000000000000" - }, - "status": { - "type": "string", - "enum": [ - "owing", - "paid", - "claimable", - "collected", - "expired", - "overdue" - ], - "description": "Invoice status: owing (unpaid), paid (payment received), claimable (has partner fees to claim), collected (partner fees claimed), expired (voided), overdue (past due date)", - "example": "paid" - }, - "period_start": { - "type": "string", - "format": "date-time", - "description": "Start of billing period", - "example": "2025-11-01T00:00:00.000Z" - }, - "period_end": { - "type": "string", - "format": "date-time", - "description": "End of billing period", - "example": "2025-11-30T23:59:59.999Z" - }, - "due_date": { - "type": [ - "string", - "null" - ], - "format": "date-time", - "description": "Invoice due date (null for partner-fee-only invoices)", - "example": "2025-11-21T00:00:00.000Z" - }, - "virtual_account_fees": { - "type": "integer", - "description": "Virtual account fees in cents", - "example": 10000 - }, - "payin_billing_fees": { - "type": "integer", - "description": "Payin billing fees in cents", - "example": 10000 - }, - "payin_partner_fees": { - "type": "integer", - "description": "Payin partner fees in cents (earnings)", - "example": 25000 - }, - "payout_billing_fees": { - "type": "integer", - "description": "Payout billing fees in cents", - "example": 10000 - }, - "payout_partner_fees": { - "type": "integer", - "description": "Payout partner fees in cents (earnings)", - "example": 25000 - }, - "total_to_pay": { - "type": "integer", - "description": "Total amount owed to Blindpay in cents", - "example": 40000 - }, - "total_to_collect": { - "type": "integer", - "description": "Total partner fees to collect (earnings) in cents", - "example": 50000 - }, - "discount": { - "type": "integer", - "description": "Discount amount in cents from Stripe coupon", - "example": 0 - }, - "credit_note_amount": { - "type": "integer", - "description": "Credit note amount in cents", - "example": 0 - }, - "url": { - "type": "string", - "description": "Invoice URL", - "example": "https://example.com" - }, - "payment_id": { - "type": [ - "string", - "null" - ], - "description": "Reference to invoice payment record", - "example": "ip_000000000000" - }, - "collection_id": { - "type": [ - "string", - "null" - ], - "description": "Reference to invoice collection record", - "example": "ic_000000000000" - }, - "has_partner_fee_invoice": { - "type": "boolean", - "description": "Whether a partner fee collection invoice PDF is available", - "example": false - }, - "minimum_per_month": { - "type": "integer", - "description": "Minimum monthly amount in cents", - "example": 200000 - }, - "subscription_plan": { - "type": [ - "string", - "null" - ], - "enum": [ - "Basic", - "Business", - "Enterprise" - ], - "description": "Subscription plan: Basic, Business, or Enterprise", - "example": "Basic" - }, - "subscription_price": { - "type": "integer", - "description": "Subscription price in cents", - "example": 24900 - }, - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AddonItemSchema" - }, - "description": "Addon items" - } - }, - "required": [ - "id", - "status", - "period_start", - "period_end", - "due_date", - "virtual_account_fees", - "payin_billing_fees", - "payin_partner_fees", - "payout_billing_fees", - "payout_partner_fees", - "total_to_pay", - "total_to_collect", - "discount", - "credit_note_amount", - "url", - "has_partner_fee_invoice", - "minimum_per_month", - "subscription_price", - "items" - ] - }, - "GetInvoicePdfSchemaOut": { - "type": "object", - "properties": { - "url": { - "type": "string", - "description": "Signed URL to the partner fee invoice PDF (expires in 15 minutes)", - "example": "https://invoices-bucket.s3.us-east-1.amazonaws.com/signed-url..." - } - }, - "required": [ - "url" - ] - }, - "PayInvoiceSchemaOut": { - "type": "object", - "properties": { - "amount": { - "type": "integer", - "description": "Amount to pay in cents (USD)", - "example": 40000 - }, - "tron_wallet": { - "type": "string", - "description": "Tron wallet address to send USDT to", - "example": "TXYZabcd1234567890" - }, - "solana_wallet": { - "type": "string", - "description": "Solana wallet address to send USDC to", - "example": "Sol1abc123def456" - } - }, - "required": [ - "amount", - "tron_wallet", - "solana_wallet" - ] - }, - "CollectInvoiceSchemaOut": { - "type": "object", - "properties": { - "collection_id": { - "type": "string", - "description": "Invoice collection record ID", - "example": "ic_000000000000" - }, - "status": { - "type": "string", - "enum": [ - "pending", - "processing", - "completed", - "failed" - ], - "example": "pending" - }, - "amount": { - "type": "integer", - "description": "Amount to collect in cents", - "example": 50000 - }, - "network": { - "type": "string", - "example": "polygon" - }, - "token": { - "type": "string", - "example": "USDC" - }, - "wallet_address": { - "type": "string", - "example": "0x1234567890abcdef1234567890abcdef12345678" - } - }, - "required": [ - "collection_id", - "status", - "amount", - "network", - "token", - "wallet_address" - ] - }, - "CollectInvoiceBody": { - "type": "object", - "properties": { - "network": { - "type": "string", - "enum": [ - "polygon", - "base", - "arbitrum", - "ethereum", - "tron", - "solana", - "stellar" - ], - "description": "Blockchain network for collection", - "example": "polygon" - }, - "token": { - "type": "string", - "enum": [ - "USDC", - "USDT" - ], - "description": "Token to collect", - "example": "USDC" - }, - "wallet_address": { - "type": "string", - "description": "Wallet address to receive partner fees", - "example": "0x1234567890abcdef1234567890abcdef12345678" - } - }, - "required": [ - "network", - "token", - "wallet_address" - ] - }, - "CreatePortalSessionSchemaOut": { - "type": "object", - "properties": { - "url": { - "type": "string", - "format": "uri", - "description": "Stripe Customer Portal session URL", - "example": "https://billing.stripe.com/p/session/test_xxx" - } - }, - "required": [ - "url" - ] - }, - "PaymentMethodSchemaOut": { - "type": "object", - "properties": { - "type": { - "type": [ - "string", - "null" - ], - "enum": [ - "card", - "us_bank_account" - ], - "description": "Payment method type: card or us_bank_account", - "example": "card" - }, - "brand": { - "type": [ - "string", - "null" - ], - "description": "Card brand (visa, mastercard, amex, etc)", - "example": "visa" - }, - "last4": { - "type": [ - "string", - "null" - ], - "description": "Last 4 digits of card number or bank account", - "example": "4242" - }, - "exp_month": { - "type": [ - "number", - "null" - ], - "description": "Card expiration month (1-12)", - "example": 12 - }, - "exp_year": { - "type": [ - "number", - "null" - ], - "description": "Card expiration year", - "example": 2025 - }, - "bank_name": { - "type": [ - "string", - "null" - ], - "description": "Bank name for us_bank_account type", - "example": "Chase" - }, - "account_type": { - "type": [ - "string", - "null" - ], - "description": "Bank account type: checking or savings", - "example": "checking" - }, - "created_at": { - "type": [ - "string", - "null" - ], - "description": "ISO timestamp when payment method was added", - "example": "2024-12-27T00:00:00.000Z" - } - }, - "required": [ - "type", - "brand", - "last4", - "exp_month", - "exp_year", - "bank_name", - "account_type", - "created_at" - ] - }, - "TransferOut": { - "type": "object", - "properties": { - "id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "bl_000000000000" - }, - "status": { - "type": "string", - "enum": [ - "processing", - "failed", - "refunded", - "completed" - ], - "description": "Transfer general status", - "example": "processing" - }, - "transfer_quote_id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "pq_000000000000" - }, - "instance_id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "in_000000000000" - }, - "tracking_transaction_monitoring": { - "type": "object", - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Transaction monitoring step", - "example": "processing" - }, - "blockchain_screening": { - "type": [ - "number", - "null" - ], - "minimum": 0, - "maximum": 100, - "description": "Blindpay screening step", - "example": 1 - }, - "risk_score": { - "type": [ - "number", - "null" - ], - "minimum": 0, - "maximum": 100, - "description": "Risk score", - "example": 1 - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Transfer transaction completed date", - "example": "2011-10-05T14:48:00.000Z" - } - }, - "required": [ - "step" - ] - }, - "tracking_paymaster": { - "type": "object", - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Complete step", - "example": "on_hold" - }, - "transaction_hash": { - "type": [ - "string", - "null" - ], - "description": "Complete transaction hash", - "example": "0x123...890" - }, - "gas_fee": { - "type": [ - "string", - "null" - ], - "description": "Gas fee related to transaction", - "example": "100" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Complete completed date", - "example": "2011-10-05T14:48:00.000Z" - }, - "error_message": { - "type": [ - "string", - "null" - ], - "example": "Gas fee is too low" - } - }, - "required": [ - "step" - ] - }, - "tracking_bridge_swap": { - "type": "object", - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Complete step", - "example": "on_hold" - }, - "transaction_hash": { - "type": [ - "string", - "null" - ], - "description": "Complete transaction hash", - "example": "0x123...890" - }, - "gas_fee": { - "type": [ - "string", - "null" - ], - "description": "Gas fee related to transaction", - "example": "100" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Complete completed date", - "example": "2011-10-05T14:48:00.000Z" - }, - "error_message": { - "type": [ - "string", - "null" - ], - "example": "Gas fee is too low" - } - }, - "required": [ - "step" - ] - }, - "tracking_complete": { - "type": "object", - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Complete step", - "example": "on_hold" - }, - "transaction_hash": { - "type": [ - "string", - "null" - ], - "description": "Complete transaction hash", - "example": "0x123...890" - }, - "gas_fee": { - "type": [ - "string", - "null" - ], - "description": "Gas fee related to transaction", - "example": "100" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Complete completed date", - "example": "2011-10-05T14:48:00.000Z" - }, - "error_message": { - "type": [ - "string", - "null" - ], - "example": "Gas fee is too low" - } - }, - "required": [ - "step" - ] - }, - "created_at": { - "example": "2021-01-01T00:00:00Z" - }, - "updated_at": { - "example": "2021-01-01T00:00:00Z" - }, - "image_url": { - "type": [ - "string", - "null" - ], - "format": "uri", - "example": "https://example.com/image.png" - }, - "first_name": { - "type": [ - "string", - "null" - ], - "example": "John" - }, - "last_name": { - "type": [ - "string", - "null" - ], - "example": "Doe" - }, - "legal_name": { - "type": [ - "string", - "null" - ], - "example": "Company Name Inc." - }, - "wallet_id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "bl_000000000000" - }, - "sender_token": { - "type": "string", - "enum": [ - "USDC", - "USDT", - "USDB" - ], - "example": "USDC" - }, - "sender_amount": { - "type": "number", - "description": "52.40 BRL needs to be sent in a pix transfer", - "example": 5240 - }, - "receiver_amount": { - "type": "number", - "description": "10.10 USDC", - "example": 1010 - }, - "customer_network": { - "type": "string", - "enum": [ - "base", - "sepolia", - "arbitrum_sepolia", - "base_sepolia", - "arbitrum", - "polygon", - "polygon_amoy", - "ethereum", - "stellar", - "stellar_testnet", - "tron", - "solana", - "solana_devnet" - ], - "example": "polygon" - }, - "customer_token": { - "type": "string", - "enum": [ - "USDC", - "USDT", - "USDB" - ], - "example": "USDC" - }, - "customer_wallet_address": { - "type": "string", - "minLength": 32, - "maxLength": 64, - "example": "0xDD6a3aD0949396e57C7738ba8FC1A46A5a1C372C" - }, - "partner_fee_amount": { - "type": [ - "number", - "null" - ], - "default": 0, - "description": "1.5 USDC", - "example": 150 - }, - "external_id": { - "type": [ - "string", - "null" - ], - "maxLength": 255, - "example": "your-database-id" - }, - "customer_id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "re_000000000000" - }, - "address": { - "type": [ - "string", - "null" - ], - "maxLength": 64, - "example": "0xDD6a3aD0949396e57C7738ba8FC1A46A5a1C372C" - }, - "network": { - "type": "string", - "enum": [ - "base", - "sepolia", - "arbitrum_sepolia", - "base_sepolia", - "arbitrum", - "polygon", - "polygon_amoy", - "ethereum", - "stellar", - "stellar_testnet", - "tron", - "solana", - "solana_devnet" - ], - "example": "polygon" - } - }, - "required": [ - "id", - "status", - "transfer_quote_id", - "instance_id", - "tracking_transaction_monitoring", - "tracking_paymaster", - "tracking_bridge_swap", - "tracking_complete", - "wallet_id", - "sender_token", - "sender_amount", - "receiver_amount", - "customer_network", - "customer_token", - "customer_wallet_address", - "customer_id", - "network" - ] - }, - "CreateTransferOut": { - "type": "object", - "properties": { - "id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "pa_000000000000" - }, - "status": { - "type": "string", - "enum": [ - "processing", - "failed", - "refunded", - "completed" - ], - "description": "Transfer general status", - "example": "processing" - }, - "tracking_bridge_swap": { - "type": "object", - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Complete step", - "example": "on_hold" - }, - "transaction_hash": { - "type": [ - "string", - "null" - ], - "description": "Complete transaction hash", - "example": "0x123...890" - }, - "gas_fee": { - "type": [ - "string", - "null" - ], - "description": "Gas fee related to transaction", - "example": "100" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Complete completed date", - "example": "2011-10-05T14:48:00.000Z" - }, - "error_message": { - "type": [ - "string", - "null" - ], - "example": "Gas fee is too low" - } - }, - "required": [ - "step" - ] - }, - "tracking_complete": { - "type": "object", - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Complete step", - "example": "on_hold" - }, - "transaction_hash": { - "type": [ - "string", - "null" - ], - "description": "Complete transaction hash", - "example": "0x123...890" - }, - "gas_fee": { - "type": [ - "string", - "null" - ], - "description": "Gas fee related to transaction", - "example": "100" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Complete completed date", - "example": "2011-10-05T14:48:00.000Z" - }, - "error_message": { - "type": [ - "string", - "null" - ], - "example": "Gas fee is too low" - } - }, - "required": [ - "step" - ] - }, - "tracking_paymaster": { - "type": "object", - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Complete step", - "example": "on_hold" - }, - "transaction_hash": { - "type": [ - "string", - "null" - ], - "description": "Complete transaction hash", - "example": "0x123...890" - }, - "gas_fee": { - "type": [ - "string", - "null" - ], - "description": "Gas fee related to transaction", - "example": "100" - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Complete completed date", - "example": "2011-10-05T14:48:00.000Z" - }, - "error_message": { - "type": [ - "string", - "null" - ], - "example": "Gas fee is too low" - } - }, - "required": [ - "step" - ] - }, - "tracking_transaction_monitoring": { - "type": "object", - "properties": { - "step": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "description": "Transaction monitoring step", - "example": "processing" - }, - "blockchain_screening": { - "type": [ - "number", - "null" - ], - "minimum": 0, - "maximum": 100, - "description": "Blindpay screening step", - "example": 1 - }, - "risk_score": { - "type": [ - "number", - "null" - ], - "minimum": 0, - "maximum": 100, - "description": "Risk score", - "example": 1 - }, - "completed_at": { - "type": [ - "string", - "null" - ], - "description": "Transfer transaction completed date", - "example": "2011-10-05T14:48:00.000Z" - } - }, - "required": [ - "step" - ] - } - }, - "required": [ - "id", - "status", - "tracking_bridge_swap", - "tracking_complete", - "tracking_paymaster", - "tracking_transaction_monitoring" - ] - }, - "CreateTransferIn": { - "type": "object", - "properties": { - "transfer_quote_id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "pq_000000000000" - } - }, - "required": [ - "transfer_quote_id" - ] - }, - "CreateTransferQuoteOut": { - "type": "object", - "properties": { - "id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "qu_000000000000" - }, - "expires_at": { - "type": [ - "number", - "null" - ], - "description": "Epoch unix timestamp that represents the final datetime to transaction be received on blockchain", - "example": 1712958191 - }, - "commercial_quotation": { - "type": [ - "number", - "null" - ], - "description": "1 USD = 4.95 BRL", - "example": 495 - }, - "blindpay_quotation": { - "type": [ - "number", - "null" - ], - "description": "1 USD = 5.05 BRL (commercial quotation + (blindpay taxes))", - "example": 505 - }, - "receiver_amount": { - "type": "number", - "description": "10.10 USDC", - "example": 1010 - }, - "sender_amount": { - "type": "number", - "description": "52.40 BRL needs to be sent in a pix transfer", - "example": 5240 - }, - "partner_fee_amount": { - "type": [ - "number", - "null" - ], - "default": 0, - "description": "1.5 USDC", - "example": 150 - }, - "flat_fee": { - "type": "number", - "description": "0.5 USDC", - "example": 50 - } - }, - "required": [ - "id", - "expires_at", - "commercial_quotation", - "blindpay_quotation", - "receiver_amount", - "sender_amount", - "flat_fee" - ] - }, - "CreateTransferQuoteIn": { - "type": "object", - "properties": { - "wallet_id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "bl_000000000000" - }, - "amount_reference": { - "type": "string", - "enum": [ - "sender", - "receiver" - ], - "description": "", - "example": "sender" - }, - "cover_fees": { - "type": [ - "boolean", - "null" - ], - "description": "If true, the sender will cover the fees. If false, the customer will cover the fees.", - "example": true - }, - "request_amount": { - "type": "integer", - "minimum": 1, - "description": "100 represents 1, 2050 represents 20.50", - "example": 1000 - }, - "sender_token": { - "type": "string", - "enum": [ - "USDC", - "USDT", - "USDB" - ], - "example": "USDC" - }, - "customer_wallet_address": { - "type": "string", - "minLength": 32, - "maxLength": 64, - "example": "0xDD6a3aD0949396e57C7738ba8FC1A46A5a1C372C" - }, - "customer_token": { - "type": "string", - "enum": [ - "USDC", - "USDT", - "USDB" - ], - "example": "USDC" - }, - "customer_network": { - "type": "string", - "enum": [ - "base", - "sepolia", - "arbitrum_sepolia", - "base_sepolia", - "arbitrum", - "polygon", - "polygon_amoy", - "ethereum", - "stellar", - "stellar_testnet", - "tron", - "solana", - "solana_devnet" - ], - "example": "polygon" - }, - "partner_fee_id": { - "type": [ - "string", - "null" - ], - "minLength": 15, - "maxLength": 15, - "example": "pf_000000000000" - } - }, - "required": [ - "wallet_id", - "amount_reference", - "request_amount", - "sender_token", - "customer_wallet_address", - "customer_token", - "customer_network" - ] - }, - "CustomerLimitIncreaseOut": { - "type": "object", - "properties": { - "id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "rl_000000000000" - } - }, - "required": [ - "id" - ] - }, - "CustomerLimitIncreaseIn": { - "type": "object", - "properties": { - "per_transaction": { - "type": [ - "integer", - "null" - ], - "maximum": 100000000000, - "example": 100000 - }, - "daily": { - "type": [ - "integer", - "null" - ], - "maximum": 100000000000, - "example": 200000 - }, - "monthly": { - "type": [ - "integer", - "null" - ], - "maximum": 100000000000, - "example": 1000000 - }, - "supporting_document_type": { - "type": "string", - "enum": [ - "individual_bank_statement", - "individual_tax_return", - "individual_proof_of_income", - "individual_pay_stub", - "individual_employment_letter", - "individual_investment_statement", - "individual_crypto_exchange_statement", - "individual_blockchain_wallet_statement", - "business_bank_statement", - "business_financial_statements", - "business_tax_return", - "business_contract", - "business_accounts_receivable", - "business_merchant_processor_statement", - "business_shareholder_loan" - ], - "example": "individual_bank_statement" - }, - "supporting_document_file": { - "type": "string", - "format": "uri", - "example": "https://example.com/document.pdf" - } - }, - "required": [ - "per_transaction", - "daily", - "monthly", - "supporting_document_type", - "supporting_document_file" - ] - }, - "GetCustomerLimitIncreaseOut": { - "type": "object", - "properties": { - "id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "rl_000000000000" - }, - "status": { - "type": "string", - "enum": [ - "in_review", - "approved", - "rejected" - ], - "example": "in_review" - }, - "per_transaction": { - "type": [ - "integer", - "null" - ], - "maximum": 100000000000, - "example": 100000 - }, - "daily": { - "type": [ - "integer", - "null" - ], - "maximum": 100000000000, - "example": 200000 - }, - "monthly": { - "type": [ - "integer", - "null" - ], - "maximum": 100000000000, - "example": 1000000 - }, - "approved_per_transaction": { - "type": [ - "integer", - "null" - ], - "maximum": 100000000000, - "example": 70000 - }, - "approved_daily": { - "type": [ - "integer", - "null" - ], - "maximum": 100000000000, - "example": 140000 - }, - "approved_monthly": { - "type": [ - "integer", - "null" - ], - "maximum": 100000000000, - "example": 700000 - }, - "supporting_document_type": { - "type": [ - "string", - "null" - ], - "enum": [ - "individual_bank_statement", - "individual_tax_return", - "individual_proof_of_income", - "individual_pay_stub", - "individual_employment_letter", - "individual_investment_statement", - "individual_crypto_exchange_statement", - "individual_blockchain_wallet_statement", - "business_bank_statement", - "business_financial_statements", - "business_tax_return", - "business_contract", - "business_accounts_receivable", - "business_merchant_processor_statement", - "business_shareholder_loan" - ], - "example": "individual_bank_statement" - }, - "supporting_document_file": { - "type": [ - "string", - "null" - ], - "format": "uri", - "example": "https://example.com/document.pdf" - }, - "customer_id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "re_000000000000" - }, - "created_at": { - "example": "2021-01-01T00:00:00Z" - }, - "updated_at": { - "example": "2021-01-01T00:00:00Z" - } - }, - "required": [ - "id", - "status", - "customer_id" - ] - }, - "OfframpWallet": { - "type": "object", - "properties": { - "id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "ow_000000000000" - }, - "external_id": { - "type": [ - "string", - "null" - ], - "example": "your_external_id" - }, - "instance_id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "in_000000000000" - }, - "customer_id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "re_000000000000" - }, - "bank_account_id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "ba_000000000000" - }, - "circle_wallet_id": { - "type": [ - "string", - "null" - ], - "example": "01234567-abcd-efgh-ijkl-012345678901" - }, - "network": { - "type": "string", - "enum": [ - "tron", - "solana", - "solana_devnet", - "arbitrum", - "base", - "ethereum", - "polygon", - "sepolia", - "arbitrum_sepolia", - "base_sepolia", - "polygon_amoy" - ], - "example": "tron" - }, - "address": { - "type": "string", - "example": "TALJN9zTTEL9TVBb4WuTt6wLvPqJZr3hvb" - }, - "created_at": { - "example": "2021-01-01T00:00:00Z" - }, - "updated_at": { - "example": "2021-01-01T00:00:00Z" - } - }, - "required": [ - "id", - "instance_id", - "customer_id", - "bank_account_id", - "network", - "address" - ] - }, - "WalletOut": { - "type": "object", - "properties": { - "id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "bl_000000000000" - }, - "name": { - "type": "string", - "maxLength": 255, - "example": "Blindpay Wallet" - }, - "external_id": { - "type": [ - "string", - "null" - ], - "maxLength": 255, - "example": "your-database-id" - }, - "address": { - "type": [ - "string", - "null" - ], - "maxLength": 64, - "example": "0xDD6a3aD0949396e57C7738ba8FC1A46A5a1C372C" - }, - "network": { - "type": "string", - "enum": [ - "base", - "sepolia", - "arbitrum_sepolia", - "base_sepolia", - "arbitrum", - "polygon", - "polygon_amoy", - "ethereum", - "stellar", - "stellar_testnet", - "tron", - "solana", - "solana_devnet" - ], - "example": "polygon" - }, - "created_at": { - "example": "2021-01-01T00:00:00Z" - } - }, - "required": [ - "id", - "name", - "network" - ] - }, - "CreateWalletIn": { - "type": "object", - "properties": { - "network": { - "type": "string", - "enum": [ - "base", - "sepolia", - "arbitrum_sepolia", - "base_sepolia", - "arbitrum", - "polygon", - "polygon_amoy", - "ethereum", - "stellar", - "stellar_testnet", - "tron", - "solana", - "solana_devnet" - ], - "example": "polygon" - }, - "external_id": { - "type": [ - "string", - "null" - ], - "maxLength": 255, - "example": "your-database-id" - }, - "name": { - "type": "string", - "maxLength": 255, - "example": "Blindpay Wallet" - } - }, - "required": [ - "network", - "name" - ] - }, - "WalletBalanceOut": { - "type": "object", - "properties": { - "USDC": { - "$ref": "#/components/schemas/WalletTokenOut" - }, - "USDT": { - "$ref": "#/components/schemas/WalletTokenOut" - }, - "USDB": { - "$ref": "#/components/schemas/WalletTokenOut" - } - }, - "required": [ - "USDC", - "USDT", - "USDB" - ] - }, - "BlockchainWalletMessageOut": { - "type": "object", - "properties": { - "message": { - "type": "string" - } - }, - "required": [ - "message" - ] - }, - "BlockchainWalletOut": { - "type": "object", - "properties": { - "id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "bw_000000000000" - }, - "name": { - "type": [ - "string", - "null" - ], - "example": "Wallet Display Name" - }, - "network": { - "type": [ - "string", - "null" - ], - "enum": [ - "base", - "sepolia", - "arbitrum_sepolia", - "base_sepolia", - "arbitrum", - "polygon", - "polygon_amoy", - "ethereum", - "stellar", - "stellar_testnet", - "tron", - "solana", - "solana_devnet" - ], - "example": "polygon" - }, - "address": { - "type": [ - "string", - "null" - ], - "example": "0xDD6a3aD0949396e57C7738ba8FC1A46A5a1C372C" - }, - "signature_tx_hash": { - "type": [ - "string", - "null" - ], - "example": "0x3c499c542cef5e3811e1192ce70d8cc03d5c3359" - }, - "is_account_abstraction": { - "type": [ - "boolean", - "null" - ], - "example": false - }, - "customer_id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "re_000000000000" - } - }, - "required": [ - "id", - "name", - "network", - "customer_id" - ] - }, - "CreateBlockchainWalletIn": { - "type": "object", - "properties": { - "name": { - "type": "string", - "example": "Wallet Display Name" - }, - "network": { - "type": "string", - "enum": [ - "base", - "sepolia", - "arbitrum_sepolia", - "base_sepolia", - "arbitrum", - "polygon", - "polygon_amoy", - "ethereum", - "stellar", - "stellar_testnet", - "tron", - "solana", - "solana_devnet" - ], - "example": "polygon" - }, - "signature_tx_hash": { - "type": [ - "string", - "null" - ], - "example": "0x3c499c542cef5e3811e1192ce70d8cc03d5c3359" - }, - "address": { - "type": [ - "string", - "null" - ], - "example": "0xDD6a3aD0949396e57C7738ba8FC1A46A5a1C372C" - }, - "is_account_abstraction": { - "type": [ - "boolean", - "null" - ], - "example": false - } - }, - "required": [ - "name", - "network" - ] - }, - "BankAccountOut": { - "type": "object", - "properties": { - "id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "ba_000000000000" - }, - "type": { - "type": "string", - "enum": [ - "wire", - "ach", - "pix", - "pix_safe", - "ted", - "spei_bitso", - "transfers_bitso", - "ach_cop_bitso", - "international_swift", - "rtp", - "sepa" - ], - "example": "wire" - }, - "name": { - "type": "string", - "example": "Bank Account Name" - }, - "pix_key": { - "type": [ - "string", - "null" - ], - "example": "14947677768" - }, - "beneficiary_name": { - "type": [ - "string", - "null" - ], - "maxLength": 128, - "example": "Individual full name or business name" - }, - "routing_number": { - "type": [ - "string", - "null" - ], - "example": "012345678" - }, - "account_number": { - "type": [ - "string", - "null" - ], - "example": "1001001234" - }, - "account_type": { - "type": [ - "string", - "null" - ], - "enum": [ - "checking", - "saving" - ], - "example": "checking" - }, - "account_class": { - "type": [ - "string", - "null" - ], - "enum": [ - "individual", - "business" - ], - "example": "individual" - }, - "address_line_1": { - "type": [ - "string", - "null" - ], - "example": "Address line 1" - }, - "address_line_2": { - "type": [ - "string", - "null" - ], - "example": "Address line 2" - }, - "city": { - "type": [ - "string", - "null" - ], - "example": "City" - }, - "state_province_region": { - "type": [ - "string", - "null" - ], - "example": "State/Province/Region" - }, - "country": { - "type": [ - "string", - "null" - ], - "enum": [ - "AF", - "AL", - "DZ", - "AS", - "AD", - "AO", - "AI", - "AQ", - "AG", - "AR", - "AM", - "AW", - "AU", - "AT", - "AZ", - "BS", - "BH", - "BD", - "BB", - "BY", - "BE", - "BZ", - "BJ", - "BM", - "BT", - "BO", - "BQ", - "BA", - "BW", - "BV", - "BR", - "IO", - "BN", - "BG", - "BF", - "BI", - "CV", - "KH", - "CM", - "CA", - "KY", - "CF", - "TD", - "CL", - "CN", - "CX", - "CC", - "CO", - "KM", - "CD", - "CG", - "CK", - "CR", - "HR", - "CU", - "CW", - "CY", - "CZ", - "CI", - "DK", - "DJ", - "DM", - "DO", - "EC", - "EG", - "SV", - "GQ", - "ER", - "EE", - "SZ", - "ET", - "FK", - "FO", - "FJ", - "FI", - "FR", - "GF", - "PF", - "TF", - "GA", - "GM", - "GE", - "DE", - "GH", - "GI", - "GR", - "GL", - "GD", - "GP", - "GU", - "GT", - "GG", - "GN", - "GW", - "GY", - "HT", - "HM", - "VA", - "HN", - "HK", - "HU", - "IS", - "IN", - "ID", - "IR", - "IQ", - "IE", - "IM", - "IL", - "IT", - "JM", - "JP", - "JE", - "JO", - "KZ", - "KE", - "KI", - "KP", - "KR", - "KW", - "KG", - "LA", - "LV", - "LB", - "LS", - "LR", - "LY", - "LI", - "LT", - "LU", - "MO", - "MG", - "MW", - "MY", - "MV", - "ML", - "MT", - "MH", - "MQ", - "MR", - "MU", - "YT", - "MX", - "FM", - "MD", - "MC", - "MN", - "ME", - "MS", - "MA", - "MZ", - "MM", - "NA", - "NR", - "NP", - "NL", - "NC", - "NZ", - "NI", - "NE", - "NG", - "NU", - "NF", - "MP", - "NO", - "OM", - "PK", - "PW", - "PS", - "PA", - "PG", - "PY", - "PE", - "PH", - "PN", - "PL", - "PT", - "PR", - "QA", - "MK", - "RO", - "RU", - "RW", - "RE", - "BL", - "SH", - "KN", - "LC", - "MF", - "PM", - "VC", - "WS", - "SM", - "ST", - "SA", - "SN", - "RS", - "SC", - "SL", - "SG", - "SX", - "SK", - "SI", - "SB", - "SO", - "ZA", - "GS", - "SS", - "ES", - "LK", - "SD", - "SR", - "SJ", - "SE", - "CH", - "SY", - "TW", - "TJ", - "TZ", - "TH", - "TL", - "TG", - "TK", - "TO", - "TT", - "TN", - "TR", - "TM", - "TC", - "TV", - "UG", - "UA", - "AE", - "GB", - "UM", - "US", - "UY", - "UZ", - "VU", - "VE", - "VN", - "VG", - "VI", - "WF", - "EH", - "YE", - "ZM", - "ZW", - "AX" - ], - "example": "US" - }, - "postal_code": { - "type": [ - "string", - "null" - ], - "example": "Postal code" - }, - "spei_protocol": { - "type": [ - "string", - "null" - ], - "enum": [ - "clabe", - "debitcard", - "phonenum" - ], - "description": "For debitcard and phonenum the spei_institution_code is required", - "example": "clabe" - }, - "spei_institution_code": { - "type": [ - "string", - "null" - ], - "minLength": 5, - "maxLength": 5, - "example": "40002" - }, - "spei_clabe": { - "type": [ - "string", - "null" - ], - "example": "5482347403740546" - }, - "transfers_type": { - "type": [ - "string", - "null" - ], - "enum": [ - "CVU", - "CBU", - "ALIAS" - ], - "example": "CVU" - }, - "transfers_account": { - "type": [ - "string", - "null" - ], - "example": "BM123123123123" - }, - "ach_cop_beneficiary_first_name": { - "type": [ - "string", - "null" - ], - "example": "Fernando" - }, - "ach_cop_beneficiary_last_name": { - "type": [ - "string", - "null" - ], - "example": "Guzman Alarcón" - }, - "ach_cop_document_id": { - "type": [ - "string", - "null" - ], - "example": "1661105408" - }, - "ach_cop_document_type": { - "type": [ - "string", - "null" - ], - "enum": [ - "CC", - "CE", - "NIT", - "PASS", - "PEP" - ], - "description": "CC - Cédula de Ciudadanía; CE - Cédula de Extranjería; NIT - Número de Identificación Tributaria; PASS - Passport; PEP - Permiso Especial de Permanencia", - "example": "CC" - }, - "ach_cop_email": { - "type": [ - "string", - "null" - ], - "example": "fernando.guzman@gmail.com" - }, - "ach_cop_bank_code": { - "type": [ - "string", - "null" - ], - "example": "051" - }, - "ach_cop_bank_account": { - "type": [ - "string", - "null" - ], - "example": "12345678" - }, - "swift_code_bic": { - "type": [ - "string", - "null" - ], - "example": "123456789" - }, - "swift_account_holder_name": { - "type": [ - "string", - "null" - ], - "maxLength": 50, - "example": "John Doe" - }, - "swift_account_number_iban": { - "type": [ - "string", - "null" - ], - "example": "123456789" - }, - "swift_beneficiary_address_line_1": { - "type": [ - "string", - "null" - ], - "example": "123 MAIN STREET SUITE 100" - }, - "swift_beneficiary_address_line_2": { - "type": [ - "string", - "null" - ], - "example": "BUILDING A FLOOR 5" - }, - "swift_beneficiary_country": { - "type": [ - "string", - "null" - ], - "enum": [ - "AF", - "AL", - "DZ", - "AS", - "AD", - "AO", - "AI", - "AQ", - "AG", - "AR", - "AM", - "AW", - "AU", - "AT", - "AZ", - "BS", - "BH", - "BD", - "BB", - "BY", - "BE", - "BZ", - "BJ", - "BM", - "BT", - "BO", - "BQ", - "BA", - "BW", - "BV", - "BR", - "IO", - "BN", - "BG", - "BF", - "BI", - "CV", - "KH", - "CM", - "CA", - "KY", - "CF", - "TD", - "CL", - "CN", - "CX", - "CC", - "CO", - "KM", - "CD", - "CG", - "CK", - "CR", - "HR", - "CU", - "CW", - "CY", - "CZ", - "CI", - "DK", - "DJ", - "DM", - "DO", - "EC", - "EG", - "SV", - "GQ", - "ER", - "EE", - "SZ", - "ET", - "FK", - "FO", - "FJ", - "FI", - "FR", - "GF", - "PF", - "TF", - "GA", - "GM", - "GE", - "DE", - "GH", - "GI", - "GR", - "GL", - "GD", - "GP", - "GU", - "GT", - "GG", - "GN", - "GW", - "GY", - "HT", - "HM", - "VA", - "HN", - "HK", - "HU", - "IS", - "IN", - "ID", - "IR", - "IQ", - "IE", - "IM", - "IL", - "IT", - "JM", - "JP", - "JE", - "JO", - "KZ", - "KE", - "KI", - "KP", - "KR", - "KW", - "KG", - "LA", - "LV", - "LB", - "LS", - "LR", - "LY", - "LI", - "LT", - "LU", - "MO", - "MG", - "MW", - "MY", - "MV", - "ML", - "MT", - "MH", - "MQ", - "MR", - "MU", - "YT", - "MX", - "FM", - "MD", - "MC", - "MN", - "ME", - "MS", - "MA", - "MZ", - "MM", - "NA", - "NR", - "NP", - "NL", - "NC", - "NZ", - "NI", - "NE", - "NG", - "NU", - "NF", - "MP", - "NO", - "OM", - "PK", - "PW", - "PS", - "PA", - "PG", - "PY", - "PE", - "PH", - "PN", - "PL", - "PT", - "PR", - "QA", - "MK", - "RO", - "RU", - "RW", - "RE", - "BL", - "SH", - "KN", - "LC", - "MF", - "PM", - "VC", - "WS", - "SM", - "ST", - "SA", - "SN", - "RS", - "SC", - "SL", - "SG", - "SX", - "SK", - "SI", - "SB", - "SO", - "ZA", - "GS", - "SS", - "ES", - "LK", - "SD", - "SR", - "SJ", - "SE", - "CH", - "SY", - "TW", - "TJ", - "TZ", - "TH", - "TL", - "TG", - "TK", - "TO", - "TT", - "TN", - "TR", - "TM", - "TC", - "TV", - "UG", - "UA", - "AE", - "GB", - "UM", - "US", - "UY", - "UZ", - "VU", - "VE", - "VN", - "VG", - "VI", - "WF", - "EH", - "YE", - "ZM", - "ZW", - "AX" - ], - "example": "MX" - }, - "swift_beneficiary_city": { - "type": [ - "string", - "null" - ], - "example": "MEXICO CITY" - }, - "swift_beneficiary_state_province_region": { - "type": [ - "string", - "null" - ], - "example": "MX" - }, - "swift_beneficiary_postal_code": { - "type": [ - "string", - "null" - ], - "example": "11530" - }, - "swift_bank_name": { - "type": [ - "string", - "null" - ], - "example": "Banco Regional SA" - }, - "swift_bank_address_line_1": { - "type": [ - "string", - "null" - ], - "example": "123 Main Street, Suite 100, Downtown District, City Center CP 12345" - }, - "swift_bank_address_line_2": { - "type": [ - "string", - "null" - ], - "example": "456 Oak Avenue, Building 7, Financial District, Business Center CP 54321" - }, - "swift_bank_country": { - "type": [ - "string", - "null" - ], - "enum": [ - "AF", - "AL", - "DZ", - "AS", - "AD", - "AO", - "AI", - "AQ", - "AG", - "AR", - "AM", - "AW", - "AU", - "AT", - "AZ", - "BS", - "BH", - "BD", - "BB", - "BY", - "BE", - "BZ", - "BJ", - "BM", - "BT", - "BO", - "BQ", - "BA", - "BW", - "BV", - "BR", - "IO", - "BN", - "BG", - "BF", - "BI", - "CV", - "KH", - "CM", - "CA", - "KY", - "CF", - "TD", - "CL", - "CN", - "CX", - "CC", - "CO", - "KM", - "CD", - "CG", - "CK", - "CR", - "HR", - "CU", - "CW", - "CY", - "CZ", - "CI", - "DK", - "DJ", - "DM", - "DO", - "EC", - "EG", - "SV", - "GQ", - "ER", - "EE", - "SZ", - "ET", - "FK", - "FO", - "FJ", - "FI", - "FR", - "GF", - "PF", - "TF", - "GA", - "GM", - "GE", - "DE", - "GH", - "GI", - "GR", - "GL", - "GD", - "GP", - "GU", - "GT", - "GG", - "GN", - "GW", - "GY", - "HT", - "HM", - "VA", - "HN", - "HK", - "HU", - "IS", - "IN", - "ID", - "IR", - "IQ", - "IE", - "IM", - "IL", - "IT", - "JM", - "JP", - "JE", - "JO", - "KZ", - "KE", - "KI", - "KP", - "KR", - "KW", - "KG", - "LA", - "LV", - "LB", - "LS", - "LR", - "LY", - "LI", - "LT", - "LU", - "MO", - "MG", - "MW", - "MY", - "MV", - "ML", - "MT", - "MH", - "MQ", - "MR", - "MU", - "YT", - "MX", - "FM", - "MD", - "MC", - "MN", - "ME", - "MS", - "MA", - "MZ", - "MM", - "NA", - "NR", - "NP", - "NL", - "NC", - "NZ", - "NI", - "NE", - "NG", - "NU", - "NF", - "MP", - "NO", - "OM", - "PK", - "PW", - "PS", - "PA", - "PG", - "PY", - "PE", - "PH", - "PN", - "PL", - "PT", - "PR", - "QA", - "MK", - "RO", - "RU", - "RW", - "RE", - "BL", - "SH", - "KN", - "LC", - "MF", - "PM", - "VC", - "WS", - "SM", - "ST", - "SA", - "SN", - "RS", - "SC", - "SL", - "SG", - "SX", - "SK", - "SI", - "SB", - "SO", - "ZA", - "GS", - "SS", - "ES", - "LK", - "SD", - "SR", - "SJ", - "SE", - "CH", - "SY", - "TW", - "TJ", - "TZ", - "TH", - "TL", - "TG", - "TK", - "TO", - "TT", - "TN", - "TR", - "TM", - "TC", - "TV", - "UG", - "UA", - "AE", - "GB", - "UM", - "US", - "UY", - "UZ", - "VU", - "VE", - "VN", - "VG", - "VI", - "WF", - "EH", - "YE", - "ZM", - "ZW", - "AX" - ], - "example": "MX" - }, - "swift_bank_city": { - "type": [ - "string", - "null" - ], - "example": "City" - }, - "swift_bank_state_province_region": { - "type": [ - "string", - "null" - ], - "example": "District" - }, - "swift_bank_postal_code": { - "type": [ - "string", - "null" - ], - "example": "11530" - }, - "swift_ifsc_branch_code": { - "type": [ - "string", - "null" - ], - "pattern": "^[A-Z]{4}0[A-Z0-9]{6}$", - "example": "BARB0AHIMCI" - }, - "swift_intermediary_bank_swift_code_bic": { - "anyOf": [ - { - "type": "string", - "minLength": 8, - "maxLength": 8 - }, - { - "type": "string", - "minLength": 11, - "maxLength": 11 - }, - { - "type": "null" - } - ], - "example": "AEIBARB1" - }, - "swift_intermediary_bank_account_number_iban": { - "type": [ - "string", - "null" - ], - "maxLength": 34, - "example": "123456789" - }, - "swift_intermediary_bank_name": { - "type": [ - "string", - "null" - ], - "example": "Banco Regional SA" - }, - "swift_intermediary_bank_country": { - "type": [ - "string", - "null" - ], - "enum": [ - "AF", - "AL", - "DZ", - "AS", - "AD", - "AO", - "AI", - "AQ", - "AG", - "AR", - "AM", - "AW", - "AU", - "AT", - "AZ", - "BS", - "BH", - "BD", - "BB", - "BY", - "BE", - "BZ", - "BJ", - "BM", - "BT", - "BO", - "BQ", - "BA", - "BW", - "BV", - "BR", - "IO", - "BN", - "BG", - "BF", - "BI", - "CV", - "KH", - "CM", - "CA", - "KY", - "CF", - "TD", - "CL", - "CN", - "CX", - "CC", - "CO", - "KM", - "CD", - "CG", - "CK", - "CR", - "HR", - "CU", - "CW", - "CY", - "CZ", - "CI", - "DK", - "DJ", - "DM", - "DO", - "EC", - "EG", - "SV", - "GQ", - "ER", - "EE", - "SZ", - "ET", - "FK", - "FO", - "FJ", - "FI", - "FR", - "GF", - "PF", - "TF", - "GA", - "GM", - "GE", - "DE", - "GH", - "GI", - "GR", - "GL", - "GD", - "GP", - "GU", - "GT", - "GG", - "GN", - "GW", - "GY", - "HT", - "HM", - "VA", - "HN", - "HK", - "HU", - "IS", - "IN", - "ID", - "IR", - "IQ", - "IE", - "IM", - "IL", - "IT", - "JM", - "JP", - "JE", - "JO", - "KZ", - "KE", - "KI", - "KP", - "KR", - "KW", - "KG", - "LA", - "LV", - "LB", - "LS", - "LR", - "LY", - "LI", - "LT", - "LU", - "MO", - "MG", - "MW", - "MY", - "MV", - "ML", - "MT", - "MH", - "MQ", - "MR", - "MU", - "YT", - "MX", - "FM", - "MD", - "MC", - "MN", - "ME", - "MS", - "MA", - "MZ", - "MM", - "NA", - "NR", - "NP", - "NL", - "NC", - "NZ", - "NI", - "NE", - "NG", - "NU", - "NF", - "MP", - "NO", - "OM", - "PK", - "PW", - "PS", - "PA", - "PG", - "PY", - "PE", - "PH", - "PN", - "PL", - "PT", - "PR", - "QA", - "MK", - "RO", - "RU", - "RW", - "RE", - "BL", - "SH", - "KN", - "LC", - "MF", - "PM", - "VC", - "WS", - "SM", - "ST", - "SA", - "SN", - "RS", - "SC", - "SL", - "SG", - "SX", - "SK", - "SI", - "SB", - "SO", - "ZA", - "GS", - "SS", - "ES", - "LK", - "SD", - "SR", - "SJ", - "SE", - "CH", - "SY", - "TW", - "TJ", - "TZ", - "TH", - "TL", - "TG", - "TK", - "TO", - "TT", - "TN", - "TR", - "TM", - "TC", - "TV", - "UG", - "UA", - "AE", - "GB", - "UM", - "US", - "UY", - "UZ", - "VU", - "VE", - "VN", - "VG", - "VI", - "WF", - "EH", - "YE", - "ZM", - "ZW", - "AX" - ], - "example": "US" - }, - "sepa_iban": { - "type": [ - "string", - "null" - ], - "example": "DE89370400440532013000" - }, - "sepa_beneficiary_bic": { - "type": [ - "string", - "null" - ], - "description": "BIC/SWIFT code of the beneficiary bank", - "example": "TRWIBEB1XXX" - }, - "sepa_beneficiary_legal_name": { - "type": [ - "string", - "null" - ], - "maxLength": 128, - "example": "Hans Müller" - }, - "sepa_beneficiary_address_line_1": { - "type": [ - "string", - "null" - ], - "example": "Friedrichstraße 12" - }, - "sepa_beneficiary_address_line_2": { - "type": [ - "string", - "null" - ], - "example": "Apt 4B" - }, - "sepa_beneficiary_city": { - "type": [ - "string", - "null" - ], - "example": "Berlin" - }, - "sepa_beneficiary_state_province_region": { - "type": [ - "string", - "null" - ], - "example": "Berlin" - }, - "sepa_beneficiary_postal_code": { - "type": [ - "string", - "null" - ], - "example": "10117" - }, - "sepa_beneficiary_country": { - "type": [ - "string", - "null" - ], - "enum": [ - "AF", - "AL", - "DZ", - "AS", - "AD", - "AO", - "AI", - "AQ", - "AG", - "AR", - "AM", - "AW", - "AU", - "AT", - "AZ", - "BS", - "BH", - "BD", - "BB", - "BY", - "BE", - "BZ", - "BJ", - "BM", - "BT", - "BO", - "BQ", - "BA", - "BW", - "BV", - "BR", - "IO", - "BN", - "BG", - "BF", - "BI", - "CV", - "KH", - "CM", - "CA", - "KY", - "CF", - "TD", - "CL", - "CN", - "CX", - "CC", - "CO", - "KM", - "CD", - "CG", - "CK", - "CR", - "HR", - "CU", - "CW", - "CY", - "CZ", - "CI", - "DK", - "DJ", - "DM", - "DO", - "EC", - "EG", - "SV", - "GQ", - "ER", - "EE", - "SZ", - "ET", - "FK", - "FO", - "FJ", - "FI", - "FR", - "GF", - "PF", - "TF", - "GA", - "GM", - "GE", - "DE", - "GH", - "GI", - "GR", - "GL", - "GD", - "GP", - "GU", - "GT", - "GG", - "GN", - "GW", - "GY", - "HT", - "HM", - "VA", - "HN", - "HK", - "HU", - "IS", - "IN", - "ID", - "IR", - "IQ", - "IE", - "IM", - "IL", - "IT", - "JM", - "JP", - "JE", - "JO", - "KZ", - "KE", - "KI", - "KP", - "KR", - "KW", - "KG", - "LA", - "LV", - "LB", - "LS", - "LR", - "LY", - "LI", - "LT", - "LU", - "MO", - "MG", - "MW", - "MY", - "MV", - "ML", - "MT", - "MH", - "MQ", - "MR", - "MU", - "YT", - "MX", - "FM", - "MD", - "MC", - "MN", - "ME", - "MS", - "MA", - "MZ", - "MM", - "NA", - "NR", - "NP", - "NL", - "NC", - "NZ", - "NI", - "NE", - "NG", - "NU", - "NF", - "MP", - "NO", - "OM", - "PK", - "PW", - "PS", - "PA", - "PG", - "PY", - "PE", - "PH", - "PN", - "PL", - "PT", - "PR", - "QA", - "MK", - "RO", - "RU", - "RW", - "RE", - "BL", - "SH", - "KN", - "LC", - "MF", - "PM", - "VC", - "WS", - "SM", - "ST", - "SA", - "SN", - "RS", - "SC", - "SL", - "SG", - "SX", - "SK", - "SI", - "SB", - "SO", - "ZA", - "GS", - "SS", - "ES", - "LK", - "SD", - "SR", - "SJ", - "SE", - "CH", - "SY", - "TW", - "TJ", - "TZ", - "TH", - "TL", - "TG", - "TK", - "TO", - "TT", - "TN", - "TR", - "TM", - "TC", - "TV", - "UG", - "UA", - "AE", - "GB", - "UM", - "US", - "UY", - "UZ", - "VU", - "VE", - "VN", - "VG", - "VI", - "WF", - "EH", - "YE", - "ZM", - "ZW", - "AX" - ], - "example": "DE" - }, - "business_industry": { - "type": [ - "string", - "null" - ], - "enum": [ - "111998", - "112120", - "113310", - "115114", - "541211", - "541810", - "541430", - "541715", - "541930", - "561422", - "561311", - "561612", - "561740", - "561730", - "236115", - "236220", - "237310", - "238210", - "811111", - "812111", - "812112", - "532111", - "624410", - "541922", - "811210", - "812199", - "611110", - "611310", - "611410", - "611710", - "211120", - "212114", - "221310", - "562111", - "562920", - "213112", - "522110", - "522210", - "522320", - "523150", - "523940", - "523999", - "524113", - "813110", - "813211", - "813219", - "551112", - "721110", - "722511", - "722513", - "561510", - "713110", - "713210", - "712110", - "711110", - "711211", - "621111", - "621210", - "622110", - "623110", - "621511", - "623220", - "541940", - "621399", - "621910", - "541110", - "311421", - "337121", - "322220", - "339920", - "334210", - "339930", - "312130", - "334111", - "334118", - "325412", - "339112", - "336110", - "336390", - "315990", - "313110", - "339910", - "516120", - "513130", - "512250", - "519130", - "711410", - "711510", - "531110", - "531120", - "531130", - "531190", - "531210", - "531311", - "531312", - "531320", - "531390", - "454110", - "445110", - "455110", - "457110", - "449210", - "444110", - "459210", - "459120", - "445320", - "458110", - "458210", - "458310", - "455219", - "424210", - "456110", - "446120", - "541511", - "541512", - "541519", - "518210", - "511210", - "517111", - "517112", - "517410", - "481111", - "483111", - "485210", - "488510", - "484121", - "493110", - "423430", - "423690", - "423110", - "423830", - "423840", - "423510", - "424690", - "424990", - "424410", - "424480", - "423940", - "541611", - "541618", - "541330", - "541990", - "541214", - "561499" - ], - "example": "541511" - }, - "phone_number": { - "type": [ - "string", - "null" - ], - "example": "+13055555555" - }, - "tax_id": { - "type": [ - "string", - "null" - ], - "maxLength": 32, - "example": "536804398" - }, - "date_of_birth": { - "anyOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "type": "string" - }, - { - "type": "null" - } - ], - "example": "1998-01-01T00:00:00Z" - }, - "pix_safe_bank_code": { - "type": [ - "string", - "null" - ], - "pattern": "^\\d{4,8}$", - "example": "00416968" - }, - "pix_safe_branch_code": { - "type": [ - "string", - "null" - ], - "pattern": "^\\d{4}(-\\d)?$", - "example": "0001" - }, - "pix_safe_cpf_cnpj": { - "type": [ - "string", - "null" - ], - "example": "12345678901" - }, - "ted_bank_code": { - "type": [ - "string", - "null" - ], - "pattern": "^\\d{3,5}$", - "example": "033" - }, - "ted_branch_code": { - "type": [ - "string", - "null" - ], - "pattern": "^\\d{4}(-\\d)?$", - "example": "0001" - }, - "ted_cpf_cnpj": { - "type": [ - "string", - "null" - ], - "example": "12345678901" - }, - "tron_wallet_hash": { - "type": [ - "string", - "null" - ], - "example": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t" - }, - "offramp_wallets": { - "type": [ - "array", - "null" - ], - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "ow_000000000000" - }, - "external_id": { - "type": [ - "string", - "null" - ], - "example": "your_external_id" - }, - "circle_wallet_id": { - "type": [ - "string", - "null" - ], - "example": "01234567-abcd-efgh-ijkl-012345678901" - }, - "network": { - "type": "string", - "enum": [ - "tron", - "solana", - "solana_devnet", - "arbitrum", - "base", - "ethereum", - "polygon", - "sepolia", - "arbitrum_sepolia", - "base_sepolia", - "polygon_amoy" - ], - "example": "tron" - }, - "address": { - "type": "string", - "example": "TALJN9zTTEL9TVBb4WuTt6wLvPqJZr3hvb" - } - }, - "required": [ - "id", - "network", - "address" - ] - }, - "example": [ - { - "address": "TALJN9zTTEL9TVBb4WuTt6wLvPqJZr3hvb", - "id": "ow_000000000000", - "network": "tron", - "external_id": "your_external_id" - } - ] - }, - "status": { - "type": [ - "string", - "null" - ], - "enum": [ - "verifying", - "approved", - "rejected", - "deprecated" - ], - "example": "verifying" - }, - "recipient_relationship": { - "type": [ - "string", - "null" - ], - "enum": [ - "first_party", - "employee", - "independent_contractor", - "vendor_or_supplier", - "subsidiary_or_affiliate", - "merchant_or_partner", - "customer", - "landlord", - "family", - "other" - ], - "example": "vendor_or_supplier" - }, - "swift_payment_code": { - "type": [ - "string", - "null" - ], + "swift_payment_code": { "enum": [ "ae_swift_str", "ae_swift_tcs", @@ -25357,79 +7065,2652 @@ "za_swift_10301", "za_swift_27201" ], - "example": "bh_swift_afl" + "example": "bh_swift_afl", + "type": [ + "string", + "null" + ] + }, + "tax_id": { + "example": "536804398", + "maxLength": 32, + "type": [ + "string", + "null" + ] + }, + "ted_bank_code": { + "example": "033", + "pattern": "^\\d{3,5}$", + "type": [ + "string", + "null" + ] + }, + "ted_branch_code": { + "example": "0001", + "pattern": "^\\d{4}(-\\d)?$", + "type": [ + "string", + "null" + ] + }, + "ted_cpf_cnpj": { + "example": "12345678901", + "type": [ + "string", + "null" + ] + }, + "transfers_account": { + "example": "BM123123123123", + "type": [ + "string", + "null" + ] + }, + "transfers_type": { + "enum": [ + "CVU", + "CBU", + "ALIAS" + ], + "example": "CVU", + "type": [ + "string", + "null" + ] + }, + "tron_wallet_hash": { + "example": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t", + "type": [ + "string", + "null" + ] + }, + "type": { + "enum": [ + "wire", + "ach", + "pix", + "pix_safe", + "ted", + "spei_bitso", + "transfers_bitso", + "ach_cop_bitso", + "international_swift", + "rtp", + "sepa" + ], + "example": "wire", + "type": "string" + }, + "webhook_event": { + "enum": [ + "bankAccount.new" + ], + "type": "string" + } + }, + "required": [ + "webhook_event", + "id", + "type", + "name" + ], + "type": "object" + }, + "BillingDetails": { + "properties": { + "address_line_1": { + "example": "8 The Green, #19364", + "type": "string" + }, + "address_line_2": { + "example": "Suite 200", + "type": "string" + }, + "city": { + "example": "Dover", + "type": "string" + }, + "copy_emails": { + "default": [], + "description": "Optional CC emails for billing communications", + "example": [ + "finance@example.com" + ], + "items": { + "format": "email", + "type": "string" + }, + "type": "array" + }, + "country": { + "example": "United States", + "type": "string" + }, + "email": { + "anyOf": [ + { + "format": "email", + "type": "string" + }, + { + "enum": [ + "" + ], + "type": "string" + } + ], + "example": "billing@blindpay.com" + }, + "name": { + "example": "Blind Pay, Inc.", + "type": "string" + }, + "postal_code": { + "example": "19901", + "type": "string" + }, + "state_province_region": { + "example": "DE", + "type": "string" + }, + "tax_id": { + "example": "123456789", + "type": "string" + } + }, + "required": [ + "name", + "email", + "tax_id", + "address_line_1", + "address_line_2", + "city", + "state_province_region", + "postal_code", + "country" + ], + "type": "object" + }, + "BillingSubscription": { + "properties": { + "billing_charge": { + "description": "If true, fees are charged via monthly invoice instead of at transaction time", + "example": false, + "type": [ + "boolean", + "null" + ] + }, + "invoice_due_date_days": { + "description": "Days after period end when invoice is due", + "example": 15, + "type": "integer" + }, + "minimum_per_month": { + "description": "Minimum monthly billing amount in cents", + "example": 0, + "type": "integer" + }, + "started_at": { + "description": "When the subscription started", + "example": "2025-01-01T00:00:00.000Z", + "format": "date-time", + "type": [ + "string", + "null" + ] + }, + "status": { + "description": "Subscription billing status: active (no issues), overdue (invoice past due), pending (awaiting payment)", + "enum": [ + "active", + "pending_payment", + "past_due", + "cancelled" + ], + "example": "active", + "type": "string" + }, + "subscription_plan": { + "description": "Subscription plan: Basic, Business, or Enterprise", + "enum": [ + "Basic", + "Business", + "Enterprise" + ], + "example": "Basic", + "type": [ + "string", + "null" + ] + }, + "subscription_price": { + "description": "Subscription price in cents", + "example": 24900, + "type": "integer" + } + }, + "required": [ + "minimum_per_month", + "subscription_price", + "invoice_due_date_days", + "status" + ], + "type": "object" + }, + "BlockchainWalletMessageOut": { + "properties": { + "message": { + "type": "string" + } + }, + "required": [ + "message" + ], + "type": "object" + }, + "BlockchainWalletOut": { + "properties": { + "address": { + "example": "0xDD6a3aD0949396e57C7738ba8FC1A46A5a1C372C", + "type": [ + "string", + "null" + ] + }, + "customer_id": { + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "id": { + "example": "bw_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "is_account_abstraction": { + "example": false, + "type": [ + "boolean", + "null" + ] + }, + "name": { + "example": "Wallet Display Name", + "type": [ + "string", + "null" + ] + }, + "network": { + "enum": [ + "base", + "sepolia", + "arbitrum_sepolia", + "base_sepolia", + "arbitrum", + "polygon", + "polygon_amoy", + "ethereum", + "stellar", + "stellar_testnet", + "tron", + "solana", + "solana_devnet" + ], + "example": "polygon", + "type": [ + "string", + "null" + ] + }, + "signature_tx_hash": { + "example": "0x3c499c542cef5e3811e1192ce70d8cc03d5c3359", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id", + "name", + "network", + "customer_id" + ], + "type": "object" + }, + "BlockchainWalletWebhookOut": { + "properties": { + "address": { + "example": "0xDD6a3aD0949396e57C7738ba8FC1A46A5a1C372C", + "type": [ + "string", + "null" + ] + }, + "customer_id": { + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "id": { + "example": "bw_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "is_account_abstraction": { + "example": false, + "type": [ + "boolean", + "null" + ] + }, + "name": { + "example": "Wallet Display Name", + "type": [ + "string", + "null" + ] + }, + "network": { + "enum": [ + "base", + "sepolia", + "arbitrum_sepolia", + "base_sepolia", + "arbitrum", + "polygon", + "polygon_amoy", + "ethereum", + "stellar", + "stellar_testnet", + "tron", + "solana", + "solana_devnet" + ], + "example": "polygon", + "type": [ + "string", + "null" + ] + }, + "signature_tx_hash": { + "example": "0x3c499c542cef5e3811e1192ce70d8cc03d5c3359", + "type": [ + "string", + "null" + ] + }, + "webhook_event": { + "enum": [ + "blockchainWallet.new" + ], + "type": "string" + } + }, + "required": [ + "webhook_event", + "id", + "name", + "network", + "customer_id" + ], + "type": "object" + }, + "CircleTransactionWebhookOut": { + "properties": { + "notification": { + "properties": { + "amounts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "blockchain": { + "enum": [ + "ETH", + "ETH-SEPOLIA", + "AVAX", + "AVAX-FUJI", + "MATIC", + "MATIC-AMOY", + "SOL", + "SOL-DEVNET", + "ARB", + "ARB-SEPOLIA", + "BASE", + "BASE-SEPOLIA", + "NEAR", + "NEAR-TESTNET", + "EVM", + "EVM-TESTNET", + "UNI-SEPOLIA" + ], + "type": "string" + }, + "createDate": { + "type": [ + "string", + "null" + ] + }, + "destinationAddress": { + "type": [ + "string", + "null" + ] + }, + "errorReason": { + "type": [ + "string", + "null" + ] + }, + "id": { + "type": "string" + }, + "networkFeeInUSD": { + "type": [ + "string", + "null" + ] + }, + "refId": { + "type": [ + "string", + "null" + ] + }, + "sourceAddress": { + "type": [ + "string", + "null" + ] + }, + "state": { + "enum": [ + "INITIATED", + "PENDING_RISK_SCREENING", + "CLEARED", + "QUEUED", + "SENT", + "STUCK", + "CONFIRMED", + "COMPLETE", + "DENIED", + "FAILED", + "CANCELLED", + "ACCELERATED" + ], + "type": "string" + }, + "tokenId": { + "type": "string" + }, + "transactionType": { + "enum": [ + "OUTBOUND", + "INBOUND" + ], + "type": "string" + }, + "txHash": { + "type": [ + "string", + "null" + ] + }, + "updateDate": { + "type": [ + "string", + "null" + ] + }, + "walletId": { + "type": "string" + } + }, + "required": [ + "id", + "state", + "transactionType", + "blockchain", + "tokenId", + "amounts", + "walletId" + ], + "type": "object" + }, + "notificationType": { + "enum": [ + "transactions.outbound", + "transactions.inbound" + ], + "type": "string" + }, + "timestamp": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "notificationType", + "notification" + ], + "type": "object" + }, + "CollectInvoiceBody": { + "properties": { + "network": { + "description": "Blockchain network for collection", + "enum": [ + "polygon", + "base", + "arbitrum", + "ethereum", + "tron", + "solana", + "stellar" + ], + "example": "polygon", + "type": "string" + }, + "token": { + "description": "Token to collect", + "enum": [ + "USDC", + "USDT" + ], + "example": "USDC", + "type": "string" + }, + "wallet_address": { + "description": "Wallet address to receive partner fees", + "example": "0x1234567890abcdef1234567890abcdef12345678", + "type": "string" + } + }, + "required": [ + "network", + "token", + "wallet_address" + ], + "type": "object" + }, + "CollectInvoiceSchemaOut": { + "properties": { + "amount": { + "description": "Amount to collect in cents", + "example": 50000, + "type": "integer" + }, + "collection_id": { + "description": "Invoice collection record ID", + "example": "ic_000000000000", + "type": "string" + }, + "network": { + "example": "polygon", + "type": "string" + }, + "status": { + "enum": [ + "pending", + "processing", + "completed", + "failed" + ], + "example": "pending", + "type": "string" + }, + "token": { + "example": "USDC", + "type": "string" + }, + "wallet_address": { + "example": "0x1234567890abcdef1234567890abcdef12345678", + "type": "string" + } + }, + "required": [ + "collection_id", + "status", + "amount", + "network", + "token", + "wallet_address" + ], + "type": "object" + }, + "CopyInstanceMembersIn": { + "properties": { + "source_instance_id": { + "example": "in_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + } + }, + "required": [ + "source_instance_id" + ], + "type": "object" + }, + "CopyInstanceMembersOut": { + "properties": { + "copied_invites": { + "example": 1, + "type": "integer" + }, + "copied_members": { + "example": 3, + "type": "integer" + }, + "skipped_members": { + "description": "Source members that already belong to the target instance", + "example": 2, + "type": "integer" + } + }, + "required": [ + "copied_members", + "copied_invites", + "skipped_members" + ], + "type": "object" + }, + "CreateApiKeyIn": { + "properties": { + "ip_whitelist": { + "example": [ + "127.0.0.1", + "192.168.0.1" + ], + "items": { + "format": "ip", + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "name": { + "example": "API Key Name", + "minLength": 1, + "type": "string" + }, + "permission": { + "enum": [ + "full_access" + ], + "example": "full_access", + "type": "string" + } + }, + "required": [ + "name", + "permission" + ], + "type": "object" + }, + "CreateApiKeyOut": { + "properties": { + "id": { + "example": "ap_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "token": { + "example": "token", + "type": "string" + } + }, + "required": [ + "id", + "token" + ], + "type": "object" + }, + "CreateBankAccountIn": { + "properties": { + "account_class": { + "enum": [ + "individual", + "business" + ], + "example": "individual", + "type": [ + "string", + "null" + ] + }, + "account_number": { + "example": "1001001234", + "type": [ + "string", + "null" + ] + }, + "account_type": { + "enum": [ + "checking", + "saving" + ], + "example": "checking", + "type": [ + "string", + "null" + ] + }, + "ach_cop_bank_account": { + "example": "12345678", + "type": [ + "string", + "null" + ] + }, + "ach_cop_bank_code": { + "example": "051", + "type": [ + "string", + "null" + ] + }, + "ach_cop_beneficiary_first_name": { + "example": "Fernando", + "type": [ + "string", + "null" + ] + }, + "ach_cop_beneficiary_last_name": { + "example": "Guzman Alarc\u00f3n", + "type": [ + "string", + "null" + ] + }, + "ach_cop_document_id": { + "example": "1661105408", + "type": [ + "string", + "null" + ] + }, + "ach_cop_document_type": { + "description": "CC - C\u00e9dula de Ciudadan\u00eda; CE - C\u00e9dula de Extranjer\u00eda; NIT - N\u00famero de Identificaci\u00f3n Tributaria; PASS - Passport; PEP - Permiso Especial de Permanencia", + "enum": [ + "CC", + "CE", + "NIT", + "PASS", + "PEP" + ], + "example": "CC", + "type": [ + "string", + "null" + ] + }, + "ach_cop_email": { + "example": "fernando.guzman@gmail.com", + "type": [ + "string", + "null" + ] + }, + "address_line_1": { + "example": "Address line 1", + "type": [ + "string", + "null" + ] + }, + "address_line_2": { + "example": "Address line 2", + "type": [ + "string", + "null" + ] + }, + "beneficiary_name": { + "example": "Individual full name or business name", + "maxLength": 128, + "type": [ + "string", + "null" + ] + }, + "business_industry": { + "enum": [ + "111998", + "112120", + "113310", + "115114", + "541211", + "541810", + "541430", + "541715", + "541930", + "561422", + "561311", + "561612", + "561740", + "561730", + "236115", + "236220", + "237310", + "238210", + "811111", + "812111", + "812112", + "532111", + "624410", + "541922", + "811210", + "812199", + "611110", + "611310", + "611410", + "611710", + "211120", + "212114", + "221310", + "562111", + "562920", + "213112", + "522110", + "522210", + "522320", + "523150", + "523940", + "523999", + "524113", + "813110", + "813211", + "813219", + "551112", + "721110", + "722511", + "722513", + "561510", + "713110", + "713210", + "712110", + "711110", + "711211", + "621111", + "621210", + "622110", + "623110", + "621511", + "623220", + "541940", + "621399", + "621910", + "541110", + "311421", + "337121", + "322220", + "339920", + "334210", + "339930", + "312130", + "334111", + "334118", + "325412", + "339112", + "336110", + "336390", + "315990", + "313110", + "339910", + "516120", + "513130", + "512250", + "519130", + "711410", + "711510", + "531110", + "531120", + "531130", + "531190", + "531210", + "531311", + "531312", + "531320", + "531390", + "454110", + "445110", + "455110", + "457110", + "449210", + "444110", + "459210", + "459120", + "445320", + "458110", + "458210", + "458310", + "455219", + "424210", + "456110", + "446120", + "541511", + "541512", + "541519", + "518210", + "511210", + "517111", + "517112", + "517410", + "481111", + "483111", + "485210", + "488510", + "484121", + "493110", + "423430", + "423690", + "423110", + "423830", + "423840", + "423510", + "424690", + "424990", + "424410", + "424480", + "423940", + "541611", + "541618", + "541330", + "541990", + "541214", + "561499" + ], + "example": "541511", + "type": [ + "string", + "null" + ] + }, + "checkbook_account_id": { + "example": "dc809ff8f4d3417d83e5697e76f0b88a", + "type": [ + "string", + "null" + ] + }, + "checkbook_user_key": { + "example": "d84fd0dc-3882-4de9-97f8-656730214619", + "type": [ + "string", + "null" + ] + }, + "city": { + "example": "City", + "type": [ + "string", + "null" + ] + }, + "country": { + "enum": [ + "AF", + "AL", + "DZ", + "AS", + "AD", + "AO", + "AI", + "AQ", + "AG", + "AR", + "AM", + "AW", + "AU", + "AT", + "AZ", + "BS", + "BH", + "BD", + "BB", + "BY", + "BE", + "BZ", + "BJ", + "BM", + "BT", + "BO", + "BQ", + "BA", + "BW", + "BV", + "BR", + "IO", + "BN", + "BG", + "BF", + "BI", + "CV", + "KH", + "CM", + "CA", + "KY", + "CF", + "TD", + "CL", + "CN", + "CX", + "CC", + "CO", + "KM", + "CD", + "CG", + "CK", + "CR", + "HR", + "CU", + "CW", + "CY", + "CZ", + "CI", + "DK", + "DJ", + "DM", + "DO", + "EC", + "EG", + "SV", + "GQ", + "ER", + "EE", + "SZ", + "ET", + "FK", + "FO", + "FJ", + "FI", + "FR", + "GF", + "PF", + "TF", + "GA", + "GM", + "GE", + "DE", + "GH", + "GI", + "GR", + "GL", + "GD", + "GP", + "GU", + "GT", + "GG", + "GN", + "GW", + "GY", + "HT", + "HM", + "VA", + "HN", + "HK", + "HU", + "IS", + "IN", + "ID", + "IR", + "IQ", + "IE", + "IM", + "IL", + "IT", + "JM", + "JP", + "JE", + "JO", + "KZ", + "KE", + "KI", + "KP", + "KR", + "KW", + "KG", + "LA", + "LV", + "LB", + "LS", + "LR", + "LY", + "LI", + "LT", + "LU", + "MO", + "MG", + "MW", + "MY", + "MV", + "ML", + "MT", + "MH", + "MQ", + "MR", + "MU", + "YT", + "MX", + "FM", + "MD", + "MC", + "MN", + "ME", + "MS", + "MA", + "MZ", + "MM", + "NA", + "NR", + "NP", + "NL", + "NC", + "NZ", + "NI", + "NE", + "NG", + "NU", + "NF", + "MP", + "NO", + "OM", + "PK", + "PW", + "PS", + "PA", + "PG", + "PY", + "PE", + "PH", + "PN", + "PL", + "PT", + "PR", + "QA", + "MK", + "RO", + "RU", + "RW", + "RE", + "BL", + "SH", + "KN", + "LC", + "MF", + "PM", + "VC", + "WS", + "SM", + "ST", + "SA", + "SN", + "RS", + "SC", + "SL", + "SG", + "SX", + "SK", + "SI", + "SB", + "SO", + "ZA", + "GS", + "SS", + "ES", + "LK", + "SD", + "SR", + "SJ", + "SE", + "CH", + "SY", + "TW", + "TJ", + "TZ", + "TH", + "TL", + "TG", + "TK", + "TO", + "TT", + "TN", + "TR", + "TM", + "TC", + "TV", + "UG", + "UA", + "AE", + "GB", + "UM", + "US", + "UY", + "UZ", + "VU", + "VE", + "VN", + "VG", + "VI", + "WF", + "EH", + "YE", + "ZM", + "ZW", + "AX" + ], + "example": "US", + "type": [ + "string", + "null" + ] + }, + "date_of_birth": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "string" + }, + { + "type": "null" + } + ], + "example": "1998-01-01T00:00:00Z" + }, + "force_cpf_cnpj": { + "description": "Force CPF/CNPJ validation for PIX key", + "example": false, + "type": [ + "boolean", + "null" + ] + }, + "name": { + "example": "Bank Account Name", + "type": "string" + }, + "onemoney_external_account_id": { + "example": "ex_000000000000", + "type": [ + "string", + "null" + ] + }, + "phone_number": { + "example": "+13055555555", + "type": [ + "string", + "null" + ] + }, + "pix_key": { + "example": "14947677768", + "type": [ + "string", + "null" + ] + }, + "pix_safe_bank_code": { + "example": "00416968", + "pattern": "^\\d{4,8}$", + "type": [ + "string", + "null" + ] + }, + "pix_safe_branch_code": { + "example": "0001", + "pattern": "^\\d{4}(-\\d)?$", + "type": [ + "string", + "null" + ] + }, + "pix_safe_cpf_cnpj": { + "example": "12345678901", + "type": [ + "string", + "null" + ] + }, + "postal_code": { + "example": "Postal code", + "type": [ + "string", + "null" + ] + }, + "recipient_relationship": { + "enum": [ + "first_party", + "employee", + "independent_contractor", + "vendor_or_supplier", + "subsidiary_or_affiliate", + "merchant_or_partner", + "customer", + "landlord", + "family", + "other" + ], + "example": "vendor_or_supplier", + "type": [ + "string", + "null" + ] + }, + "routing_number": { + "example": "012345678", + "type": [ + "string", + "null" + ] + }, + "sepa_beneficiary_address_line_1": { + "example": "Friedrichstra\u00dfe 12", + "type": [ + "string", + "null" + ] + }, + "sepa_beneficiary_address_line_2": { + "example": "Apt 4B", + "type": [ + "string", + "null" + ] + }, + "sepa_beneficiary_bic": { + "description": "BIC/SWIFT code of the beneficiary bank", + "example": "TRWIBEB1XXX", + "type": [ + "string", + "null" + ] + }, + "sepa_beneficiary_city": { + "example": "Berlin", + "type": [ + "string", + "null" + ] + }, + "sepa_beneficiary_country": { + "enum": [ + "AF", + "AL", + "DZ", + "AS", + "AD", + "AO", + "AI", + "AQ", + "AG", + "AR", + "AM", + "AW", + "AU", + "AT", + "AZ", + "BS", + "BH", + "BD", + "BB", + "BY", + "BE", + "BZ", + "BJ", + "BM", + "BT", + "BO", + "BQ", + "BA", + "BW", + "BV", + "BR", + "IO", + "BN", + "BG", + "BF", + "BI", + "CV", + "KH", + "CM", + "CA", + "KY", + "CF", + "TD", + "CL", + "CN", + "CX", + "CC", + "CO", + "KM", + "CD", + "CG", + "CK", + "CR", + "HR", + "CU", + "CW", + "CY", + "CZ", + "CI", + "DK", + "DJ", + "DM", + "DO", + "EC", + "EG", + "SV", + "GQ", + "ER", + "EE", + "SZ", + "ET", + "FK", + "FO", + "FJ", + "FI", + "FR", + "GF", + "PF", + "TF", + "GA", + "GM", + "GE", + "DE", + "GH", + "GI", + "GR", + "GL", + "GD", + "GP", + "GU", + "GT", + "GG", + "GN", + "GW", + "GY", + "HT", + "HM", + "VA", + "HN", + "HK", + "HU", + "IS", + "IN", + "ID", + "IR", + "IQ", + "IE", + "IM", + "IL", + "IT", + "JM", + "JP", + "JE", + "JO", + "KZ", + "KE", + "KI", + "KP", + "KR", + "KW", + "KG", + "LA", + "LV", + "LB", + "LS", + "LR", + "LY", + "LI", + "LT", + "LU", + "MO", + "MG", + "MW", + "MY", + "MV", + "ML", + "MT", + "MH", + "MQ", + "MR", + "MU", + "YT", + "MX", + "FM", + "MD", + "MC", + "MN", + "ME", + "MS", + "MA", + "MZ", + "MM", + "NA", + "NR", + "NP", + "NL", + "NC", + "NZ", + "NI", + "NE", + "NG", + "NU", + "NF", + "MP", + "NO", + "OM", + "PK", + "PW", + "PS", + "PA", + "PG", + "PY", + "PE", + "PH", + "PN", + "PL", + "PT", + "PR", + "QA", + "MK", + "RO", + "RU", + "RW", + "RE", + "BL", + "SH", + "KN", + "LC", + "MF", + "PM", + "VC", + "WS", + "SM", + "ST", + "SA", + "SN", + "RS", + "SC", + "SL", + "SG", + "SX", + "SK", + "SI", + "SB", + "SO", + "ZA", + "GS", + "SS", + "ES", + "LK", + "SD", + "SR", + "SJ", + "SE", + "CH", + "SY", + "TW", + "TJ", + "TZ", + "TH", + "TL", + "TG", + "TK", + "TO", + "TT", + "TN", + "TR", + "TM", + "TC", + "TV", + "UG", + "UA", + "AE", + "GB", + "UM", + "US", + "UY", + "UZ", + "VU", + "VE", + "VN", + "VG", + "VI", + "WF", + "EH", + "YE", + "ZM", + "ZW", + "AX" + ], + "example": "DE", + "type": [ + "string", + "null" + ] + }, + "sepa_beneficiary_legal_name": { + "example": "Hans M\u00fcller", + "maxLength": 128, + "type": [ + "string", + "null" + ] + }, + "sepa_beneficiary_postal_code": { + "example": "10117", + "type": [ + "string", + "null" + ] + }, + "sepa_beneficiary_state_province_region": { + "example": "Berlin", + "type": [ + "string", + "null" + ] + }, + "sepa_iban": { + "example": "DE89370400440532013000", + "type": [ + "string", + "null" + ] + }, + "spei_clabe": { + "example": "5482347403740546", + "type": [ + "string", + "null" + ] + }, + "spei_institution_code": { + "example": "40002", + "maxLength": 5, + "minLength": 5, + "type": [ + "string", + "null" + ] + }, + "spei_protocol": { + "description": "For debitcard and phonenum the spei_institution_code is required", + "enum": [ + "clabe", + "debitcard", + "phonenum" + ], + "example": "clabe", + "type": [ + "string", + "null" + ] + }, + "state_province_region": { + "example": "State/Province/Region", + "type": [ + "string", + "null" + ] + }, + "status": { + "enum": [ + "verifying", + "approved", + "rejected", + "deprecated" + ], + "example": "verifying", + "type": [ + "string", + "null" + ] + }, + "swift_account_holder_name": { + "example": "John Doe", + "maxLength": 50, + "type": [ + "string", + "null" + ] + }, + "swift_account_number_iban": { + "example": "123456789", + "type": [ + "string", + "null" + ] + }, + "swift_bank_address_line_1": { + "example": "123 Main Street, Suite 100, Downtown District, City Center CP 12345", + "type": [ + "string", + "null" + ] + }, + "swift_bank_address_line_2": { + "example": "456 Oak Avenue, Building 7, Financial District, Business Center CP 54321", + "type": [ + "string", + "null" + ] + }, + "swift_bank_city": { + "example": "City", + "type": [ + "string", + "null" + ] + }, + "swift_bank_country": { + "enum": [ + "AF", + "AL", + "DZ", + "AS", + "AD", + "AO", + "AI", + "AQ", + "AG", + "AR", + "AM", + "AW", + "AU", + "AT", + "AZ", + "BS", + "BH", + "BD", + "BB", + "BY", + "BE", + "BZ", + "BJ", + "BM", + "BT", + "BO", + "BQ", + "BA", + "BW", + "BV", + "BR", + "IO", + "BN", + "BG", + "BF", + "BI", + "CV", + "KH", + "CM", + "CA", + "KY", + "CF", + "TD", + "CL", + "CN", + "CX", + "CC", + "CO", + "KM", + "CD", + "CG", + "CK", + "CR", + "HR", + "CU", + "CW", + "CY", + "CZ", + "CI", + "DK", + "DJ", + "DM", + "DO", + "EC", + "EG", + "SV", + "GQ", + "ER", + "EE", + "SZ", + "ET", + "FK", + "FO", + "FJ", + "FI", + "FR", + "GF", + "PF", + "TF", + "GA", + "GM", + "GE", + "DE", + "GH", + "GI", + "GR", + "GL", + "GD", + "GP", + "GU", + "GT", + "GG", + "GN", + "GW", + "GY", + "HT", + "HM", + "VA", + "HN", + "HK", + "HU", + "IS", + "IN", + "ID", + "IR", + "IQ", + "IE", + "IM", + "IL", + "IT", + "JM", + "JP", + "JE", + "JO", + "KZ", + "KE", + "KI", + "KP", + "KR", + "KW", + "KG", + "LA", + "LV", + "LB", + "LS", + "LR", + "LY", + "LI", + "LT", + "LU", + "MO", + "MG", + "MW", + "MY", + "MV", + "ML", + "MT", + "MH", + "MQ", + "MR", + "MU", + "YT", + "MX", + "FM", + "MD", + "MC", + "MN", + "ME", + "MS", + "MA", + "MZ", + "MM", + "NA", + "NR", + "NP", + "NL", + "NC", + "NZ", + "NI", + "NE", + "NG", + "NU", + "NF", + "MP", + "NO", + "OM", + "PK", + "PW", + "PS", + "PA", + "PG", + "PY", + "PE", + "PH", + "PN", + "PL", + "PT", + "PR", + "QA", + "MK", + "RO", + "RU", + "RW", + "RE", + "BL", + "SH", + "KN", + "LC", + "MF", + "PM", + "VC", + "WS", + "SM", + "ST", + "SA", + "SN", + "RS", + "SC", + "SL", + "SG", + "SX", + "SK", + "SI", + "SB", + "SO", + "ZA", + "GS", + "SS", + "ES", + "LK", + "SD", + "SR", + "SJ", + "SE", + "CH", + "SY", + "TW", + "TJ", + "TZ", + "TH", + "TL", + "TG", + "TK", + "TO", + "TT", + "TN", + "TR", + "TM", + "TC", + "TV", + "UG", + "UA", + "AE", + "GB", + "UM", + "US", + "UY", + "UZ", + "VU", + "VE", + "VN", + "VG", + "VI", + "WF", + "EH", + "YE", + "ZM", + "ZW", + "AX" + ], + "example": "MX", + "type": [ + "string", + "null" + ] + }, + "swift_bank_name": { + "example": "Banco Regional SA", + "type": [ + "string", + "null" + ] + }, + "swift_bank_postal_code": { + "example": "11530", + "type": [ + "string", + "null" + ] + }, + "swift_bank_state_province_region": { + "example": "District", + "type": [ + "string", + "null" + ] + }, + "swift_beneficiary_address_line_1": { + "example": "123 MAIN STREET SUITE 100", + "type": [ + "string", + "null" + ] + }, + "swift_beneficiary_address_line_2": { + "example": "BUILDING A FLOOR 5", + "type": [ + "string", + "null" + ] + }, + "swift_beneficiary_city": { + "example": "MEXICO CITY", + "type": [ + "string", + "null" + ] + }, + "swift_beneficiary_country": { + "enum": [ + "AF", + "AL", + "DZ", + "AS", + "AD", + "AO", + "AI", + "AQ", + "AG", + "AR", + "AM", + "AW", + "AU", + "AT", + "AZ", + "BS", + "BH", + "BD", + "BB", + "BY", + "BE", + "BZ", + "BJ", + "BM", + "BT", + "BO", + "BQ", + "BA", + "BW", + "BV", + "BR", + "IO", + "BN", + "BG", + "BF", + "BI", + "CV", + "KH", + "CM", + "CA", + "KY", + "CF", + "TD", + "CL", + "CN", + "CX", + "CC", + "CO", + "KM", + "CD", + "CG", + "CK", + "CR", + "HR", + "CU", + "CW", + "CY", + "CZ", + "CI", + "DK", + "DJ", + "DM", + "DO", + "EC", + "EG", + "SV", + "GQ", + "ER", + "EE", + "SZ", + "ET", + "FK", + "FO", + "FJ", + "FI", + "FR", + "GF", + "PF", + "TF", + "GA", + "GM", + "GE", + "DE", + "GH", + "GI", + "GR", + "GL", + "GD", + "GP", + "GU", + "GT", + "GG", + "GN", + "GW", + "GY", + "HT", + "HM", + "VA", + "HN", + "HK", + "HU", + "IS", + "IN", + "ID", + "IR", + "IQ", + "IE", + "IM", + "IL", + "IT", + "JM", + "JP", + "JE", + "JO", + "KZ", + "KE", + "KI", + "KP", + "KR", + "KW", + "KG", + "LA", + "LV", + "LB", + "LS", + "LR", + "LY", + "LI", + "LT", + "LU", + "MO", + "MG", + "MW", + "MY", + "MV", + "ML", + "MT", + "MH", + "MQ", + "MR", + "MU", + "YT", + "MX", + "FM", + "MD", + "MC", + "MN", + "ME", + "MS", + "MA", + "MZ", + "MM", + "NA", + "NR", + "NP", + "NL", + "NC", + "NZ", + "NI", + "NE", + "NG", + "NU", + "NF", + "MP", + "NO", + "OM", + "PK", + "PW", + "PS", + "PA", + "PG", + "PY", + "PE", + "PH", + "PN", + "PL", + "PT", + "PR", + "QA", + "MK", + "RO", + "RU", + "RW", + "RE", + "BL", + "SH", + "KN", + "LC", + "MF", + "PM", + "VC", + "WS", + "SM", + "ST", + "SA", + "SN", + "RS", + "SC", + "SL", + "SG", + "SX", + "SK", + "SI", + "SB", + "SO", + "ZA", + "GS", + "SS", + "ES", + "LK", + "SD", + "SR", + "SJ", + "SE", + "CH", + "SY", + "TW", + "TJ", + "TZ", + "TH", + "TL", + "TG", + "TK", + "TO", + "TT", + "TN", + "TR", + "TM", + "TC", + "TV", + "UG", + "UA", + "AE", + "GB", + "UM", + "US", + "UY", + "UZ", + "VU", + "VE", + "VN", + "VG", + "VI", + "WF", + "EH", + "YE", + "ZM", + "ZW", + "AX" + ], + "example": "MX", + "type": [ + "string", + "null" + ] }, - "created_at": { - "example": "2021-01-01T00:00:00Z" - } - }, - "required": [ - "id", - "type", - "name" - ] - }, - "CreateBankAccountIn": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "wire", - "ach", - "pix", - "pix_safe", - "ted", - "spei_bitso", - "transfers_bitso", - "ach_cop_bitso", - "international_swift", - "rtp", - "sepa" - ], - "example": "wire" + "swift_beneficiary_postal_code": { + "example": "11530", + "type": [ + "string", + "null" + ] }, - "name": { - "type": "string", - "example": "Bank Account Name" + "swift_beneficiary_state_province_region": { + "example": "MX", + "type": [ + "string", + "null" + ] }, - "status": { + "swift_code_bic": { + "example": "123456789", "type": [ "string", "null" - ], - "enum": [ - "verifying", - "approved", - "rejected", - "deprecated" - ], - "example": "verifying" + ] }, - "recipient_relationship": { + "swift_ifsc_branch_code": { + "example": "BARB0AHIMCI", + "pattern": "^[A-Z]{4}0[A-Z0-9]{6}$", "type": [ "string", "null" - ], + ] + }, + "swift_intermediary_bank_account_number_iban": { + "example": "123456789", + "maxLength": 34, + "type": [ + "string", + "null" + ] + }, + "swift_intermediary_bank_country": { "enum": [ - "first_party", - "employee", - "independent_contractor", - "vendor_or_supplier", - "subsidiary_or_affiliate", - "merchant_or_partner", - "customer", - "landlord", - "family", - "other" + "AF", + "AL", + "DZ", + "AS", + "AD", + "AO", + "AI", + "AQ", + "AG", + "AR", + "AM", + "AW", + "AU", + "AT", + "AZ", + "BS", + "BH", + "BD", + "BB", + "BY", + "BE", + "BZ", + "BJ", + "BM", + "BT", + "BO", + "BQ", + "BA", + "BW", + "BV", + "BR", + "IO", + "BN", + "BG", + "BF", + "BI", + "CV", + "KH", + "CM", + "CA", + "KY", + "CF", + "TD", + "CL", + "CN", + "CX", + "CC", + "CO", + "KM", + "CD", + "CG", + "CK", + "CR", + "HR", + "CU", + "CW", + "CY", + "CZ", + "CI", + "DK", + "DJ", + "DM", + "DO", + "EC", + "EG", + "SV", + "GQ", + "ER", + "EE", + "SZ", + "ET", + "FK", + "FO", + "FJ", + "FI", + "FR", + "GF", + "PF", + "TF", + "GA", + "GM", + "GE", + "DE", + "GH", + "GI", + "GR", + "GL", + "GD", + "GP", + "GU", + "GT", + "GG", + "GN", + "GW", + "GY", + "HT", + "HM", + "VA", + "HN", + "HK", + "HU", + "IS", + "IN", + "ID", + "IR", + "IQ", + "IE", + "IM", + "IL", + "IT", + "JM", + "JP", + "JE", + "JO", + "KZ", + "KE", + "KI", + "KP", + "KR", + "KW", + "KG", + "LA", + "LV", + "LB", + "LS", + "LR", + "LY", + "LI", + "LT", + "LU", + "MO", + "MG", + "MW", + "MY", + "MV", + "ML", + "MT", + "MH", + "MQ", + "MR", + "MU", + "YT", + "MX", + "FM", + "MD", + "MC", + "MN", + "ME", + "MS", + "MA", + "MZ", + "MM", + "NA", + "NR", + "NP", + "NL", + "NC", + "NZ", + "NI", + "NE", + "NG", + "NU", + "NF", + "MP", + "NO", + "OM", + "PK", + "PW", + "PS", + "PA", + "PG", + "PY", + "PE", + "PH", + "PN", + "PL", + "PT", + "PR", + "QA", + "MK", + "RO", + "RU", + "RW", + "RE", + "BL", + "SH", + "KN", + "LC", + "MF", + "PM", + "VC", + "WS", + "SM", + "ST", + "SA", + "SN", + "RS", + "SC", + "SL", + "SG", + "SX", + "SK", + "SI", + "SB", + "SO", + "ZA", + "GS", + "SS", + "ES", + "LK", + "SD", + "SR", + "SJ", + "SE", + "CH", + "SY", + "TW", + "TJ", + "TZ", + "TH", + "TL", + "TG", + "TK", + "TO", + "TT", + "TN", + "TR", + "TM", + "TC", + "TV", + "UG", + "UA", + "AE", + "GB", + "UM", + "US", + "UY", + "UZ", + "VU", + "VE", + "VN", + "VG", + "VI", + "WF", + "EH", + "YE", + "ZM", + "ZW", + "AX" ], - "example": "vendor_or_supplier" + "example": "US", + "type": [ + "string", + "null" + ] }, - "swift_payment_code": { + "swift_intermediary_bank_name": { + "example": "Banco Regional SA", "type": [ "string", "null" + ] + }, + "swift_intermediary_bank_swift_code_bic": { + "anyOf": [ + { + "maxLength": 8, + "minLength": 8, + "type": "string" + }, + { + "maxLength": 11, + "minLength": 11, + "type": "string" + }, + { + "type": "null" + } ], + "example": "AEIBARB1" + }, + "swift_payment_code": { "enum": [ "ae_swift_str", "ae_swift_tcs", @@ -26457,100 +10738,8936 @@ "za_swift_10301", "za_swift_27201" ], - "example": "bh_swift_afl" + "example": "bh_swift_afl", + "type": [ + "string", + "null" + ] + }, + "tax_id": { + "example": "536804398", + "maxLength": 32, + "type": [ + "string", + "null" + ] + }, + "ted_bank_code": { + "example": "033", + "pattern": "^\\d{3,5}$", + "type": [ + "string", + "null" + ] + }, + "ted_branch_code": { + "example": "0001", + "pattern": "^\\d{4}(-\\d)?$", + "type": [ + "string", + "null" + ] + }, + "ted_cpf_cnpj": { + "example": "12345678901", + "type": [ + "string", + "null" + ] + }, + "transfers_account": { + "example": "BM123123123123", + "type": [ + "string", + "null" + ] + }, + "transfers_type": { + "enum": [ + "CVU", + "CBU", + "ALIAS" + ], + "example": "CVU", + "type": [ + "string", + "null" + ] + }, + "type": { + "enum": [ + "wire", + "ach", + "pix", + "pix_safe", + "ted", + "spei_bitso", + "transfers_bitso", + "ach_cop_bitso", + "international_swift", + "rtp", + "sepa" + ], + "example": "wire", + "type": "string" + } + }, + "required": [ + "type", + "name" + ], + "type": "object" + }, + "CreateBlockchainWalletIn": { + "properties": { + "address": { + "example": "0xDD6a3aD0949396e57C7738ba8FC1A46A5a1C372C", + "type": [ + "string", + "null" + ] + }, + "is_account_abstraction": { + "example": false, + "type": [ + "boolean", + "null" + ] + }, + "name": { + "example": "Wallet Display Name", + "type": "string" + }, + "network": { + "enum": [ + "base", + "sepolia", + "arbitrum_sepolia", + "base_sepolia", + "arbitrum", + "polygon", + "polygon_amoy", + "ethereum", + "stellar", + "stellar_testnet", + "tron", + "solana", + "solana_devnet" + ], + "example": "polygon", + "type": "string" + }, + "signature_tx_hash": { + "example": "0x3c499c542cef5e3811e1192ce70d8cc03d5c3359", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "name", + "network" + ], + "type": "object" + }, + "CreateComplaintIn": { + "properties": { + "complaint_type": { + "minLength": 1, + "type": "string" + }, + "description": { + "maxLength": 5000, + "minLength": 20, + "type": "string" + }, + "email": { + "format": "email", + "type": "string" + }, + "first_name": { + "minLength": 1, + "type": "string" + }, + "last_name": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "first_name", + "last_name", + "email", + "complaint_type", + "description" + ], + "type": "object" + }, + "CreateCustomerIn": { + "properties": { + "account_purpose": { + "enum": [ + "charitable_donations", + "ecommerce_retail_payments", + "investment_purposes", + "business_expenses", + "payments_to_friends_or_family_abroad", + "personal_or_living_expenses", + "protect_wealth", + "purchase_goods_and_services", + "receive_payments_for_goods_and_services", + "tax_optimization", + "third_party_money_transmission", + "payroll", + "treasury_management", + "other" + ], + "example": "treasury_management", + "type": [ + "string", + "null" + ] + }, + "account_purpose_other": { + "description": "Required when account_purpose is \"other\". Max 512 characters.", + "example": "Custom account purpose description", + "maxLength": 512, + "type": [ + "string", + "null" + ] + }, + "additional_info": { + "description": "Optional extra documents or notes for this customer. `label` is a known category, `value` is either a URL to upload or a free-text description. Any URLs are downloaded and re-hosted on Blindpay storage before being stored.", + "example": [ + { + "label": "EIN_LETTER", + "value": "https://example.com/ein.pdf" + }, + { + "label": "FLOW_OF_FUNDS", + "value": "Funds originate from US payroll deposits, forwarded weekly to customer." + } + ], + "items": { + "$ref": "#/components/schemas/AdditionalInfoItem" + }, + "type": [ + "array", + "null" + ] + }, + "address_line_1": { + "example": "738 Plain St", + "type": [ + "string", + "null" + ] + }, + "address_line_2": { + "example": "Building 22", + "type": [ + "string", + "null" + ] + }, + "alternate_name": { + "example": "Company Name Inc.", + "type": [ + "string", + "null" + ] + }, + "business_description": { + "example": "Software development company", + "maxLength": 1000, + "type": [ + "string", + "null" + ] + }, + "business_industry": { + "enum": [ + "111998", + "112120", + "113310", + "115114", + "541211", + "541810", + "541430", + "541715", + "541930", + "561422", + "561311", + "561612", + "561740", + "561730", + "236115", + "236220", + "237310", + "238210", + "811111", + "812111", + "812112", + "532111", + "624410", + "541922", + "811210", + "812199", + "611110", + "611310", + "611410", + "611710", + "211120", + "212114", + "221310", + "562111", + "562920", + "213112", + "522110", + "522210", + "522320", + "523150", + "523940", + "523999", + "524113", + "813110", + "813211", + "813219", + "551112", + "721110", + "722511", + "722513", + "561510", + "713110", + "713210", + "712110", + "711110", + "711211", + "621111", + "621210", + "622110", + "623110", + "621511", + "623220", + "541940", + "621399", + "621910", + "541110", + "311421", + "337121", + "322220", + "339920", + "334210", + "339930", + "312130", + "334111", + "334118", + "325412", + "339112", + "336110", + "336390", + "315990", + "313110", + "339910", + "516120", + "513130", + "512250", + "519130", + "711410", + "711510", + "531110", + "531120", + "531130", + "531190", + "531210", + "531311", + "531312", + "531320", + "531390", + "454110", + "445110", + "455110", + "457110", + "449210", + "444110", + "459210", + "459120", + "445320", + "458110", + "458210", + "458310", + "455219", + "424210", + "456110", + "446120", + "541511", + "541512", + "541519", + "518210", + "511210", + "517111", + "517112", + "517410", + "481111", + "483111", + "485210", + "488510", + "484121", + "493110", + "423430", + "423690", + "423110", + "423830", + "423840", + "423510", + "424690", + "424990", + "424410", + "424480", + "423940", + "541611", + "541618", + "541330", + "541990", + "541214", + "561499" + ], + "example": "541511", + "type": [ + "string", + "null" + ] + }, + "business_type": { + "enum": [ + "corporation", + "llc", + "partnership", + "sole_proprietorship", + "trust", + "non_profit" + ], + "example": "llc", + "type": [ + "string", + "null" + ] + }, + "city": { + "example": "Marshfield", + "type": [ + "string", + "null" + ] + }, + "country": { + "enum": [ + "AF", + "AL", + "DZ", + "AS", + "AD", + "AO", + "AI", + "AQ", + "AG", + "AR", + "AM", + "AW", + "AU", + "AT", + "AZ", + "BS", + "BH", + "BD", + "BB", + "BY", + "BE", + "BZ", + "BJ", + "BM", + "BT", + "BO", + "BQ", + "BA", + "BW", + "BV", + "BR", + "IO", + "BN", + "BG", + "BF", + "BI", + "CV", + "KH", + "CM", + "CA", + "KY", + "CF", + "TD", + "CL", + "CN", + "CX", + "CC", + "CO", + "KM", + "CD", + "CG", + "CK", + "CR", + "HR", + "CU", + "CW", + "CY", + "CZ", + "CI", + "DK", + "DJ", + "DM", + "DO", + "EC", + "EG", + "SV", + "GQ", + "ER", + "EE", + "SZ", + "ET", + "FK", + "FO", + "FJ", + "FI", + "FR", + "GF", + "PF", + "TF", + "GA", + "GM", + "GE", + "DE", + "GH", + "GI", + "GR", + "GL", + "GD", + "GP", + "GU", + "GT", + "GG", + "GN", + "GW", + "GY", + "HT", + "HM", + "VA", + "HN", + "HK", + "HU", + "IS", + "IN", + "ID", + "IR", + "IQ", + "IE", + "IM", + "IL", + "IT", + "JM", + "JP", + "JE", + "JO", + "KZ", + "KE", + "KI", + "KP", + "KR", + "KW", + "KG", + "LA", + "LV", + "LB", + "LS", + "LR", + "LY", + "LI", + "LT", + "LU", + "MO", + "MG", + "MW", + "MY", + "MV", + "ML", + "MT", + "MH", + "MQ", + "MR", + "MU", + "YT", + "MX", + "FM", + "MD", + "MC", + "MN", + "ME", + "MS", + "MA", + "MZ", + "MM", + "NA", + "NR", + "NP", + "NL", + "NC", + "NZ", + "NI", + "NE", + "NG", + "NU", + "NF", + "MP", + "NO", + "OM", + "PK", + "PW", + "PS", + "PA", + "PG", + "PY", + "PE", + "PH", + "PN", + "PL", + "PT", + "PR", + "QA", + "MK", + "RO", + "RU", + "RW", + "RE", + "BL", + "SH", + "KN", + "LC", + "MF", + "PM", + "VC", + "WS", + "SM", + "ST", + "SA", + "SN", + "RS", + "SC", + "SL", + "SG", + "SX", + "SK", + "SI", + "SB", + "SO", + "ZA", + "GS", + "SS", + "ES", + "LK", + "SD", + "SR", + "SJ", + "SE", + "CH", + "SY", + "TW", + "TJ", + "TZ", + "TH", + "TL", + "TG", + "TK", + "TO", + "TT", + "TN", + "TR", + "TM", + "TC", + "TV", + "UG", + "UA", + "AE", + "GB", + "UM", + "US", + "UY", + "UZ", + "VU", + "VE", + "VN", + "VG", + "VI", + "WF", + "EH", + "YE", + "ZM", + "ZW", + "AX" + ], + "example": "US", + "type": "string" + }, + "date_of_birth": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "string" + }, + { + "type": "null" + } + ], + "example": "1998-01-01T00:00:00Z" + }, + "email": { + "example": "email@example.com", + "format": "email", + "type": "string" + }, + "estimated_annual_revenue": { + "enum": [ + "0_99999", + "100000_999999", + "1000000_9999999", + "10000000_49999999", + "50000000_249999999", + "250000000_plus" + ], + "example": "1000000_9999999", + "type": [ + "string", + "null" + ] + }, + "external_id": { + "example": "your_company_external_id", + "type": [ + "string", + "null" + ] + }, + "first_name": { + "example": "John", + "type": [ + "string", + "null" + ] + }, + "formation_date": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "string" + }, + { + "type": "null" + } + ], + "example": "1998-01-01T00:00:00Z", + "format": "date-time" + }, + "id_doc_back_file": { + "description": "Only image files are accepted (.jpg, .jpeg, .png)", + "example": "https://example.com/image.png", + "format": "uri", + "type": [ + "string", + "null" + ] + }, + "id_doc_country": { + "enum": [ + "AF", + "AL", + "DZ", + "AS", + "AD", + "AO", + "AI", + "AQ", + "AG", + "AR", + "AM", + "AW", + "AU", + "AT", + "AZ", + "BS", + "BH", + "BD", + "BB", + "BY", + "BE", + "BZ", + "BJ", + "BM", + "BT", + "BO", + "BQ", + "BA", + "BW", + "BV", + "BR", + "IO", + "BN", + "BG", + "BF", + "BI", + "CV", + "KH", + "CM", + "CA", + "KY", + "CF", + "TD", + "CL", + "CN", + "CX", + "CC", + "CO", + "KM", + "CD", + "CG", + "CK", + "CR", + "HR", + "CU", + "CW", + "CY", + "CZ", + "CI", + "DK", + "DJ", + "DM", + "DO", + "EC", + "EG", + "SV", + "GQ", + "ER", + "EE", + "SZ", + "ET", + "FK", + "FO", + "FJ", + "FI", + "FR", + "GF", + "PF", + "TF", + "GA", + "GM", + "GE", + "DE", + "GH", + "GI", + "GR", + "GL", + "GD", + "GP", + "GU", + "GT", + "GG", + "GN", + "GW", + "GY", + "HT", + "HM", + "VA", + "HN", + "HK", + "HU", + "IS", + "IN", + "ID", + "IR", + "IQ", + "IE", + "IM", + "IL", + "IT", + "JM", + "JP", + "JE", + "JO", + "KZ", + "KE", + "KI", + "KP", + "KR", + "KW", + "KG", + "LA", + "LV", + "LB", + "LS", + "LR", + "LY", + "LI", + "LT", + "LU", + "MO", + "MG", + "MW", + "MY", + "MV", + "ML", + "MT", + "MH", + "MQ", + "MR", + "MU", + "YT", + "MX", + "FM", + "MD", + "MC", + "MN", + "ME", + "MS", + "MA", + "MZ", + "MM", + "NA", + "NR", + "NP", + "NL", + "NC", + "NZ", + "NI", + "NE", + "NG", + "NU", + "NF", + "MP", + "NO", + "OM", + "PK", + "PW", + "PS", + "PA", + "PG", + "PY", + "PE", + "PH", + "PN", + "PL", + "PT", + "PR", + "QA", + "MK", + "RO", + "RU", + "RW", + "RE", + "BL", + "SH", + "KN", + "LC", + "MF", + "PM", + "VC", + "WS", + "SM", + "ST", + "SA", + "SN", + "RS", + "SC", + "SL", + "SG", + "SX", + "SK", + "SI", + "SB", + "SO", + "ZA", + "GS", + "SS", + "ES", + "LK", + "SD", + "SR", + "SJ", + "SE", + "CH", + "SY", + "TW", + "TJ", + "TZ", + "TH", + "TL", + "TG", + "TK", + "TO", + "TT", + "TN", + "TR", + "TM", + "TC", + "TV", + "UG", + "UA", + "AE", + "GB", + "UM", + "US", + "UY", + "UZ", + "VU", + "VE", + "VN", + "VG", + "VI", + "WF", + "EH", + "YE", + "ZM", + "ZW", + "AX" + ], + "example": "BR", + "type": [ + "string", + "null" + ] + }, + "id_doc_front_file": { + "description": "Only image files are accepted (.jpg, .jpeg, .png)", + "example": "https://example.com/image.png", + "format": "uri", + "type": [ + "string", + "null" + ] + }, + "id_doc_type": { + "enum": [ + "PASSPORT", + "ID_CARD", + "DRIVERS" + ], + "example": "PASSPORT", + "type": [ + "string", + "null" + ] + }, + "image_url": { + "example": "https://example.com/image.png", + "format": "uri", + "type": [ + "string", + "null" + ] + }, + "incorporation_doc_file": { + "description": "Please upload your articles of incorporation below. The articles of incorporation or a certificate of incorporation usually includes information like the company name, business purpose, number of shares offered, value of shares, etc. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", + "example": "https://example.com/image.png", + "format": "uri", + "type": [ + "string", + "null" + ] + }, + "ip_address": { + "example": "127.0.0.1", + "format": "ip", + "type": [ + "string", + "null" + ] + }, + "kyc_type": { + "enum": [ + "light", + "standard", + "enhanced" + ], + "example": "standard", + "type": "string" + }, + "last_name": { + "example": "Doe", + "type": [ + "string", + "null" + ] + }, + "latitude": { + "description": "Optional geolocation latitude collected from the customer. Forwarded to AiPrise and SEON for fraud analysis.", + "example": 37.7749, + "maximum": 90, + "minimum": -90, + "type": [ + "number", + "null" + ] + }, + "legal_name": { + "example": "Company Name Inc.", + "type": [ + "string", + "null" + ] + }, + "longitude": { + "description": "Optional geolocation longitude collected from the customer. Forwarded to AiPrise and SEON for fraud analysis.", + "example": -122.4194, + "maximum": 180, + "minimum": -180, + "type": [ + "number", + "null" + ] + }, + "occupation": { + "example": "Software Engineer", + "maxLength": 255, + "type": [ + "string", + "null" + ] + }, + "owners": { + "items": { + "properties": { + "address_line_1": { + "example": "738 Plain St", + "type": "string" + }, + "address_line_2": { + "example": "Building 22", + "type": [ + "string", + "null" + ] + }, + "city": { + "example": "Marshfield", + "type": "string" + }, + "country": { + "enum": [ + "AF", + "AL", + "DZ", + "AS", + "AD", + "AO", + "AI", + "AQ", + "AG", + "AR", + "AM", + "AW", + "AU", + "AT", + "AZ", + "BS", + "BH", + "BD", + "BB", + "BY", + "BE", + "BZ", + "BJ", + "BM", + "BT", + "BO", + "BQ", + "BA", + "BW", + "BV", + "BR", + "IO", + "BN", + "BG", + "BF", + "BI", + "CV", + "KH", + "CM", + "CA", + "KY", + "CF", + "TD", + "CL", + "CN", + "CX", + "CC", + "CO", + "KM", + "CD", + "CG", + "CK", + "CR", + "HR", + "CU", + "CW", + "CY", + "CZ", + "CI", + "DK", + "DJ", + "DM", + "DO", + "EC", + "EG", + "SV", + "GQ", + "ER", + "EE", + "SZ", + "ET", + "FK", + "FO", + "FJ", + "FI", + "FR", + "GF", + "PF", + "TF", + "GA", + "GM", + "GE", + "DE", + "GH", + "GI", + "GR", + "GL", + "GD", + "GP", + "GU", + "GT", + "GG", + "GN", + "GW", + "GY", + "HT", + "HM", + "VA", + "HN", + "HK", + "HU", + "IS", + "IN", + "ID", + "IR", + "IQ", + "IE", + "IM", + "IL", + "IT", + "JM", + "JP", + "JE", + "JO", + "KZ", + "KE", + "KI", + "KP", + "KR", + "KW", + "KG", + "LA", + "LV", + "LB", + "LS", + "LR", + "LY", + "LI", + "LT", + "LU", + "MO", + "MG", + "MW", + "MY", + "MV", + "ML", + "MT", + "MH", + "MQ", + "MR", + "MU", + "YT", + "MX", + "FM", + "MD", + "MC", + "MN", + "ME", + "MS", + "MA", + "MZ", + "MM", + "NA", + "NR", + "NP", + "NL", + "NC", + "NZ", + "NI", + "NE", + "NG", + "NU", + "NF", + "MP", + "NO", + "OM", + "PK", + "PW", + "PS", + "PA", + "PG", + "PY", + "PE", + "PH", + "PN", + "PL", + "PT", + "PR", + "QA", + "MK", + "RO", + "RU", + "RW", + "RE", + "BL", + "SH", + "KN", + "LC", + "MF", + "PM", + "VC", + "WS", + "SM", + "ST", + "SA", + "SN", + "RS", + "SC", + "SL", + "SG", + "SX", + "SK", + "SI", + "SB", + "SO", + "ZA", + "GS", + "SS", + "ES", + "LK", + "SD", + "SR", + "SJ", + "SE", + "CH", + "SY", + "TW", + "TJ", + "TZ", + "TH", + "TL", + "TG", + "TK", + "TO", + "TT", + "TN", + "TR", + "TM", + "TC", + "TV", + "UG", + "UA", + "AE", + "GB", + "UM", + "US", + "UY", + "UZ", + "VU", + "VE", + "VN", + "VG", + "VI", + "WF", + "EH", + "YE", + "ZM", + "ZW", + "AX" + ], + "example": "US", + "type": "string" + }, + "date_of_birth": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "string" + } + ], + "example": "1998-01-01T00:00:00Z" + }, + "first_name": { + "example": "John", + "minLength": 1, + "type": "string" + }, + "id_doc_back_file": { + "description": "Only image files are accepted (.jpg, .jpeg, .png)", + "format": "uri", + "type": [ + "string", + "null" + ] + }, + "id_doc_country": { + "enum": [ + "AF", + "AL", + "DZ", + "AS", + "AD", + "AO", + "AI", + "AQ", + "AG", + "AR", + "AM", + "AW", + "AU", + "AT", + "AZ", + "BS", + "BH", + "BD", + "BB", + "BY", + "BE", + "BZ", + "BJ", + "BM", + "BT", + "BO", + "BQ", + "BA", + "BW", + "BV", + "BR", + "IO", + "BN", + "BG", + "BF", + "BI", + "CV", + "KH", + "CM", + "CA", + "KY", + "CF", + "TD", + "CL", + "CN", + "CX", + "CC", + "CO", + "KM", + "CD", + "CG", + "CK", + "CR", + "HR", + "CU", + "CW", + "CY", + "CZ", + "CI", + "DK", + "DJ", + "DM", + "DO", + "EC", + "EG", + "SV", + "GQ", + "ER", + "EE", + "SZ", + "ET", + "FK", + "FO", + "FJ", + "FI", + "FR", + "GF", + "PF", + "TF", + "GA", + "GM", + "GE", + "DE", + "GH", + "GI", + "GR", + "GL", + "GD", + "GP", + "GU", + "GT", + "GG", + "GN", + "GW", + "GY", + "HT", + "HM", + "VA", + "HN", + "HK", + "HU", + "IS", + "IN", + "ID", + "IR", + "IQ", + "IE", + "IM", + "IL", + "IT", + "JM", + "JP", + "JE", + "JO", + "KZ", + "KE", + "KI", + "KP", + "KR", + "KW", + "KG", + "LA", + "LV", + "LB", + "LS", + "LR", + "LY", + "LI", + "LT", + "LU", + "MO", + "MG", + "MW", + "MY", + "MV", + "ML", + "MT", + "MH", + "MQ", + "MR", + "MU", + "YT", + "MX", + "FM", + "MD", + "MC", + "MN", + "ME", + "MS", + "MA", + "MZ", + "MM", + "NA", + "NR", + "NP", + "NL", + "NC", + "NZ", + "NI", + "NE", + "NG", + "NU", + "NF", + "MP", + "NO", + "OM", + "PK", + "PW", + "PS", + "PA", + "PG", + "PY", + "PE", + "PH", + "PN", + "PL", + "PT", + "PR", + "QA", + "MK", + "RO", + "RU", + "RW", + "RE", + "BL", + "SH", + "KN", + "LC", + "MF", + "PM", + "VC", + "WS", + "SM", + "ST", + "SA", + "SN", + "RS", + "SC", + "SL", + "SG", + "SX", + "SK", + "SI", + "SB", + "SO", + "ZA", + "GS", + "SS", + "ES", + "LK", + "SD", + "SR", + "SJ", + "SE", + "CH", + "SY", + "TW", + "TJ", + "TZ", + "TH", + "TL", + "TG", + "TK", + "TO", + "TT", + "TN", + "TR", + "TM", + "TC", + "TV", + "UG", + "UA", + "AE", + "GB", + "UM", + "US", + "UY", + "UZ", + "VU", + "VE", + "VN", + "VG", + "VI", + "WF", + "EH", + "YE", + "ZM", + "ZW", + "AX" + ], + "example": "BR", + "type": "string" + }, + "id_doc_front_file": { + "format": "uri", + "type": "string" + }, + "id_doc_type": { + "enum": [ + "PASSPORT", + "ID_CARD", + "DRIVERS" + ], + "example": "PASSPORT", + "type": "string" + }, + "last_name": { + "example": "Doe", + "minLength": 1, + "type": "string" + }, + "ownership_percentage": { + "description": "Ownership percentage of the beneficial owner (0-100)", + "example": 25, + "maximum": 100, + "minimum": 0, + "type": [ + "integer", + "null" + ] + }, + "postal_code": { + "example": "02050", + "type": "string" + }, + "proof_of_address_doc_file": { + "description": "Please upload one document that serve as proof of address, this needs to be the same address as the one provided above. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", + "format": "uri", + "type": [ + "string", + "null" + ] + }, + "proof_of_address_doc_type": { + "enum": [ + "UTILITY_BILL", + "BANK_STATEMENT", + "RENTAL_AGREEMENT", + "TAX_DOCUMENT", + "GOVERNMENT_CORRESPONDENCE" + ], + "example": "UTILITY_BILL", + "type": [ + "string", + "null" + ] + }, + "role": { + "description": "A beneficial owner is someone who directly or indirectly owns 25% or more of your business. A controlling person is someone with significant responsibility to control, manage or direct your business (typically a CEO, senior executive officer or equivalent).", + "enum": [ + "beneficial_controlling", + "beneficial_owner", + "controlling_person" + ], + "example": "beneficial_owner", + "type": "string" + }, + "state_province_region": { + "example": "MA", + "type": "string" + }, + "tax_id": { + "example": "536804398", + "type": "string" + }, + "tax_type": { + "description": "Tax identifier type. Mandatory when country is US; must be SSN or ITIN.", + "enum": [ + "SSN", + "ITIN" + ], + "example": "SSN", + "type": [ + "string", + "null" + ] + }, + "title": { + "description": "Job title of the owner", + "example": "CEO", + "maxLength": 128, + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "role", + "first_name", + "last_name", + "date_of_birth", + "tax_id", + "address_line_1", + "city", + "state_province_region", + "country", + "postal_code", + "id_doc_country", + "id_doc_type", + "id_doc_front_file" + ], + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "phone_number": { + "example": "+13055555555", + "type": [ + "string", + "null" + ] + }, + "postal_code": { + "example": "02050", + "type": [ + "string", + "null" + ] + }, + "proof_of_address_doc_file": { + "description": "Please upload one document that serve as proof of address, this needs to be the same physical address as the one provided above. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", + "example": "https://example.com/image.png", + "format": "uri", + "type": [ + "string", + "null" + ] + }, + "proof_of_address_doc_type": { + "enum": [ + "UTILITY_BILL", + "BANK_STATEMENT", + "RENTAL_AGREEMENT", + "TAX_DOCUMENT", + "GOVERNMENT_CORRESPONDENCE" + ], + "example": "UTILITY_BILL", + "type": [ + "string", + "null" + ] + }, + "proof_of_ownership_doc_file": { + "description": "Please upload your proof of ownership below. This document usually includes information like the shareholders names and percentages. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", + "example": "https://example.com/image.png", + "format": "uri", + "type": [ + "string", + "null" + ] + }, + "publicly_traded": { + "example": false, + "type": [ + "boolean", + "null" + ] + }, + "purpose_of_transactions": { + "enum": [ + "business_transactions", + "charitable_donations", + "investment_purposes", + "payments_to_friends_or_family_abroad", + "personal_or_living_expenses", + "protect_wealth", + "purchase_good_and_services", + "receive_payment_for_freelancing", + "receive_salary", + "other" + ], + "example": "business_transactions", + "type": [ + "string", + "null" + ] + }, + "purpose_of_transactions_explanation": { + "example": "I am a business owner and I want to receive payments from my customers", + "type": [ + "string", + "null" + ] + }, + "selfie_file": { + "description": "Only image files are accepted (.jpg, .jpeg, .png)", + "example": "https://example.com/image.png", + "format": "uri", + "type": [ + "string", + "null" + ] + }, + "source_of_funds_doc_file": { + "example": "https://example.com/image.png", + "format": "uri", + "type": [ + "string", + "null" + ] + }, + "source_of_funds_doc_type": { + "enum": [ + "business_income", + "gambling_proceeds", + "gifts", + "government_benefits", + "inheritance", + "investment_loans", + "pension_retirement", + "salary", + "sale_of_assets_real_estate", + "savings", + "esops", + "investment_proceeds", + "someone_else_funds" + ], + "example": "business_income", + "type": [ + "string", + "null" + ] + }, + "source_of_wealth": { + "enum": [ + "business_dividends_or_profits", + "investments", + "asset_sales", + "client_investor_contributions", + "gambling", + "charitable_contributions", + "inheritance", + "affiliate_or_royalty_income" + ], + "example": "affiliate_or_royalty_income", + "type": [ + "string", + "null" + ] + }, + "state_province_region": { + "example": "MA", + "type": [ + "string", + "null" + ] + }, + "tax_id": { + "example": "536804398", + "type": [ + "string", + "null" + ] + }, + "tos_id": { + "example": "to_000000000000", + "maxLength": 15, + "minLength": 15, + "type": [ + "string", + "null" + ] + }, + "type": { + "enum": [ + "individual", + "business" + ], + "example": "individual", + "type": "string" + }, + "website": { + "example": "https://example.com", + "format": "uri", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "type", + "kyc_type", + "email", + "country" + ], + "type": "object" + }, + "CreateExternalCustomerTokenIn": { + "properties": { + "kyc_type": { + "enum": [ + "light", + "standard", + "enhanced" + ], + "example": "standard", + "type": "string" + }, + "type": { + "enum": [ + "individual", + "business" + ], + "example": "individual", + "type": "string" + } + }, + "required": [ + "type", + "kyc_type" + ], + "type": "object" + }, + "CreateFeedbackIn": { + "properties": { + "description": { + "example": "When I click the create payout button, nothing happens.", + "maxLength": 5000, + "minLength": 1, + "type": "string" + }, + "page_url": { + "example": "https://app.blindpay.com/instances/in_123/payouts", + "maxLength": 2000, + "type": [ + "string", + "null" + ] + }, + "title": { + "example": "Cannot create payout", + "maxLength": 200, + "minLength": 1, + "type": "string" + }, + "type": { + "enum": [ + "bug", + "suggestion", + "feedback", + "praise" + ], + "example": "bug", + "type": "string" + }, + "user_agent": { + "example": "Mozilla/5.0", + "maxLength": 500, + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "type", + "title", + "description" + ], + "type": "object" + }, + "CreateInstanceOnboardingInviteIn": { + "properties": { + "email": { + "description": "Email address of the person who will receive the onboarding invite", + "example": "collaborator@example.com", + "format": "email", + "type": "string" + } + }, + "required": [ + "email" + ], + "type": "object" + }, + "CreateInstanceRfiBody": { + "properties": { + "created_by_email": { + "format": "email", + "type": "string" + }, + "request": { + "items": { + "$ref": "#/components/schemas/RfiSection" + }, + "maxItems": 20, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "created_by_email", + "request" + ], + "type": "object" + }, + "CreateInviteIn": { + "properties": { + "email": { + "example": "john@doe.com", + "format": "email", + "type": "string" + }, + "invite_all_owned_instances": { + "default": false, + "description": "When true, the member is added/invited to every instance the inviter owns, ignoring the instance in the path.", + "example": false, + "type": "boolean" + }, + "user_role": { + "enum": [ + "owner", + "admin", + "finance", + "checker", + "operations", + "developer", + "viewer" + ], + "example": "admin", + "type": "string" + } + }, + "required": [ + "email", + "user_role" + ], + "type": "object" + }, + "CreatePayinIn": { + "properties": { + "payin_quote_id": { + "example": "pq_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + } + }, + "required": [ + "payin_quote_id" + ], + "type": "object" + }, + "CreatePayinOut": { + "properties": { + "billing_fee_amount": { + "description": "Billing fee in cents (charged at the end of the month)", + "example": 50, + "type": [ + "number", + "null" + ] + }, + "blindpay_bank_details": { + "properties": { + "account_number": { + "default": "621327727210181", + "example": "621327727210181", + "type": "string" + }, + "account_type": { + "default": "Business checking", + "example": "Business checking", + "type": "string" + }, + "ach": { + "properties": { + "account_number": { + "example": "123456789", + "type": "string" + }, + "routing_number": { + "example": "123456789", + "type": "string" + } + }, + "required": [ + "routing_number", + "account_number" + ], + "type": [ + "object", + "null" + ] + }, + "beneficiary": { + "properties": { + "address_line_1": { + "default": "8 The Green, #19364", + "example": "8 The Green, #19364", + "type": "string" + }, + "address_line_2": { + "default": "Dover, DE 19901", + "example": "Dover, DE 19901", + "type": "string" + }, + "name": { + "default": "BlindPay, Inc.", + "example": "BlindPay, Inc.", + "type": "string" + } + }, + "type": "object" + }, + "receiving_bank": { + "properties": { + "address_line_1": { + "default": "1 Letterman Drive, Building A, Suite A4-700", + "example": "1 Letterman Drive, Building A, Suite A4-700", + "type": "string" + }, + "address_line_2": { + "default": "San Francisco, CA 94129", + "example": "San Francisco, CA 94129", + "type": "string" + }, + "name": { + "default": "CFSB", + "example": "CFSB", + "type": "string" + } + }, + "type": "object" + }, + "routing_number": { + "default": "121145349", + "example": "121145349", + "type": "string" + }, + "rtp": { + "properties": { + "account_number": { + "example": "123456789", + "type": "string" + }, + "routing_number": { + "example": "123456789", + "type": "string" + } + }, + "required": [ + "routing_number", + "account_number" + ], + "type": [ + "object", + "null" + ] + }, + "swift_account_number": { + "example": "GB50TCCL04140449730892", + "type": [ + "string", + "null" + ] + }, + "swift_bic_code": { + "default": "CHASUS33", + "example": "CHASUS33", + "type": [ + "string", + "null" + ] + }, + "swift_receiving_bank": { + "properties": { + "address_line_1": { + "example": "270 Park Ave", + "type": [ + "string", + "null" + ] + }, + "address_line_2": { + "example": "New York, NY, 10017-2070", + "type": [ + "string", + "null" + ] + }, + "name": { + "example": "JPMorgan Chase", + "type": [ + "string", + "null" + ] + } + }, + "type": [ + "object", + "null" + ] + }, + "wire": { + "properties": { + "account_number": { + "example": "123456789", + "type": "string" + }, + "routing_number": { + "example": "123456789", + "type": "string" + } + }, + "required": [ + "routing_number", + "account_number" + ], + "type": [ + "object", + "null" + ] + } + }, + "required": [ + "beneficiary", + "receiving_bank" + ], + "type": "object" + }, + "clabe": { + "description": "CLABE code", + "example": "014027000000000008", + "type": [ + "string", + "null" + ] + }, + "customer_id": { + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": [ + "string", + "null" + ] + }, + "id": { + "example": "pi_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "memo_code": { + "description": "Memo code", + "example": "8K45GHBNT6BQ6462", + "type": [ + "string", + "null" + ] + }, + "partner_fee": { + "default": 0, + "description": "Payin partner fee amount in cents", + "example": 25000, + "minimum": 0, + "type": "integer" + }, + "payment_method": { + "enum": [ + "ach", + "wire", + "pix", + "ted", + "spei", + "transfers", + "pse", + "international_swift", + "rtp" + ], + "example": "pix", + "type": [ + "string", + "null" + ] + }, + "pix_code": { + "description": "PIX code", + "example": "00020101021226790014br.gov.bcb.pix2557brcode.starkinfra.com/v2/bcf07f6c4110454e9fd6f120bab13e835204000053039865802BR5915Blind Pay, Inc.6010Vila Velha62070503***6304BCAB", + "type": [ + "string", + "null" + ] + }, + "receiver_amount": { + "description": "10.10 USDC", + "example": 1010, + "type": [ + "number", + "null" + ] + }, + "sender_amount": { + "description": "52.40 BRL needs to be sent in a pix transfer", + "example": 5240, + "type": [ + "number", + "null" + ] + }, + "status": { + "description": "Payin general status", + "enum": [ + "processing", + "on_hold", + "failed", + "refunded", + "completed" + ], + "example": "processing", + "type": "string" + }, + "tracking_complete": { + "properties": { + "completed_at": { + "description": "Complete completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Complete step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "on_hold", + "type": "string" + }, + "transaction_hash": { + "description": "Complete transaction hash", + "example": "0x123...890", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "step" + ], + "type": "object" + }, + "tracking_payment": { + "properties": { + "approved_risk_sources": { + "description": "Risk sources already approved by an analyst", + "example": [ + "seon_review" + ], + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "completed_at": { + "description": "Payment completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "provider_name": { + "description": "Payment provider name", + "example": "blockchain", + "type": [ + "string", + "null" + ] + }, + "review_context": { + "additionalProperties": {}, + "description": "Structured risk context for manual review", + "type": [ + "object", + "null" + ] + }, + "review_source": { + "description": "Risk source that sent this payin to manual review", + "example": "seon_review", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Payment step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "on_hold", + "type": "string" + } + }, + "required": [ + "step" + ], + "type": "object" + }, + "tracking_transaction": { + "properties": { + "completed_at": { + "description": "Payin transaction completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "description": { + "example": "Payment from John Doe Smith", + "type": [ + "string", + "null" + ] + }, + "end_to_end_id": { + "description": "BACEN Pix end-to-end transaction ID (govt Pix ID)", + "example": "E20018183202603311320vm6ALFpJpsS", + "type": [ + "string", + "null" + ] + }, + "external_id": { + "description": "Payin transaction external id", + "example": "12345678", + "type": [ + "string", + "null" + ] + }, + "provider_name": { + "description": "Payment provider name", + "enum": [ + "Nvio Pagos", + "Brex", + "Stark Bank", + "JPMorgan Chase", + "HSBC", + "Inter", + "JP Morgan Chase", + "Bitso", + "Citi", + "CFSB", + "Triple A Technologies", + "Portage Bank" + ], + "example": "HSBC", + "type": [ + "string", + "null" + ] + }, + "provider_transaction_id": { + "description": "Payment provider transaction id", + "example": "", + "type": [ + "string", + "null" + ] + }, + "pse_instruction": { + "properties": { + "bank_code": { + "description": "PSE payer bank code", + "example": "1007", + "type": [ + "string", + "null" + ] + }, + "document_type": { + "description": "PSE payer document type", + "enum": [ + "CC", + "NIT" + ], + "example": "CC", + "type": "string" + }, + "email": { + "description": "PSE payer email", + "example": "juan@example.com", + "type": "string" + }, + "fid": { + "description": "PSE funding identifier for webhook matching", + "example": "fid_abc123", + "type": "string" + }, + "full_name": { + "description": "PSE payer full name", + "example": "Juan P\u00e9rez Garc\u00eda", + "type": "string" + }, + "payment_link": { + "description": "PSE payment link URL", + "example": "https://pse.example.com/payment/abc123", + "type": "string" + }, + "phone": { + "description": "PSE payer phone number", + "example": "+573001234567", + "type": "string" + }, + "tax_id": { + "description": "PSE payer document number", + "example": "1234567890", + "type": "string" + } + }, + "required": [ + "payment_link", + "fid", + "full_name", + "tax_id", + "document_type", + "phone", + "email" + ], + "type": [ + "object", + "null" + ] + }, + "sender_account_number": { + "example": "1234567890", + "type": [ + "string", + "null" + ] + }, + "sender_bank_code": { + "example": "00416968", + "type": [ + "string", + "null" + ] + }, + "sender_bank_name": { + "example": "Bank of America", + "type": [ + "string", + "null" + ] + }, + "sender_name": { + "example": "John Doe Smith", + "type": [ + "string", + "null" + ] + }, + "sender_tax_id": { + "example": "123.456.789-10", + "type": [ + "string", + "null" + ] + }, + "status": { + "description": "Payin transaction status", + "enum": [ + "failed", + "completed" + ], + "example": "failed", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Payin transaction step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "processing", + "type": "string" + }, + "ted_instruction": { + "properties": { + "account_number": { + "example": "01011707084-8", + "type": "string" + }, + "account_type": { + "example": "checking", + "type": "string" + }, + "bank_code": { + "example": "665", + "type": "string" + }, + "bank_name": { + "example": "STARK BANK S.A.", + "type": "string" + }, + "beneficiary_name": { + "example": "Blind Pay, Inc.", + "type": "string" + }, + "branch_code": { + "example": "5340", + "type": "string" + }, + "tax_id": { + "example": "57.599.376/0001-81", + "type": "string" + } + }, + "required": [ + "beneficiary_name", + "tax_id", + "bank_code", + "bank_name", + "branch_code", + "account_number", + "account_type" + ], + "type": [ + "object", + "null" + ] + }, + "trace_number": { + "example": "1234567890", + "type": [ + "string", + "null" + ] + }, + "transaction_hash": { + "description": "Blockchain transaction hash", + "example": "0x123...890", + "type": [ + "string", + "null" + ] + }, + "transaction_reference": { + "example": "1234567890", + "type": [ + "string", + "null" + ] + }, + "transfers_instruction": { + "properties": { + "account": { + "description": "CVU/CBU/Alias account number", + "example": "0000003100012389237485", + "type": "string" + }, + "tax_id": { + "description": "CUIT/CUIL (normalized, digits only)", + "example": "20123456783", + "type": [ + "string", + "null" + ] + }, + "type": { + "description": "Account type (CVU, CBU, or ALIAS)", + "enum": [ + "CVU", + "CBU", + "ALIAS" + ], + "example": "CVU", + "type": "string" + } + }, + "required": [ + "account", + "type" + ], + "type": [ + "object", + "null" + ] + } + }, + "required": [ + "step" + ], + "type": "object" + }, + "transaction_fee_amount": { + "description": "Transaction fee in cents (percentage-based fee)", + "example": 100, + "type": [ + "number", + "null" + ] + } + }, + "required": [ + "id", + "status", + "tracking_complete", + "tracking_payment", + "tracking_transaction", + "blindpay_bank_details" + ], + "type": "object" + }, + "CreatePayinQuoteIn": { + "properties": { + "blockchain_wallet_id": { + "example": "bw_000000000000", + "maxLength": 15, + "minLength": 15, + "type": [ + "string", + "null" + ] + }, + "cover_fees": { + "description": "If true, the sender will cover the fees. If false, the customer will cover the fees.", + "example": true, + "type": [ + "boolean", + "null" + ] + }, + "currency_type": { + "description": "", + "enum": [ + "sender", + "receiver" + ], + "example": "sender", + "type": "string" + }, + "is_otc": { + "description": "If true, the payin quote is for an OTC (Over the Counter) transaction", + "example": false, + "type": [ + "boolean", + "null" + ] + }, + "partner_fee_id": { + "example": "pf_000000000000", + "maxLength": 15, + "minLength": 15, + "type": [ + "string", + "null" + ] + }, + "payer_rules": { + "example": { + "pix_allowed_tax_ids": [ + "123.456.789-09" + ], + "pse_allowed_tax_ids": [ + "1234567890" + ], + "transfers_allowed_tax_id": "20-12345678-3" + }, + "properties": { + "pix_allowed_tax_ids": { + "items": { + "example": "123.456.789-09", + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "pse_allowed_tax_ids": { + "items": { + "example": "1234567890", + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "pse_bank_code": { + "type": [ + "string", + "null" + ] + }, + "pse_document_number": { + "type": [ + "string", + "null" + ] + }, + "pse_document_type": { + "enum": [ + "CC", + "NIT" + ], + "type": [ + "string", + "null" + ] + }, + "pse_email": { + "format": "email", + "type": [ + "string", + "null" + ] + }, + "pse_full_name": { + "maxLength": 50, + "type": [ + "string", + "null" + ] + }, + "pse_phone": { + "pattern": "^\\+573\\d{9}$", + "type": [ + "string", + "null" + ] + }, + "transfers_allowed_tax_id": { + "example": "20-12345678-3", + "type": [ + "string", + "null" + ] + } + }, + "type": [ + "object", + "null" + ] + }, + "payment_method": { + "enum": [ + "ach", + "wire", + "pix", + "ted", + "spei", + "transfers", + "pse", + "international_swift", + "rtp" + ], + "example": "pix", + "type": "string" + }, + "request_amount": { + "description": "1000 represents 10.00, 2050 represents 20.50", + "example": 1000, + "minimum": 500, + "type": "integer" + }, + "token": { + "enum": [ + "USDC", + "USDT", + "USDB" + ], + "example": "USDC", + "type": "string" + }, + "wallet_id": { + "example": "bl_000000000000", + "maxLength": 15, + "minLength": 15, + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "currency_type", + "request_amount", + "payment_method", + "token" + ], + "type": "object" + }, + "CreatePayinQuoteOut": { + "properties": { + "billing_fee_amount": { + "description": "Billing fee in cents (charged at the end of the month)", + "example": 50, + "type": [ + "number", + "null" + ] + }, + "blindpay_quotation": { + "description": "1 USD = 5.05 BRL (commercial quotation + (blindpay taxes))", + "example": 505, + "type": [ + "number", + "null" + ] + }, + "commercial_quotation": { + "description": "1 USD = 4.95 BRL", + "example": 495, + "type": [ + "number", + "null" + ] + }, + "expires_at": { + "description": "Epoch unix timestamp that represents the final datetime to transaction be received on blockchain", + "example": 1712958191, + "type": [ + "number", + "null" + ] + }, + "flat_fee": { + "description": "0.5 USDC", + "example": 50, + "type": [ + "number", + "null" + ] + }, + "id": { + "example": "qu_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "is_otc": { + "description": "If true, the payin quote is for an OTC (Over the Counter) transaction", + "example": false, + "type": [ + "boolean", + "null" + ] + }, + "partner_fee_amount": { + "default": 0, + "description": "1.5 USDC", + "example": 150, + "type": [ + "number", + "null" + ] + }, + "receiver_amount": { + "description": "10.10 USDC", + "example": 1010, + "type": [ + "number", + "null" + ] + }, + "sender_amount": { + "description": "52.40 BRL needs to be sent in a pix transfer", + "example": 5240, + "type": [ + "number", + "null" + ] + } + }, + "required": [ + "id", + "expires_at", + "commercial_quotation", + "blindpay_quotation", + "receiver_amount", + "sender_amount", + "flat_fee" + ], + "type": "object" + }, + "CreatePortalSessionSchemaOut": { + "properties": { + "url": { + "description": "Stripe Customer Portal session URL", + "example": "https://billing.stripe.com/p/session/test_xxx", + "format": "uri", + "type": "string" + } + }, + "required": [ + "url" + ], + "type": "object" + }, + "CreateRecurringItemSchemaIn": { + "properties": { + "amount": { + "description": "Amount in cents", + "example": 5000, + "minimum": 0, + "type": "integer" + }, + "description": { + "example": "Swift Addon", + "minLength": 1, + "type": "string" + }, + "first_invoice_sequence": { + "example": 1, + "exclusiveMinimum": 0, + "type": "integer" + }, + "frequency_months": { + "example": 1, + "exclusiveMinimum": 0, + "type": "integer" + }, + "product_id": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "description", + "amount", + "frequency_months", + "first_invoice_sequence" + ], + "type": "object" + }, + "CreateRfiBody": { + "properties": { + "created_by_email": { + "format": "email", + "type": "string" + }, + "keep_customer_approved": { + "default": false, + "description": "When true, sets the customer to approved_rfi (keeps full access while the RFI is open) instead of compliance_request (blocked).", + "example": false, + "type": "boolean" + }, + "request": { + "items": { + "$ref": "#/components/schemas/RfiSection" + }, + "maxItems": 20, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "created_by_email", + "request" + ], + "type": "object" + }, + "CreateTransferIn": { + "properties": { + "transfer_quote_id": { + "example": "pq_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + } + }, + "required": [ + "transfer_quote_id" + ], + "type": "object" + }, + "CreateTransferOut": { + "properties": { + "id": { + "example": "pa_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "status": { + "description": "Transfer general status", + "enum": [ + "processing", + "failed", + "refunded", + "completed" + ], + "example": "processing", + "type": "string" + }, + "tracking_bridge_swap": { + "properties": { + "completed_at": { + "description": "Complete completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "error_message": { + "example": "Gas fee is too low", + "type": [ + "string", + "null" + ] + }, + "gas_fee": { + "description": "Gas fee related to transaction", + "example": "100", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Complete step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "on_hold", + "type": "string" + }, + "transaction_hash": { + "description": "Complete transaction hash", + "example": "0x123...890", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "step" + ], + "type": "object" + }, + "tracking_complete": { + "properties": { + "completed_at": { + "description": "Complete completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "error_message": { + "example": "Gas fee is too low", + "type": [ + "string", + "null" + ] + }, + "gas_fee": { + "description": "Gas fee related to transaction", + "example": "100", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Complete step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "on_hold", + "type": "string" + }, + "transaction_hash": { + "description": "Complete transaction hash", + "example": "0x123...890", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "step" + ], + "type": "object" + }, + "tracking_paymaster": { + "properties": { + "completed_at": { + "description": "Complete completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "error_message": { + "example": "Gas fee is too low", + "type": [ + "string", + "null" + ] + }, + "gas_fee": { + "description": "Gas fee related to transaction", + "example": "100", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Complete step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "on_hold", + "type": "string" + }, + "transaction_hash": { + "description": "Complete transaction hash", + "example": "0x123...890", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "step" + ], + "type": "object" + }, + "tracking_transaction_monitoring": { + "properties": { + "blockchain_screening": { + "description": "Blindpay screening step", + "example": 1, + "maximum": 100, + "minimum": 0, + "type": [ + "number", + "null" + ] + }, + "completed_at": { + "description": "Transfer transaction completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "risk_score": { + "description": "Risk score", + "example": 1, + "maximum": 100, + "minimum": 0, + "type": [ + "number", + "null" + ] + }, + "step": { + "description": "Transaction monitoring step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "processing", + "type": "string" + } + }, + "required": [ + "step" + ], + "type": "object" + } + }, + "required": [ + "id", + "status", + "tracking_bridge_swap", + "tracking_complete", + "tracking_paymaster", + "tracking_transaction_monitoring" + ], + "type": "object" + }, + "CreateTransferQuoteIn": { + "properties": { + "amount_reference": { + "description": "", + "enum": [ + "sender", + "receiver" + ], + "example": "sender", + "type": "string" + }, + "cover_fees": { + "description": "If true, the sender will cover the fees. If false, the customer will cover the fees.", + "example": true, + "type": [ + "boolean", + "null" + ] + }, + "customer_network": { + "enum": [ + "base", + "sepolia", + "arbitrum_sepolia", + "base_sepolia", + "arbitrum", + "polygon", + "polygon_amoy", + "ethereum", + "stellar", + "stellar_testnet", + "tron", + "solana", + "solana_devnet" + ], + "example": "polygon", + "type": "string" + }, + "customer_token": { + "enum": [ + "USDC", + "USDT", + "USDB" + ], + "example": "USDC", + "type": "string" + }, + "customer_wallet_address": { + "example": "0xDD6a3aD0949396e57C7738ba8FC1A46A5a1C372C", + "maxLength": 64, + "minLength": 32, + "type": "string" + }, + "partner_fee_id": { + "example": "pf_000000000000", + "maxLength": 15, + "minLength": 15, + "type": [ + "string", + "null" + ] + }, + "request_amount": { + "description": "100 represents 1, 2050 represents 20.50", + "example": 1000, + "minimum": 1, + "type": "integer" + }, + "sender_token": { + "enum": [ + "USDC", + "USDT", + "USDB" + ], + "example": "USDC", + "type": "string" + }, + "wallet_id": { + "example": "bl_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + } + }, + "required": [ + "wallet_id", + "amount_reference", + "request_amount", + "sender_token", + "customer_wallet_address", + "customer_token", + "customer_network" + ], + "type": "object" + }, + "CreateTransferQuoteOut": { + "properties": { + "blindpay_quotation": { + "description": "1 USD = 5.05 BRL (commercial quotation + (blindpay taxes))", + "example": 505, + "type": [ + "number", + "null" + ] + }, + "commercial_quotation": { + "description": "1 USD = 4.95 BRL", + "example": 495, + "type": [ + "number", + "null" + ] + }, + "expires_at": { + "description": "Epoch unix timestamp that represents the final datetime to transaction be received on blockchain", + "example": 1712958191, + "type": [ + "number", + "null" + ] + }, + "flat_fee": { + "description": "0.5 USDC", + "example": 50, + "type": "number" + }, + "id": { + "example": "qu_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "partner_fee_amount": { + "default": 0, + "description": "1.5 USDC", + "example": 150, + "type": [ + "number", + "null" + ] + }, + "receiver_amount": { + "description": "10.10 USDC", + "example": 1010, + "type": "number" + }, + "sender_amount": { + "description": "52.40 BRL needs to be sent in a pix transfer", + "example": 5240, + "type": "number" + } + }, + "required": [ + "id", + "expires_at", + "commercial_quotation", + "blindpay_quotation", + "receiver_amount", + "sender_amount", + "flat_fee" + ], + "type": "object" + }, + "CreateTransferSchemaOut": { + "properties": { + "id": { + "example": "pa_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "status": { + "description": "Transfer general status", + "enum": [ + "processing", + "failed", + "refunded", + "completed" + ], + "example": "processing", + "type": "string" + }, + "tracking_bridge_swap": { + "properties": { + "completed_at": { + "description": "Complete completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "error_message": { + "example": "Gas fee is too low", + "type": [ + "string", + "null" + ] + }, + "gas_fee": { + "description": "Gas fee related to transaction", + "example": "100", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Complete step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "on_hold", + "type": "string" + }, + "transaction_hash": { + "description": "Complete transaction hash", + "example": "0x123...890", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "step" + ], + "type": "object" + }, + "tracking_complete": { + "properties": { + "completed_at": { + "description": "Complete completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "error_message": { + "example": "Gas fee is too low", + "type": [ + "string", + "null" + ] + }, + "gas_fee": { + "description": "Gas fee related to transaction", + "example": "100", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Complete step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "on_hold", + "type": "string" + }, + "transaction_hash": { + "description": "Complete transaction hash", + "example": "0x123...890", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "step" + ], + "type": "object" + }, + "tracking_paymaster": { + "properties": { + "completed_at": { + "description": "Complete completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "error_message": { + "example": "Gas fee is too low", + "type": [ + "string", + "null" + ] + }, + "gas_fee": { + "description": "Gas fee related to transaction", + "example": "100", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Complete step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "on_hold", + "type": "string" + }, + "transaction_hash": { + "description": "Complete transaction hash", + "example": "0x123...890", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "step" + ], + "type": "object" + }, + "tracking_transaction_monitoring": { + "properties": { + "blockchain_screening": { + "description": "Blindpay screening step", + "example": 1, + "maximum": 100, + "minimum": 0, + "type": [ + "number", + "null" + ] + }, + "completed_at": { + "description": "Transfer transaction completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "risk_score": { + "description": "Risk score", + "example": 1, + "maximum": 100, + "minimum": 0, + "type": [ + "number", + "null" + ] + }, + "step": { + "description": "Transaction monitoring step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "processing", + "type": "string" + } + }, + "required": [ + "step" + ], + "type": "object" + } + }, + "required": [ + "id", + "status", + "tracking_bridge_swap", + "tracking_complete", + "tracking_paymaster", + "tracking_transaction_monitoring" + ], + "type": "object" + }, + "CreateVirtualAccountIn": { + "properties": { + "banking_partner": { + "enum": [ + "jpmorgan", + "citi", + "hsbc", + "cfsb", + "portage" + ], + "example": "jpmorgan", + "type": "string" + }, + "blockchain_wallet_id": { + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "sole_proprietor_doc_file": { + "example": "https://example.com/document.pdf", + "format": "uri", + "type": [ + "string", + "null" + ] + }, + "sole_proprietor_doc_type": { + "enum": [ + "master_service_agreement", + "salary_slip", + "bank_statement" + ], + "example": "master_service_agreement", + "type": [ + "string", + "null" + ] + }, + "token": { + "enum": [ + "USDC", + "USDT", + "USDB" + ], + "example": "USDC", + "type": "string" + } + }, + "required": [ + "banking_partner", + "token", + "blockchain_wallet_id" + ], + "type": "object" + }, + "CreateWalletIn": { + "properties": { + "external_id": { + "example": "your-database-id", + "maxLength": 255, + "type": [ + "string", + "null" + ] + }, + "name": { + "example": "Blindpay Wallet", + "maxLength": 255, + "type": "string" + }, + "network": { + "enum": [ + "base", + "sepolia", + "arbitrum_sepolia", + "base_sepolia", + "arbitrum", + "polygon", + "polygon_amoy", + "ethereum", + "stellar", + "stellar_testnet", + "tron", + "solana", + "solana_devnet" + ], + "example": "polygon", + "type": "string" + } + }, + "required": [ + "network", + "name" + ], + "type": "object" + }, + "CurrentUsageSchema": { + "properties": { + "due_date": { + "description": "Expected due date when invoice is generated (null for partner-fee-only invoices)", + "example": "2025-01-21T00:00:00.000Z", + "format": "date-time", + "type": [ + "string", + "null" + ] + }, + "items": { + "description": "Recurring addon items due for the current period", + "items": { + "$ref": "#/components/schemas/AddonItemSchema" + }, + "type": "array" + }, + "minimum_monthly_amount": { + "description": "Minimum monthly amount in cents", + "example": 200000, + "type": "integer" + }, + "payin_billing_fees": { + "description": "Payin billing fees in cents", + "example": 10000, + "type": "integer" + }, + "payin_partner_fees": { + "description": "Payin partner fees in cents (earnings)", + "example": 25000, + "type": "integer" + }, + "payout_billing_fees": { + "description": "Payout billing fees in cents", + "example": 10000, + "type": "integer" + }, + "payout_partner_fees": { + "description": "Payout partner fees in cents (earnings)", + "example": 25000, + "type": "integer" + }, + "period_end": { + "description": "End of billing period", + "example": "2025-12-31T23:59:59.999Z", + "format": "date-time", + "type": "string" + }, + "period_start": { + "description": "Start of billing period", + "example": "2025-12-01T00:00:00.000Z", + "format": "date-time", + "type": "string" + }, + "subscription_plan": { + "description": "Subscription plan: Basic, Business, or Enterprise", + "enum": [ + "Basic", + "Business", + "Enterprise" + ], + "example": "Basic", + "type": [ + "string", + "null" + ] + }, + "subscription_plan_amount": { + "description": "Subscription plan amount in cents", + "example": 24900, + "type": "integer" + }, + "total_to_collect": { + "description": "Total partner fees to collect (earnings) in cents", + "example": 50000, + "type": "integer" + }, + "total_to_pay": { + "description": "Total amount owed to Blindpay in cents", + "example": 40000, + "type": "integer" + }, + "virtual_account_fees": { + "description": "Virtual account fees in cents", + "example": 10000, + "type": "integer" + }, + "virtual_accounts": { + "$ref": "#/components/schemas/VirtualAccountsUsage" + } + }, + "required": [ + "period_start", + "period_end", + "due_date", + "minimum_monthly_amount", + "subscription_plan_amount", + "virtual_accounts", + "virtual_account_fees", + "payin_billing_fees", + "payin_partner_fees", + "payout_billing_fees", + "payout_partner_fees", + "total_to_pay", + "total_to_collect", + "items" + ], + "type": "object" + }, + "CustomerDeleteWebhookOut": { + "properties": { + "customer_id": { + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "deleted_at": { + "format": "date-time", + "type": "string" + }, + "id": { + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "instance_id": { + "example": "in_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "kyc_status": { + "enum": [ + "verifying", + "approved", + "rejected", + "deprecated", + "pending_review", + "awaiting_contract", + "compliance_request", + "approved_rfi" + ], + "example": "verifying", + "type": "string" + }, + "kyc_type": { + "enum": [ + "light", + "standard", + "enhanced" + ], + "example": "standard", + "type": "string" + }, + "type": { + "enum": [ + "individual", + "business" + ], + "example": "individual", + "type": "string" + }, + "webhook_event": { + "enum": [ + "customer.delete" + ], + "type": "string" + } + }, + "required": [ + "webhook_event", + "id", + "customer_id", + "instance_id", + "type", + "kyc_type", + "kyc_status", + "deleted_at" + ], + "type": "object" + }, + "CustomerLimitIncreaseIn": { + "properties": { + "daily": { + "example": 200000, + "maximum": 100000000000, + "type": [ + "integer", + "null" + ] + }, + "monthly": { + "example": 1000000, + "maximum": 100000000000, + "type": [ + "integer", + "null" + ] + }, + "per_transaction": { + "example": 100000, + "maximum": 100000000000, + "type": [ + "integer", + "null" + ] + }, + "supporting_document_file": { + "example": "https://example.com/document.pdf", + "format": "uri", + "type": "string" + }, + "supporting_document_type": { + "enum": [ + "individual_bank_statement", + "individual_tax_return", + "individual_proof_of_income", + "individual_pay_stub", + "individual_employment_letter", + "individual_investment_statement", + "individual_crypto_exchange_statement", + "individual_blockchain_wallet_statement", + "business_bank_statement", + "business_financial_statements", + "business_tax_return", + "business_contract", + "business_accounts_receivable", + "business_merchant_processor_statement", + "business_shareholder_loan" + ], + "example": "individual_bank_statement", + "type": "string" + } + }, + "required": [ + "per_transaction", + "daily", + "monthly", + "supporting_document_type", + "supporting_document_file" + ], + "type": "object" + }, + "CustomerLimitIncreaseOut": { + "properties": { + "id": { + "example": "rl_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "CustomerNewWebhookOut": { + "properties": { + "account_purpose": { + "enum": [ + "charitable_donations", + "ecommerce_retail_payments", + "investment_purposes", + "business_expenses", + "payments_to_friends_or_family_abroad", + "personal_or_living_expenses", + "protect_wealth", + "purchase_goods_and_services", + "receive_payments_for_goods_and_services", + "tax_optimization", + "third_party_money_transmission", + "payroll", + "treasury_management", + "other" + ], + "example": "treasury_management", + "type": [ + "string", + "null" + ] + }, + "account_purpose_other": { + "description": "Required when account_purpose is \"other\". Max 512 characters.", + "example": "Custom account purpose description", + "maxLength": 512, + "type": [ + "string", + "null" + ] + }, + "additional_info": { + "description": "Optional extra documents or notes for this customer. `label` is a known category, `value` is either a URL to upload or a free-text description. Any URLs are downloaded and re-hosted on Blindpay storage before being stored.", + "example": [ + { + "label": "EIN_LETTER", + "value": "https://example.com/ein.pdf" + }, + { + "label": "FLOW_OF_FUNDS", + "value": "Funds originate from US payroll deposits, forwarded weekly to customer." + } + ], + "items": { + "$ref": "#/components/schemas/AdditionalInfoItem" + }, + "type": [ + "array", + "null" + ] + }, + "address_line_1": { + "example": "738 Plain St", + "type": [ + "string", + "null" + ] + }, + "address_line_2": { + "example": "Building 22", + "type": [ + "string", + "null" + ] + }, + "alternate_name": { + "example": "Company Name Inc.", + "type": [ + "string", + "null" + ] + }, + "aml_hits": { + "description": "AML screening match details from SEON.", + "example": { + "has_adversemedia_match": false, + "has_crimelist_match": false, + "has_pep_match": false, + "has_sanction_match": false, + "has_watchlist_match": false + }, + "properties": { + "has_adversemedia_match": { + "default": false, + "type": "boolean" + }, + "has_crimelist_match": { + "default": false, + "type": "boolean" + }, + "has_pep_match": { + "default": false, + "type": "boolean" + }, + "has_sanction_match": { + "default": false, + "type": "boolean" + }, + "has_watchlist_match": { + "default": false, + "type": "boolean" + } + }, + "type": [ + "object", + "null" + ] + }, + "aml_status": { + "description": "AML screening status from SEON. null = not yet screened.", + "enum": [ + "clear", + "hit", + "error" + ], + "example": "clear", + "type": [ + "string", + "null" + ] + }, + "business_description": { + "example": "Software development company", + "maxLength": 1000, + "type": [ + "string", + "null" + ] + }, + "business_industry": { + "enum": [ + "111998", + "112120", + "113310", + "115114", + "541211", + "541810", + "541430", + "541715", + "541930", + "561422", + "561311", + "561612", + "561740", + "561730", + "236115", + "236220", + "237310", + "238210", + "811111", + "812111", + "812112", + "532111", + "624410", + "541922", + "811210", + "812199", + "611110", + "611310", + "611410", + "611710", + "211120", + "212114", + "221310", + "562111", + "562920", + "213112", + "522110", + "522210", + "522320", + "523150", + "523940", + "523999", + "524113", + "813110", + "813211", + "813219", + "551112", + "721110", + "722511", + "722513", + "561510", + "713110", + "713210", + "712110", + "711110", + "711211", + "621111", + "621210", + "622110", + "623110", + "621511", + "623220", + "541940", + "621399", + "621910", + "541110", + "311421", + "337121", + "322220", + "339920", + "334210", + "339930", + "312130", + "334111", + "334118", + "325412", + "339112", + "336110", + "336390", + "315990", + "313110", + "339910", + "516120", + "513130", + "512250", + "519130", + "711410", + "711510", + "531110", + "531120", + "531130", + "531190", + "531210", + "531311", + "531312", + "531320", + "531390", + "454110", + "445110", + "455110", + "457110", + "449210", + "444110", + "459210", + "459120", + "445320", + "458110", + "458210", + "458310", + "455219", + "424210", + "456110", + "446120", + "541511", + "541512", + "541519", + "518210", + "511210", + "517111", + "517112", + "517410", + "481111", + "483111", + "485210", + "488510", + "484121", + "493110", + "423430", + "423690", + "423110", + "423830", + "423840", + "423510", + "424690", + "424990", + "424410", + "424480", + "423940", + "541611", + "541618", + "541330", + "541990", + "541214", + "561499" + ], + "example": "541511", + "type": [ + "string", + "null" + ] + }, + "business_type": { + "enum": [ + "corporation", + "llc", + "partnership", + "sole_proprietorship", + "trust", + "non_profit" + ], + "example": "llc", + "type": [ + "string", + "null" + ] + }, + "city": { + "example": "Marshfield", + "type": [ + "string", + "null" + ] + }, + "country": { + "enum": [ + "AF", + "AL", + "DZ", + "AS", + "AD", + "AO", + "AI", + "AQ", + "AG", + "AR", + "AM", + "AW", + "AU", + "AT", + "AZ", + "BS", + "BH", + "BD", + "BB", + "BY", + "BE", + "BZ", + "BJ", + "BM", + "BT", + "BO", + "BQ", + "BA", + "BW", + "BV", + "BR", + "IO", + "BN", + "BG", + "BF", + "BI", + "CV", + "KH", + "CM", + "CA", + "KY", + "CF", + "TD", + "CL", + "CN", + "CX", + "CC", + "CO", + "KM", + "CD", + "CG", + "CK", + "CR", + "HR", + "CU", + "CW", + "CY", + "CZ", + "CI", + "DK", + "DJ", + "DM", + "DO", + "EC", + "EG", + "SV", + "GQ", + "ER", + "EE", + "SZ", + "ET", + "FK", + "FO", + "FJ", + "FI", + "FR", + "GF", + "PF", + "TF", + "GA", + "GM", + "GE", + "DE", + "GH", + "GI", + "GR", + "GL", + "GD", + "GP", + "GU", + "GT", + "GG", + "GN", + "GW", + "GY", + "HT", + "HM", + "VA", + "HN", + "HK", + "HU", + "IS", + "IN", + "ID", + "IR", + "IQ", + "IE", + "IM", + "IL", + "IT", + "JM", + "JP", + "JE", + "JO", + "KZ", + "KE", + "KI", + "KP", + "KR", + "KW", + "KG", + "LA", + "LV", + "LB", + "LS", + "LR", + "LY", + "LI", + "LT", + "LU", + "MO", + "MG", + "MW", + "MY", + "MV", + "ML", + "MT", + "MH", + "MQ", + "MR", + "MU", + "YT", + "MX", + "FM", + "MD", + "MC", + "MN", + "ME", + "MS", + "MA", + "MZ", + "MM", + "NA", + "NR", + "NP", + "NL", + "NC", + "NZ", + "NI", + "NE", + "NG", + "NU", + "NF", + "MP", + "NO", + "OM", + "PK", + "PW", + "PS", + "PA", + "PG", + "PY", + "PE", + "PH", + "PN", + "PL", + "PT", + "PR", + "QA", + "MK", + "RO", + "RU", + "RW", + "RE", + "BL", + "SH", + "KN", + "LC", + "MF", + "PM", + "VC", + "WS", + "SM", + "ST", + "SA", + "SN", + "RS", + "SC", + "SL", + "SG", + "SX", + "SK", + "SI", + "SB", + "SO", + "ZA", + "GS", + "SS", + "ES", + "LK", + "SD", + "SR", + "SJ", + "SE", + "CH", + "SY", + "TW", + "TJ", + "TZ", + "TH", + "TL", + "TG", + "TK", + "TO", + "TT", + "TN", + "TR", + "TM", + "TC", + "TV", + "UG", + "UA", + "AE", + "GB", + "UM", + "US", + "UY", + "UZ", + "VU", + "VE", + "VN", + "VG", + "VI", + "WF", + "EH", + "YE", + "ZM", + "ZW", + "AX" + ], + "example": "US", + "type": "string" + }, + "created_at": { + "example": "2021-01-01T00:00:00Z", + "format": "date-time", + "type": [ + "string", + "null" + ] + }, + "customer_id": { + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "date_of_birth": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "string" + }, + { + "type": "null" + } + ], + "example": "1998-01-01T00:00:00Z" + }, + "email": { + "example": "email@example.com", + "format": "email", + "type": "string" + }, + "estimated_annual_revenue": { + "enum": [ + "0_99999", + "100000_999999", + "1000000_9999999", + "10000000_49999999", + "50000000_249999999", + "250000000_plus" + ], + "example": "1000000_9999999", + "type": [ + "string", + "null" + ] + }, + "external_id": { + "example": "your_company_external_id", + "type": [ + "string", + "null" + ] + }, + "first_name": { + "example": "John", + "type": [ + "string", + "null" + ] + }, + "formation_date": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "string" + }, + { + "type": "null" + } + ], + "example": "1998-01-01T00:00:00Z", + "format": "date-time" + }, + "fraud_warnings": { + "example": [ + { + "id": "UC114", + "name": "User never used a Datacenter proxy and this device before", + "operation": "+", + "score": 10 + } + ], + "items": { + "properties": { + "id": { + "type": [ + "string", + "null" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + }, + "operation": { + "type": [ + "string", + "null" + ] + }, + "score": { + "type": [ + "number", + "null" + ] + } + }, + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "id": { + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "id_doc_back_file": { + "description": "Only image files are accepted (.jpg, .jpeg, .png)", + "example": "https://example.com/image.png", + "type": [ + "string", + "null" + ] + }, + "id_doc_country": { + "enum": [ + "AF", + "AL", + "DZ", + "AS", + "AD", + "AO", + "AI", + "AQ", + "AG", + "AR", + "AM", + "AW", + "AU", + "AT", + "AZ", + "BS", + "BH", + "BD", + "BB", + "BY", + "BE", + "BZ", + "BJ", + "BM", + "BT", + "BO", + "BQ", + "BA", + "BW", + "BV", + "BR", + "IO", + "BN", + "BG", + "BF", + "BI", + "CV", + "KH", + "CM", + "CA", + "KY", + "CF", + "TD", + "CL", + "CN", + "CX", + "CC", + "CO", + "KM", + "CD", + "CG", + "CK", + "CR", + "HR", + "CU", + "CW", + "CY", + "CZ", + "CI", + "DK", + "DJ", + "DM", + "DO", + "EC", + "EG", + "SV", + "GQ", + "ER", + "EE", + "SZ", + "ET", + "FK", + "FO", + "FJ", + "FI", + "FR", + "GF", + "PF", + "TF", + "GA", + "GM", + "GE", + "DE", + "GH", + "GI", + "GR", + "GL", + "GD", + "GP", + "GU", + "GT", + "GG", + "GN", + "GW", + "GY", + "HT", + "HM", + "VA", + "HN", + "HK", + "HU", + "IS", + "IN", + "ID", + "IR", + "IQ", + "IE", + "IM", + "IL", + "IT", + "JM", + "JP", + "JE", + "JO", + "KZ", + "KE", + "KI", + "KP", + "KR", + "KW", + "KG", + "LA", + "LV", + "LB", + "LS", + "LR", + "LY", + "LI", + "LT", + "LU", + "MO", + "MG", + "MW", + "MY", + "MV", + "ML", + "MT", + "MH", + "MQ", + "MR", + "MU", + "YT", + "MX", + "FM", + "MD", + "MC", + "MN", + "ME", + "MS", + "MA", + "MZ", + "MM", + "NA", + "NR", + "NP", + "NL", + "NC", + "NZ", + "NI", + "NE", + "NG", + "NU", + "NF", + "MP", + "NO", + "OM", + "PK", + "PW", + "PS", + "PA", + "PG", + "PY", + "PE", + "PH", + "PN", + "PL", + "PT", + "PR", + "QA", + "MK", + "RO", + "RU", + "RW", + "RE", + "BL", + "SH", + "KN", + "LC", + "MF", + "PM", + "VC", + "WS", + "SM", + "ST", + "SA", + "SN", + "RS", + "SC", + "SL", + "SG", + "SX", + "SK", + "SI", + "SB", + "SO", + "ZA", + "GS", + "SS", + "ES", + "LK", + "SD", + "SR", + "SJ", + "SE", + "CH", + "SY", + "TW", + "TJ", + "TZ", + "TH", + "TL", + "TG", + "TK", + "TO", + "TT", + "TN", + "TR", + "TM", + "TC", + "TV", + "UG", + "UA", + "AE", + "GB", + "UM", + "US", + "UY", + "UZ", + "VU", + "VE", + "VN", + "VG", + "VI", + "WF", + "EH", + "YE", + "ZM", + "ZW", + "AX" + ], + "example": "BR", + "type": [ + "string", + "null" + ] + }, + "id_doc_front_file": { + "description": "Only image files are accepted (.jpg, .jpeg, .png)", + "example": "https://example.com/image.png", + "type": [ + "string", + "null" + ] + }, + "id_doc_type": { + "enum": [ + "PASSPORT", + "ID_CARD", + "DRIVERS" + ], + "example": "PASSPORT", + "type": [ + "string", + "null" + ] + }, + "image_url": { + "example": "https://example.com/image.png", + "type": [ + "string", + "null" + ] + }, + "incorporation_doc_file": { + "description": "Please upload your articles of incorporation below. The articles of incorporation or a certificate of incorporation usually includes information like the company name, business purpose, number of shares offered, value of shares, etc. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", + "example": "https://example.com/image.png", + "type": [ + "string", + "null" + ] + }, + "instance_id": { + "example": "in_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "ip_address": { + "example": "127.0.0.1", + "format": "ip", + "type": [ + "string", + "null" + ] + }, + "is_fbo": { + "example": false, + "type": [ + "boolean", + "null" + ] + }, + "is_tos_accepted": { + "type": [ + "boolean", + "null" + ] + }, + "kyc_status": { + "enum": [ + "verifying", + "approved", + "rejected", + "deprecated", + "pending_review", + "awaiting_contract", + "compliance_request", + "approved_rfi" + ], + "example": "verifying", + "type": "string" + }, + "kyc_type": { + "enum": [ + "light", + "standard", + "enhanced" + ], + "example": "standard", + "type": "string" + }, + "kyc_warnings": { + "description": "You can find more information here: https://docs.aiprise.com/docs/warnings-and-error-codes", + "example": [ + { + "code": "BIRTH_DATE_MISMATCH", + "message": "Mismatch between supplied birth date and extracted/looked up birth date.", + "resolution_status": "UNRESOLVED", + "warning_id": "38170889-50aa-4271-9eb1-61113ebf408c" + } + ], + "items": { + "properties": { + "code": { + "type": [ + "string", + "null" + ] + }, + "message": { + "type": [ + "string", + "null" + ] + }, + "resolution_status": { + "type": [ + "string", + "null" + ] + }, + "warning_id": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "last_name": { + "example": "Doe", + "type": [ + "string", + "null" + ] + }, + "latitude": { + "description": "Optional geolocation latitude collected from the customer. Forwarded to AiPrise and SEON for fraud analysis.", + "example": 37.7749, + "maximum": 90, + "minimum": -90, + "type": [ + "number", + "null" + ] + }, + "legal_name": { + "example": "Company Name Inc.", + "type": [ + "string", + "null" + ] + }, + "limit": { + "properties": { + "daily": { + "example": 200000, + "type": [ + "number", + "null" + ] + }, + "monthly": { + "example": 1000000, + "type": [ + "number", + "null" + ] + }, + "per_transaction": { + "example": 100000, + "type": [ + "number", + "null" + ] + } + }, + "required": [ + "per_transaction", + "daily", + "monthly" + ], + "type": "object" + }, + "longitude": { + "description": "Optional geolocation longitude collected from the customer. Forwarded to AiPrise and SEON for fraud analysis.", + "example": -122.4194, + "maximum": 180, + "minimum": -180, + "type": [ + "number", + "null" + ] + }, + "occupation": { + "example": "Software Engineer", + "maxLength": 255, + "type": [ + "string", + "null" + ] + }, + "owners": { + "description": "Customer owners", + "example": [ + { + "address_line_1": "738 Plain St", + "address_line_2": "Building 22", + "city": "Marshfield", + "country": "US", + "first_name": "John", + "id": "ub_000000000000", + "id_doc_back_file": "https://example.com/image.png", + "id_doc_country": "BR", + "id_doc_front_file": "https://example.com/image.png", + "id_doc_type": "PASSPORT", + "last_name": "Doe", + "postal_code": "02050", + "state_province_region": "MA" + } + ], + "items": { + "properties": { + "address_line_1": { + "example": "738 Plain St", + "type": "string" + }, + "address_line_2": { + "example": "Building 22", + "type": [ + "string", + "null" + ] + }, + "city": { + "example": "Marshfield", + "type": "string" + }, + "country": { + "enum": [ + "AF", + "AL", + "DZ", + "AS", + "AD", + "AO", + "AI", + "AQ", + "AG", + "AR", + "AM", + "AW", + "AU", + "AT", + "AZ", + "BS", + "BH", + "BD", + "BB", + "BY", + "BE", + "BZ", + "BJ", + "BM", + "BT", + "BO", + "BQ", + "BA", + "BW", + "BV", + "BR", + "IO", + "BN", + "BG", + "BF", + "BI", + "CV", + "KH", + "CM", + "CA", + "KY", + "CF", + "TD", + "CL", + "CN", + "CX", + "CC", + "CO", + "KM", + "CD", + "CG", + "CK", + "CR", + "HR", + "CU", + "CW", + "CY", + "CZ", + "CI", + "DK", + "DJ", + "DM", + "DO", + "EC", + "EG", + "SV", + "GQ", + "ER", + "EE", + "SZ", + "ET", + "FK", + "FO", + "FJ", + "FI", + "FR", + "GF", + "PF", + "TF", + "GA", + "GM", + "GE", + "DE", + "GH", + "GI", + "GR", + "GL", + "GD", + "GP", + "GU", + "GT", + "GG", + "GN", + "GW", + "GY", + "HT", + "HM", + "VA", + "HN", + "HK", + "HU", + "IS", + "IN", + "ID", + "IR", + "IQ", + "IE", + "IM", + "IL", + "IT", + "JM", + "JP", + "JE", + "JO", + "KZ", + "KE", + "KI", + "KP", + "KR", + "KW", + "KG", + "LA", + "LV", + "LB", + "LS", + "LR", + "LY", + "LI", + "LT", + "LU", + "MO", + "MG", + "MW", + "MY", + "MV", + "ML", + "MT", + "MH", + "MQ", + "MR", + "MU", + "YT", + "MX", + "FM", + "MD", + "MC", + "MN", + "ME", + "MS", + "MA", + "MZ", + "MM", + "NA", + "NR", + "NP", + "NL", + "NC", + "NZ", + "NI", + "NE", + "NG", + "NU", + "NF", + "MP", + "NO", + "OM", + "PK", + "PW", + "PS", + "PA", + "PG", + "PY", + "PE", + "PH", + "PN", + "PL", + "PT", + "PR", + "QA", + "MK", + "RO", + "RU", + "RW", + "RE", + "BL", + "SH", + "KN", + "LC", + "MF", + "PM", + "VC", + "WS", + "SM", + "ST", + "SA", + "SN", + "RS", + "SC", + "SL", + "SG", + "SX", + "SK", + "SI", + "SB", + "SO", + "ZA", + "GS", + "SS", + "ES", + "LK", + "SD", + "SR", + "SJ", + "SE", + "CH", + "SY", + "TW", + "TJ", + "TZ", + "TH", + "TL", + "TG", + "TK", + "TO", + "TT", + "TN", + "TR", + "TM", + "TC", + "TV", + "UG", + "UA", + "AE", + "GB", + "UM", + "US", + "UY", + "UZ", + "VU", + "VE", + "VN", + "VG", + "VI", + "WF", + "EH", + "YE", + "ZM", + "ZW", + "AX" + ], + "example": "US", + "type": "string" + }, + "customer_id": { + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "date_of_birth": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "string" + } + ], + "example": "1998-01-01T00:00:00Z" + }, + "first_name": { + "example": "John", + "minLength": 1, + "type": "string" + }, + "id": { + "example": "ub_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "id_doc_back_file": { + "description": "Only image files are accepted (.jpg, .jpeg, .png)", + "type": [ + "string", + "null" + ] + }, + "id_doc_country": { + "enum": [ + "AF", + "AL", + "DZ", + "AS", + "AD", + "AO", + "AI", + "AQ", + "AG", + "AR", + "AM", + "AW", + "AU", + "AT", + "AZ", + "BS", + "BH", + "BD", + "BB", + "BY", + "BE", + "BZ", + "BJ", + "BM", + "BT", + "BO", + "BQ", + "BA", + "BW", + "BV", + "BR", + "IO", + "BN", + "BG", + "BF", + "BI", + "CV", + "KH", + "CM", + "CA", + "KY", + "CF", + "TD", + "CL", + "CN", + "CX", + "CC", + "CO", + "KM", + "CD", + "CG", + "CK", + "CR", + "HR", + "CU", + "CW", + "CY", + "CZ", + "CI", + "DK", + "DJ", + "DM", + "DO", + "EC", + "EG", + "SV", + "GQ", + "ER", + "EE", + "SZ", + "ET", + "FK", + "FO", + "FJ", + "FI", + "FR", + "GF", + "PF", + "TF", + "GA", + "GM", + "GE", + "DE", + "GH", + "GI", + "GR", + "GL", + "GD", + "GP", + "GU", + "GT", + "GG", + "GN", + "GW", + "GY", + "HT", + "HM", + "VA", + "HN", + "HK", + "HU", + "IS", + "IN", + "ID", + "IR", + "IQ", + "IE", + "IM", + "IL", + "IT", + "JM", + "JP", + "JE", + "JO", + "KZ", + "KE", + "KI", + "KP", + "KR", + "KW", + "KG", + "LA", + "LV", + "LB", + "LS", + "LR", + "LY", + "LI", + "LT", + "LU", + "MO", + "MG", + "MW", + "MY", + "MV", + "ML", + "MT", + "MH", + "MQ", + "MR", + "MU", + "YT", + "MX", + "FM", + "MD", + "MC", + "MN", + "ME", + "MS", + "MA", + "MZ", + "MM", + "NA", + "NR", + "NP", + "NL", + "NC", + "NZ", + "NI", + "NE", + "NG", + "NU", + "NF", + "MP", + "NO", + "OM", + "PK", + "PW", + "PS", + "PA", + "PG", + "PY", + "PE", + "PH", + "PN", + "PL", + "PT", + "PR", + "QA", + "MK", + "RO", + "RU", + "RW", + "RE", + "BL", + "SH", + "KN", + "LC", + "MF", + "PM", + "VC", + "WS", + "SM", + "ST", + "SA", + "SN", + "RS", + "SC", + "SL", + "SG", + "SX", + "SK", + "SI", + "SB", + "SO", + "ZA", + "GS", + "SS", + "ES", + "LK", + "SD", + "SR", + "SJ", + "SE", + "CH", + "SY", + "TW", + "TJ", + "TZ", + "TH", + "TL", + "TG", + "TK", + "TO", + "TT", + "TN", + "TR", + "TM", + "TC", + "TV", + "UG", + "UA", + "AE", + "GB", + "UM", + "US", + "UY", + "UZ", + "VU", + "VE", + "VN", + "VG", + "VI", + "WF", + "EH", + "YE", + "ZM", + "ZW", + "AX" + ], + "example": "BR", + "type": "string" + }, + "id_doc_front_file": { + "description": "Only image files are accepted (.jpg, .jpeg, .png)", + "type": [ + "string", + "null" + ] + }, + "id_doc_type": { + "enum": [ + "PASSPORT", + "ID_CARD", + "DRIVERS" + ], + "example": "PASSPORT", + "type": "string" + }, + "instance_id": { + "example": "in_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "last_name": { + "example": "Doe", + "minLength": 1, + "type": "string" + }, + "ownership_percentage": { + "description": "Ownership percentage of the beneficial owner (0-100)", + "example": 25, + "maximum": 100, + "minimum": 0, + "type": [ + "integer", + "null" + ] + }, + "postal_code": { + "example": "02050", + "type": "string" + }, + "proof_of_address_doc_file": { + "description": "Please upload one document that serve as proof of address, this needs to be the same address as the one provided above. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", + "type": [ + "string", + "null" + ] + }, + "proof_of_address_doc_type": { + "enum": [ + "UTILITY_BILL", + "BANK_STATEMENT", + "RENTAL_AGREEMENT", + "TAX_DOCUMENT", + "GOVERNMENT_CORRESPONDENCE" + ], + "example": "UTILITY_BILL", + "type": [ + "string", + "null" + ] + }, + "role": { + "description": "A beneficial owner is someone who directly or indirectly owns 25% or more of your business. A controlling person is someone with significant responsibility to control, manage or direct your business (typically a CEO, senior executive officer or equivalent).", + "enum": [ + "beneficial_controlling", + "beneficial_owner", + "controlling_person" + ], + "example": "beneficial_owner", + "type": "string" + }, + "state_province_region": { + "example": "MA", + "type": "string" + }, + "tax_id": { + "example": "536804398", + "type": [ + "string", + "null" + ] + }, + "tax_type": { + "description": "Tax identifier type. Mandatory when country is US; must be SSN or ITIN.", + "enum": [ + "SSN", + "ITIN" + ], + "example": "SSN", + "type": [ + "string", + "null" + ] + }, + "title": { + "description": "Job title of the owner", + "example": "CEO", + "maxLength": 128, + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "phone_number": { + "example": "+13055555555", + "type": [ + "string", + "null" + ] + }, + "postal_code": { + "example": "02050", + "type": [ + "string", + "null" + ] + }, + "proof_of_address_doc_file": { + "description": "Please upload one document that serve as proof of address, this needs to be the same physical address as the one provided above. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", + "example": "https://example.com/image.png", + "type": [ + "string", + "null" + ] + }, + "proof_of_address_doc_type": { + "enum": [ + "UTILITY_BILL", + "BANK_STATEMENT", + "RENTAL_AGREEMENT", + "TAX_DOCUMENT", + "GOVERNMENT_CORRESPONDENCE" + ], + "example": "UTILITY_BILL", + "type": [ + "string", + "null" + ] + }, + "proof_of_ownership_doc_file": { + "description": "Please upload your proof of ownership below. This document usually includes information like the shareholders names and percentages. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", + "example": "https://example.com/image.png", + "type": [ + "string", + "null" + ] + }, + "publicly_traded": { + "example": false, + "type": [ + "boolean", + "null" + ] + }, + "purpose_of_transactions": { + "enum": [ + "business_transactions", + "charitable_donations", + "investment_purposes", + "payments_to_friends_or_family_abroad", + "personal_or_living_expenses", + "protect_wealth", + "purchase_good_and_services", + "receive_payment_for_freelancing", + "receive_salary", + "other" + ], + "example": "business_transactions", + "type": [ + "string", + "null" + ] + }, + "purpose_of_transactions_explanation": { + "example": "I am a business owner and I want to receive payments from my customers", + "type": [ + "string", + "null" + ] + }, + "selfie_file": { + "description": "Only image files are accepted (.jpg, .jpeg, .png)", + "example": "https://example.com/image.png", + "type": [ + "string", + "null" + ] + }, + "source_of_funds_doc_file": { + "example": "https://example.com/image.png", + "type": [ + "string", + "null" + ] + }, + "source_of_funds_doc_type": { + "enum": [ + "business_income", + "gambling_proceeds", + "gifts", + "government_benefits", + "inheritance", + "investment_loans", + "pension_retirement", + "salary", + "sale_of_assets_real_estate", + "savings", + "esops", + "investment_proceeds", + "someone_else_funds" + ], + "example": "business_income", + "type": [ + "string", + "null" + ] + }, + "source_of_wealth": { + "enum": [ + "business_dividends_or_profits", + "investments", + "asset_sales", + "client_investor_contributions", + "gambling", + "charitable_contributions", + "inheritance", + "affiliate_or_royalty_income" + ], + "example": "affiliate_or_royalty_income", + "type": [ + "string", + "null" + ] + }, + "state_province_region": { + "example": "MA", + "type": [ + "string", + "null" + ] + }, + "tax_id": { + "example": "536804398", + "type": [ + "string", + "null" + ] + }, + "tos_id": { + "example": "to_000000000000", + "maxLength": 15, + "minLength": 15, + "type": [ + "string", + "null" + ] + }, + "type": { + "enum": [ + "individual", + "business" + ], + "example": "individual", + "type": "string" + }, + "updated_at": { + "example": "2021-01-01T00:00:00Z", + "format": "date-time", + "type": [ + "string", + "null" + ] + }, + "webhook_event": { + "enum": [ + "customer.new" + ], + "type": "string" + }, + "website": { + "example": "https://example.com", + "format": "uri", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "webhook_event", + "id", + "customer_id", + "type", + "kyc_type", + "kyc_status", + "email", + "country", + "instance_id", + "limit" + ], + "type": "object" + }, + "CustomerOut": { + "properties": { + "account_purpose": { + "enum": [ + "charitable_donations", + "ecommerce_retail_payments", + "investment_purposes", + "business_expenses", + "payments_to_friends_or_family_abroad", + "personal_or_living_expenses", + "protect_wealth", + "purchase_goods_and_services", + "receive_payments_for_goods_and_services", + "tax_optimization", + "third_party_money_transmission", + "payroll", + "treasury_management", + "other" + ], + "example": "treasury_management", + "type": [ + "string", + "null" + ] + }, + "account_purpose_other": { + "description": "Required when account_purpose is \"other\". Max 512 characters.", + "example": "Custom account purpose description", + "maxLength": 512, + "type": [ + "string", + "null" + ] + }, + "additional_info": { + "description": "Optional extra documents or notes for this customer. `label` is a known category, `value` is either a URL to upload or a free-text description. Any URLs are downloaded and re-hosted on Blindpay storage before being stored.", + "example": [ + { + "label": "EIN_LETTER", + "value": "https://example.com/ein.pdf" + }, + { + "label": "FLOW_OF_FUNDS", + "value": "Funds originate from US payroll deposits, forwarded weekly to customer." + } + ], + "items": { + "$ref": "#/components/schemas/AdditionalInfoItem" + }, + "type": [ + "array", + "null" + ] + }, + "address_line_1": { + "example": "738 Plain St", + "type": [ + "string", + "null" + ] + }, + "address_line_2": { + "example": "Building 22", + "type": [ + "string", + "null" + ] + }, + "alternate_name": { + "example": "Company Name Inc.", + "type": [ + "string", + "null" + ] + }, + "aml_hits": { + "description": "AML screening match details from SEON.", + "example": { + "has_adversemedia_match": false, + "has_crimelist_match": false, + "has_pep_match": false, + "has_sanction_match": false, + "has_watchlist_match": false + }, + "properties": { + "has_adversemedia_match": { + "default": false, + "type": "boolean" + }, + "has_crimelist_match": { + "default": false, + "type": "boolean" + }, + "has_pep_match": { + "default": false, + "type": "boolean" + }, + "has_sanction_match": { + "default": false, + "type": "boolean" + }, + "has_watchlist_match": { + "default": false, + "type": "boolean" + } + }, + "type": [ + "object", + "null" + ] + }, + "aml_status": { + "description": "AML screening status from SEON. null = not yet screened.", + "enum": [ + "clear", + "hit", + "error" + ], + "example": "clear", + "type": [ + "string", + "null" + ] + }, + "business_description": { + "example": "Software development company", + "maxLength": 1000, + "type": [ + "string", + "null" + ] + }, + "business_industry": { + "enum": [ + "111998", + "112120", + "113310", + "115114", + "541211", + "541810", + "541430", + "541715", + "541930", + "561422", + "561311", + "561612", + "561740", + "561730", + "236115", + "236220", + "237310", + "238210", + "811111", + "812111", + "812112", + "532111", + "624410", + "541922", + "811210", + "812199", + "611110", + "611310", + "611410", + "611710", + "211120", + "212114", + "221310", + "562111", + "562920", + "213112", + "522110", + "522210", + "522320", + "523150", + "523940", + "523999", + "524113", + "813110", + "813211", + "813219", + "551112", + "721110", + "722511", + "722513", + "561510", + "713110", + "713210", + "712110", + "711110", + "711211", + "621111", + "621210", + "622110", + "623110", + "621511", + "623220", + "541940", + "621399", + "621910", + "541110", + "311421", + "337121", + "322220", + "339920", + "334210", + "339930", + "312130", + "334111", + "334118", + "325412", + "339112", + "336110", + "336390", + "315990", + "313110", + "339910", + "516120", + "513130", + "512250", + "519130", + "711410", + "711510", + "531110", + "531120", + "531130", + "531190", + "531210", + "531311", + "531312", + "531320", + "531390", + "454110", + "445110", + "455110", + "457110", + "449210", + "444110", + "459210", + "459120", + "445320", + "458110", + "458210", + "458310", + "455219", + "424210", + "456110", + "446120", + "541511", + "541512", + "541519", + "518210", + "511210", + "517111", + "517112", + "517410", + "481111", + "483111", + "485210", + "488510", + "484121", + "493110", + "423430", + "423690", + "423110", + "423830", + "423840", + "423510", + "424690", + "424990", + "424410", + "424480", + "423940", + "541611", + "541618", + "541330", + "541990", + "541214", + "561499" + ], + "example": "541511", + "type": [ + "string", + "null" + ] + }, + "business_type": { + "enum": [ + "corporation", + "llc", + "partnership", + "sole_proprietorship", + "trust", + "non_profit" + ], + "example": "llc", + "type": [ + "string", + "null" + ] + }, + "city": { + "example": "Marshfield", + "type": [ + "string", + "null" + ] + }, + "country": { + "enum": [ + "AF", + "AL", + "DZ", + "AS", + "AD", + "AO", + "AI", + "AQ", + "AG", + "AR", + "AM", + "AW", + "AU", + "AT", + "AZ", + "BS", + "BH", + "BD", + "BB", + "BY", + "BE", + "BZ", + "BJ", + "BM", + "BT", + "BO", + "BQ", + "BA", + "BW", + "BV", + "BR", + "IO", + "BN", + "BG", + "BF", + "BI", + "CV", + "KH", + "CM", + "CA", + "KY", + "CF", + "TD", + "CL", + "CN", + "CX", + "CC", + "CO", + "KM", + "CD", + "CG", + "CK", + "CR", + "HR", + "CU", + "CW", + "CY", + "CZ", + "CI", + "DK", + "DJ", + "DM", + "DO", + "EC", + "EG", + "SV", + "GQ", + "ER", + "EE", + "SZ", + "ET", + "FK", + "FO", + "FJ", + "FI", + "FR", + "GF", + "PF", + "TF", + "GA", + "GM", + "GE", + "DE", + "GH", + "GI", + "GR", + "GL", + "GD", + "GP", + "GU", + "GT", + "GG", + "GN", + "GW", + "GY", + "HT", + "HM", + "VA", + "HN", + "HK", + "HU", + "IS", + "IN", + "ID", + "IR", + "IQ", + "IE", + "IM", + "IL", + "IT", + "JM", + "JP", + "JE", + "JO", + "KZ", + "KE", + "KI", + "KP", + "KR", + "KW", + "KG", + "LA", + "LV", + "LB", + "LS", + "LR", + "LY", + "LI", + "LT", + "LU", + "MO", + "MG", + "MW", + "MY", + "MV", + "ML", + "MT", + "MH", + "MQ", + "MR", + "MU", + "YT", + "MX", + "FM", + "MD", + "MC", + "MN", + "ME", + "MS", + "MA", + "MZ", + "MM", + "NA", + "NR", + "NP", + "NL", + "NC", + "NZ", + "NI", + "NE", + "NG", + "NU", + "NF", + "MP", + "NO", + "OM", + "PK", + "PW", + "PS", + "PA", + "PG", + "PY", + "PE", + "PH", + "PN", + "PL", + "PT", + "PR", + "QA", + "MK", + "RO", + "RU", + "RW", + "RE", + "BL", + "SH", + "KN", + "LC", + "MF", + "PM", + "VC", + "WS", + "SM", + "ST", + "SA", + "SN", + "RS", + "SC", + "SL", + "SG", + "SX", + "SK", + "SI", + "SB", + "SO", + "ZA", + "GS", + "SS", + "ES", + "LK", + "SD", + "SR", + "SJ", + "SE", + "CH", + "SY", + "TW", + "TJ", + "TZ", + "TH", + "TL", + "TG", + "TK", + "TO", + "TT", + "TN", + "TR", + "TM", + "TC", + "TV", + "UG", + "UA", + "AE", + "GB", + "UM", + "US", + "UY", + "UZ", + "VU", + "VE", + "VN", + "VG", + "VI", + "WF", + "EH", + "YE", + "ZM", + "ZW", + "AX" + ], + "example": "US", + "type": "string" + }, + "created_at": { + "example": "2021-01-01T00:00:00Z", + "format": "date-time", + "type": [ + "string", + "null" + ] + }, + "customer_id": { + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "date_of_birth": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "string" + }, + { + "type": "null" + } + ], + "example": "1998-01-01T00:00:00Z" + }, + "email": { + "example": "email@example.com", + "format": "email", + "type": "string" + }, + "estimated_annual_revenue": { + "enum": [ + "0_99999", + "100000_999999", + "1000000_9999999", + "10000000_49999999", + "50000000_249999999", + "250000000_plus" + ], + "example": "1000000_9999999", + "type": [ + "string", + "null" + ] + }, + "external_id": { + "example": "your_company_external_id", + "type": [ + "string", + "null" + ] + }, + "first_name": { + "example": "John", + "type": [ + "string", + "null" + ] + }, + "formation_date": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "string" + }, + { + "type": "null" + } + ], + "example": "1998-01-01T00:00:00Z", + "format": "date-time" + }, + "fraud_warnings": { + "example": [ + { + "id": "UC114", + "name": "User never used a Datacenter proxy and this device before", + "operation": "+", + "score": 10 + } + ], + "items": { + "properties": { + "id": { + "type": [ + "string", + "null" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + }, + "operation": { + "type": [ + "string", + "null" + ] + }, + "score": { + "type": [ + "number", + "null" + ] + } + }, + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "id": { + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "id_doc_back_file": { + "description": "Only image files are accepted (.jpg, .jpeg, .png)", + "example": "https://example.com/image.png", + "type": [ + "string", + "null" + ] + }, + "id_doc_country": { + "enum": [ + "AF", + "AL", + "DZ", + "AS", + "AD", + "AO", + "AI", + "AQ", + "AG", + "AR", + "AM", + "AW", + "AU", + "AT", + "AZ", + "BS", + "BH", + "BD", + "BB", + "BY", + "BE", + "BZ", + "BJ", + "BM", + "BT", + "BO", + "BQ", + "BA", + "BW", + "BV", + "BR", + "IO", + "BN", + "BG", + "BF", + "BI", + "CV", + "KH", + "CM", + "CA", + "KY", + "CF", + "TD", + "CL", + "CN", + "CX", + "CC", + "CO", + "KM", + "CD", + "CG", + "CK", + "CR", + "HR", + "CU", + "CW", + "CY", + "CZ", + "CI", + "DK", + "DJ", + "DM", + "DO", + "EC", + "EG", + "SV", + "GQ", + "ER", + "EE", + "SZ", + "ET", + "FK", + "FO", + "FJ", + "FI", + "FR", + "GF", + "PF", + "TF", + "GA", + "GM", + "GE", + "DE", + "GH", + "GI", + "GR", + "GL", + "GD", + "GP", + "GU", + "GT", + "GG", + "GN", + "GW", + "GY", + "HT", + "HM", + "VA", + "HN", + "HK", + "HU", + "IS", + "IN", + "ID", + "IR", + "IQ", + "IE", + "IM", + "IL", + "IT", + "JM", + "JP", + "JE", + "JO", + "KZ", + "KE", + "KI", + "KP", + "KR", + "KW", + "KG", + "LA", + "LV", + "LB", + "LS", + "LR", + "LY", + "LI", + "LT", + "LU", + "MO", + "MG", + "MW", + "MY", + "MV", + "ML", + "MT", + "MH", + "MQ", + "MR", + "MU", + "YT", + "MX", + "FM", + "MD", + "MC", + "MN", + "ME", + "MS", + "MA", + "MZ", + "MM", + "NA", + "NR", + "NP", + "NL", + "NC", + "NZ", + "NI", + "NE", + "NG", + "NU", + "NF", + "MP", + "NO", + "OM", + "PK", + "PW", + "PS", + "PA", + "PG", + "PY", + "PE", + "PH", + "PN", + "PL", + "PT", + "PR", + "QA", + "MK", + "RO", + "RU", + "RW", + "RE", + "BL", + "SH", + "KN", + "LC", + "MF", + "PM", + "VC", + "WS", + "SM", + "ST", + "SA", + "SN", + "RS", + "SC", + "SL", + "SG", + "SX", + "SK", + "SI", + "SB", + "SO", + "ZA", + "GS", + "SS", + "ES", + "LK", + "SD", + "SR", + "SJ", + "SE", + "CH", + "SY", + "TW", + "TJ", + "TZ", + "TH", + "TL", + "TG", + "TK", + "TO", + "TT", + "TN", + "TR", + "TM", + "TC", + "TV", + "UG", + "UA", + "AE", + "GB", + "UM", + "US", + "UY", + "UZ", + "VU", + "VE", + "VN", + "VG", + "VI", + "WF", + "EH", + "YE", + "ZM", + "ZW", + "AX" + ], + "example": "BR", + "type": [ + "string", + "null" + ] + }, + "id_doc_front_file": { + "description": "Only image files are accepted (.jpg, .jpeg, .png)", + "example": "https://example.com/image.png", + "type": [ + "string", + "null" + ] + }, + "id_doc_type": { + "enum": [ + "PASSPORT", + "ID_CARD", + "DRIVERS" + ], + "example": "PASSPORT", + "type": [ + "string", + "null" + ] + }, + "image_url": { + "example": "https://example.com/image.png", + "type": [ + "string", + "null" + ] + }, + "incorporation_doc_file": { + "description": "Please upload your articles of incorporation below. The articles of incorporation or a certificate of incorporation usually includes information like the company name, business purpose, number of shares offered, value of shares, etc. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", + "example": "https://example.com/image.png", + "type": [ + "string", + "null" + ] + }, + "instance_id": { + "example": "in_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "ip_address": { + "example": "127.0.0.1", + "format": "ip", + "type": [ + "string", + "null" + ] + }, + "is_fbo": { + "example": false, + "type": [ + "boolean", + "null" + ] + }, + "is_tos_accepted": { + "type": [ + "boolean", + "null" + ] + }, + "kyc_status": { + "enum": [ + "verifying", + "approved", + "rejected", + "deprecated", + "pending_review", + "awaiting_contract", + "compliance_request", + "approved_rfi" + ], + "example": "verifying", + "type": "string" + }, + "kyc_type": { + "enum": [ + "light", + "standard", + "enhanced" + ], + "example": "standard", + "type": "string" + }, + "kyc_warnings": { + "description": "You can find more information here: https://docs.aiprise.com/docs/warnings-and-error-codes", + "example": [ + { + "code": "BIRTH_DATE_MISMATCH", + "message": "Mismatch between supplied birth date and extracted/looked up birth date.", + "resolution_status": "UNRESOLVED", + "warning_id": "38170889-50aa-4271-9eb1-61113ebf408c" + } + ], + "items": { + "properties": { + "code": { + "type": [ + "string", + "null" + ] + }, + "message": { + "type": [ + "string", + "null" + ] + }, + "resolution_status": { + "type": [ + "string", + "null" + ] + }, + "warning_id": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "last_name": { + "example": "Doe", + "type": [ + "string", + "null" + ] + }, + "latitude": { + "description": "Optional geolocation latitude collected from the customer. Forwarded to AiPrise and SEON for fraud analysis.", + "example": 37.7749, + "maximum": 90, + "minimum": -90, + "type": [ + "number", + "null" + ] + }, + "legal_name": { + "example": "Company Name Inc.", + "type": [ + "string", + "null" + ] + }, + "limit": { + "properties": { + "daily": { + "example": 200000, + "type": [ + "number", + "null" + ] + }, + "monthly": { + "example": 1000000, + "type": [ + "number", + "null" + ] + }, + "per_transaction": { + "example": 100000, + "type": [ + "number", + "null" + ] + } + }, + "required": [ + "per_transaction", + "daily", + "monthly" + ], + "type": "object" + }, + "longitude": { + "description": "Optional geolocation longitude collected from the customer. Forwarded to AiPrise and SEON for fraud analysis.", + "example": -122.4194, + "maximum": 180, + "minimum": -180, + "type": [ + "number", + "null" + ] + }, + "occupation": { + "example": "Software Engineer", + "maxLength": 255, + "type": [ + "string", + "null" + ] + }, + "owners": { + "description": "Customer owners", + "example": [ + { + "address_line_1": "738 Plain St", + "address_line_2": "Building 22", + "city": "Marshfield", + "country": "US", + "first_name": "John", + "id": "ub_000000000000", + "id_doc_back_file": "https://example.com/image.png", + "id_doc_country": "BR", + "id_doc_front_file": "https://example.com/image.png", + "id_doc_type": "PASSPORT", + "last_name": "Doe", + "postal_code": "02050", + "state_province_region": "MA" + } + ], + "items": { + "properties": { + "address_line_1": { + "example": "738 Plain St", + "type": "string" + }, + "address_line_2": { + "example": "Building 22", + "type": [ + "string", + "null" + ] + }, + "city": { + "example": "Marshfield", + "type": "string" + }, + "country": { + "enum": [ + "AF", + "AL", + "DZ", + "AS", + "AD", + "AO", + "AI", + "AQ", + "AG", + "AR", + "AM", + "AW", + "AU", + "AT", + "AZ", + "BS", + "BH", + "BD", + "BB", + "BY", + "BE", + "BZ", + "BJ", + "BM", + "BT", + "BO", + "BQ", + "BA", + "BW", + "BV", + "BR", + "IO", + "BN", + "BG", + "BF", + "BI", + "CV", + "KH", + "CM", + "CA", + "KY", + "CF", + "TD", + "CL", + "CN", + "CX", + "CC", + "CO", + "KM", + "CD", + "CG", + "CK", + "CR", + "HR", + "CU", + "CW", + "CY", + "CZ", + "CI", + "DK", + "DJ", + "DM", + "DO", + "EC", + "EG", + "SV", + "GQ", + "ER", + "EE", + "SZ", + "ET", + "FK", + "FO", + "FJ", + "FI", + "FR", + "GF", + "PF", + "TF", + "GA", + "GM", + "GE", + "DE", + "GH", + "GI", + "GR", + "GL", + "GD", + "GP", + "GU", + "GT", + "GG", + "GN", + "GW", + "GY", + "HT", + "HM", + "VA", + "HN", + "HK", + "HU", + "IS", + "IN", + "ID", + "IR", + "IQ", + "IE", + "IM", + "IL", + "IT", + "JM", + "JP", + "JE", + "JO", + "KZ", + "KE", + "KI", + "KP", + "KR", + "KW", + "KG", + "LA", + "LV", + "LB", + "LS", + "LR", + "LY", + "LI", + "LT", + "LU", + "MO", + "MG", + "MW", + "MY", + "MV", + "ML", + "MT", + "MH", + "MQ", + "MR", + "MU", + "YT", + "MX", + "FM", + "MD", + "MC", + "MN", + "ME", + "MS", + "MA", + "MZ", + "MM", + "NA", + "NR", + "NP", + "NL", + "NC", + "NZ", + "NI", + "NE", + "NG", + "NU", + "NF", + "MP", + "NO", + "OM", + "PK", + "PW", + "PS", + "PA", + "PG", + "PY", + "PE", + "PH", + "PN", + "PL", + "PT", + "PR", + "QA", + "MK", + "RO", + "RU", + "RW", + "RE", + "BL", + "SH", + "KN", + "LC", + "MF", + "PM", + "VC", + "WS", + "SM", + "ST", + "SA", + "SN", + "RS", + "SC", + "SL", + "SG", + "SX", + "SK", + "SI", + "SB", + "SO", + "ZA", + "GS", + "SS", + "ES", + "LK", + "SD", + "SR", + "SJ", + "SE", + "CH", + "SY", + "TW", + "TJ", + "TZ", + "TH", + "TL", + "TG", + "TK", + "TO", + "TT", + "TN", + "TR", + "TM", + "TC", + "TV", + "UG", + "UA", + "AE", + "GB", + "UM", + "US", + "UY", + "UZ", + "VU", + "VE", + "VN", + "VG", + "VI", + "WF", + "EH", + "YE", + "ZM", + "ZW", + "AX" + ], + "example": "US", + "type": "string" + }, + "customer_id": { + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "date_of_birth": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "string" + } + ], + "example": "1998-01-01T00:00:00Z" + }, + "first_name": { + "example": "John", + "minLength": 1, + "type": "string" + }, + "id": { + "example": "ub_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "id_doc_back_file": { + "description": "Only image files are accepted (.jpg, .jpeg, .png)", + "type": [ + "string", + "null" + ] + }, + "id_doc_country": { + "enum": [ + "AF", + "AL", + "DZ", + "AS", + "AD", + "AO", + "AI", + "AQ", + "AG", + "AR", + "AM", + "AW", + "AU", + "AT", + "AZ", + "BS", + "BH", + "BD", + "BB", + "BY", + "BE", + "BZ", + "BJ", + "BM", + "BT", + "BO", + "BQ", + "BA", + "BW", + "BV", + "BR", + "IO", + "BN", + "BG", + "BF", + "BI", + "CV", + "KH", + "CM", + "CA", + "KY", + "CF", + "TD", + "CL", + "CN", + "CX", + "CC", + "CO", + "KM", + "CD", + "CG", + "CK", + "CR", + "HR", + "CU", + "CW", + "CY", + "CZ", + "CI", + "DK", + "DJ", + "DM", + "DO", + "EC", + "EG", + "SV", + "GQ", + "ER", + "EE", + "SZ", + "ET", + "FK", + "FO", + "FJ", + "FI", + "FR", + "GF", + "PF", + "TF", + "GA", + "GM", + "GE", + "DE", + "GH", + "GI", + "GR", + "GL", + "GD", + "GP", + "GU", + "GT", + "GG", + "GN", + "GW", + "GY", + "HT", + "HM", + "VA", + "HN", + "HK", + "HU", + "IS", + "IN", + "ID", + "IR", + "IQ", + "IE", + "IM", + "IL", + "IT", + "JM", + "JP", + "JE", + "JO", + "KZ", + "KE", + "KI", + "KP", + "KR", + "KW", + "KG", + "LA", + "LV", + "LB", + "LS", + "LR", + "LY", + "LI", + "LT", + "LU", + "MO", + "MG", + "MW", + "MY", + "MV", + "ML", + "MT", + "MH", + "MQ", + "MR", + "MU", + "YT", + "MX", + "FM", + "MD", + "MC", + "MN", + "ME", + "MS", + "MA", + "MZ", + "MM", + "NA", + "NR", + "NP", + "NL", + "NC", + "NZ", + "NI", + "NE", + "NG", + "NU", + "NF", + "MP", + "NO", + "OM", + "PK", + "PW", + "PS", + "PA", + "PG", + "PY", + "PE", + "PH", + "PN", + "PL", + "PT", + "PR", + "QA", + "MK", + "RO", + "RU", + "RW", + "RE", + "BL", + "SH", + "KN", + "LC", + "MF", + "PM", + "VC", + "WS", + "SM", + "ST", + "SA", + "SN", + "RS", + "SC", + "SL", + "SG", + "SX", + "SK", + "SI", + "SB", + "SO", + "ZA", + "GS", + "SS", + "ES", + "LK", + "SD", + "SR", + "SJ", + "SE", + "CH", + "SY", + "TW", + "TJ", + "TZ", + "TH", + "TL", + "TG", + "TK", + "TO", + "TT", + "TN", + "TR", + "TM", + "TC", + "TV", + "UG", + "UA", + "AE", + "GB", + "UM", + "US", + "UY", + "UZ", + "VU", + "VE", + "VN", + "VG", + "VI", + "WF", + "EH", + "YE", + "ZM", + "ZW", + "AX" + ], + "example": "BR", + "type": "string" + }, + "id_doc_front_file": { + "description": "Only image files are accepted (.jpg, .jpeg, .png)", + "type": [ + "string", + "null" + ] + }, + "id_doc_type": { + "enum": [ + "PASSPORT", + "ID_CARD", + "DRIVERS" + ], + "example": "PASSPORT", + "type": "string" + }, + "instance_id": { + "example": "in_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "last_name": { + "example": "Doe", + "minLength": 1, + "type": "string" + }, + "ownership_percentage": { + "description": "Ownership percentage of the beneficial owner (0-100)", + "example": 25, + "maximum": 100, + "minimum": 0, + "type": [ + "integer", + "null" + ] + }, + "postal_code": { + "example": "02050", + "type": "string" + }, + "proof_of_address_doc_file": { + "description": "Please upload one document that serve as proof of address, this needs to be the same address as the one provided above. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", + "type": [ + "string", + "null" + ] + }, + "proof_of_address_doc_type": { + "enum": [ + "UTILITY_BILL", + "BANK_STATEMENT", + "RENTAL_AGREEMENT", + "TAX_DOCUMENT", + "GOVERNMENT_CORRESPONDENCE" + ], + "example": "UTILITY_BILL", + "type": [ + "string", + "null" + ] + }, + "role": { + "description": "A beneficial owner is someone who directly or indirectly owns 25% or more of your business. A controlling person is someone with significant responsibility to control, manage or direct your business (typically a CEO, senior executive officer or equivalent).", + "enum": [ + "beneficial_controlling", + "beneficial_owner", + "controlling_person" + ], + "example": "beneficial_owner", + "type": "string" + }, + "state_province_region": { + "example": "MA", + "type": "string" + }, + "tax_id": { + "example": "536804398", + "type": [ + "string", + "null" + ] + }, + "tax_type": { + "description": "Tax identifier type. Mandatory when country is US; must be SSN or ITIN.", + "enum": [ + "SSN", + "ITIN" + ], + "example": "SSN", + "type": [ + "string", + "null" + ] + }, + "title": { + "description": "Job title of the owner", + "example": "CEO", + "maxLength": 128, + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "phone_number": { + "example": "+13055555555", + "type": [ + "string", + "null" + ] + }, + "postal_code": { + "example": "02050", + "type": [ + "string", + "null" + ] + }, + "proof_of_address_doc_file": { + "description": "Please upload one document that serve as proof of address, this needs to be the same physical address as the one provided above. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", + "example": "https://example.com/image.png", + "type": [ + "string", + "null" + ] + }, + "proof_of_address_doc_type": { + "enum": [ + "UTILITY_BILL", + "BANK_STATEMENT", + "RENTAL_AGREEMENT", + "TAX_DOCUMENT", + "GOVERNMENT_CORRESPONDENCE" + ], + "example": "UTILITY_BILL", + "type": [ + "string", + "null" + ] + }, + "proof_of_ownership_doc_file": { + "description": "Please upload your proof of ownership below. This document usually includes information like the shareholders names and percentages. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", + "example": "https://example.com/image.png", + "type": [ + "string", + "null" + ] + }, + "publicly_traded": { + "example": false, + "type": [ + "boolean", + "null" + ] + }, + "purpose_of_transactions": { + "enum": [ + "business_transactions", + "charitable_donations", + "investment_purposes", + "payments_to_friends_or_family_abroad", + "personal_or_living_expenses", + "protect_wealth", + "purchase_good_and_services", + "receive_payment_for_freelancing", + "receive_salary", + "other" + ], + "example": "business_transactions", + "type": [ + "string", + "null" + ] + }, + "purpose_of_transactions_explanation": { + "example": "I am a business owner and I want to receive payments from my customers", + "type": [ + "string", + "null" + ] + }, + "selfie_file": { + "description": "Only image files are accepted (.jpg, .jpeg, .png)", + "example": "https://example.com/image.png", + "type": [ + "string", + "null" + ] + }, + "source_of_funds_doc_file": { + "example": "https://example.com/image.png", + "type": [ + "string", + "null" + ] + }, + "source_of_funds_doc_type": { + "enum": [ + "business_income", + "gambling_proceeds", + "gifts", + "government_benefits", + "inheritance", + "investment_loans", + "pension_retirement", + "salary", + "sale_of_assets_real_estate", + "savings", + "esops", + "investment_proceeds", + "someone_else_funds" + ], + "example": "business_income", + "type": [ + "string", + "null" + ] + }, + "source_of_wealth": { + "enum": [ + "business_dividends_or_profits", + "investments", + "asset_sales", + "client_investor_contributions", + "gambling", + "charitable_contributions", + "inheritance", + "affiliate_or_royalty_income" + ], + "example": "affiliate_or_royalty_income", + "type": [ + "string", + "null" + ] + }, + "state_province_region": { + "example": "MA", + "type": [ + "string", + "null" + ] + }, + "tax_id": { + "example": "536804398", + "type": [ + "string", + "null" + ] + }, + "tos_id": { + "example": "to_000000000000", + "maxLength": 15, + "minLength": 15, + "type": [ + "string", + "null" + ] + }, + "type": { + "enum": [ + "individual", + "business" + ], + "example": "individual", + "type": "string" + }, + "updated_at": { + "example": "2021-01-01T00:00:00Z", + "format": "date-time", + "type": [ + "string", + "null" + ] + }, + "website": { + "example": "https://example.com", + "format": "uri", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id", + "customer_id", + "type", + "kyc_type", + "kyc_status", + "email", + "country", + "instance_id", + "limit" + ], + "type": "object" + }, + "CustomerUpdateWebhookOut": { + "properties": { + "account_purpose": { + "enum": [ + "charitable_donations", + "ecommerce_retail_payments", + "investment_purposes", + "business_expenses", + "payments_to_friends_or_family_abroad", + "personal_or_living_expenses", + "protect_wealth", + "purchase_goods_and_services", + "receive_payments_for_goods_and_services", + "tax_optimization", + "third_party_money_transmission", + "payroll", + "treasury_management", + "other" + ], + "example": "treasury_management", + "type": [ + "string", + "null" + ] + }, + "account_purpose_other": { + "description": "Required when account_purpose is \"other\". Max 512 characters.", + "example": "Custom account purpose description", + "maxLength": 512, + "type": [ + "string", + "null" + ] + }, + "additional_info": { + "description": "Optional extra documents or notes for this customer. `label` is a known category, `value` is either a URL to upload or a free-text description. Any URLs are downloaded and re-hosted on Blindpay storage before being stored.", + "example": [ + { + "label": "EIN_LETTER", + "value": "https://example.com/ein.pdf" + }, + { + "label": "FLOW_OF_FUNDS", + "value": "Funds originate from US payroll deposits, forwarded weekly to customer." + } + ], + "items": { + "$ref": "#/components/schemas/AdditionalInfoItem" + }, + "type": [ + "array", + "null" + ] + }, + "address_line_1": { + "example": "738 Plain St", + "type": [ + "string", + "null" + ] + }, + "address_line_2": { + "example": "Building 22", + "type": [ + "string", + "null" + ] + }, + "alternate_name": { + "example": "Company Name Inc.", + "type": [ + "string", + "null" + ] + }, + "aml_hits": { + "description": "AML screening match details from SEON.", + "example": { + "has_adversemedia_match": false, + "has_crimelist_match": false, + "has_pep_match": false, + "has_sanction_match": false, + "has_watchlist_match": false + }, + "properties": { + "has_adversemedia_match": { + "default": false, + "type": "boolean" + }, + "has_crimelist_match": { + "default": false, + "type": "boolean" + }, + "has_pep_match": { + "default": false, + "type": "boolean" + }, + "has_sanction_match": { + "default": false, + "type": "boolean" + }, + "has_watchlist_match": { + "default": false, + "type": "boolean" + } + }, + "type": [ + "object", + "null" + ] + }, + "aml_status": { + "description": "AML screening status from SEON. null = not yet screened.", + "enum": [ + "clear", + "hit", + "error" + ], + "example": "clear", + "type": [ + "string", + "null" + ] + }, + "business_description": { + "example": "Software development company", + "maxLength": 1000, + "type": [ + "string", + "null" + ] + }, + "business_industry": { + "enum": [ + "111998", + "112120", + "113310", + "115114", + "541211", + "541810", + "541430", + "541715", + "541930", + "561422", + "561311", + "561612", + "561740", + "561730", + "236115", + "236220", + "237310", + "238210", + "811111", + "812111", + "812112", + "532111", + "624410", + "541922", + "811210", + "812199", + "611110", + "611310", + "611410", + "611710", + "211120", + "212114", + "221310", + "562111", + "562920", + "213112", + "522110", + "522210", + "522320", + "523150", + "523940", + "523999", + "524113", + "813110", + "813211", + "813219", + "551112", + "721110", + "722511", + "722513", + "561510", + "713110", + "713210", + "712110", + "711110", + "711211", + "621111", + "621210", + "622110", + "623110", + "621511", + "623220", + "541940", + "621399", + "621910", + "541110", + "311421", + "337121", + "322220", + "339920", + "334210", + "339930", + "312130", + "334111", + "334118", + "325412", + "339112", + "336110", + "336390", + "315990", + "313110", + "339910", + "516120", + "513130", + "512250", + "519130", + "711410", + "711510", + "531110", + "531120", + "531130", + "531190", + "531210", + "531311", + "531312", + "531320", + "531390", + "454110", + "445110", + "455110", + "457110", + "449210", + "444110", + "459210", + "459120", + "445320", + "458110", + "458210", + "458310", + "455219", + "424210", + "456110", + "446120", + "541511", + "541512", + "541519", + "518210", + "511210", + "517111", + "517112", + "517410", + "481111", + "483111", + "485210", + "488510", + "484121", + "493110", + "423430", + "423690", + "423110", + "423830", + "423840", + "423510", + "424690", + "424990", + "424410", + "424480", + "423940", + "541611", + "541618", + "541330", + "541990", + "541214", + "561499" + ], + "example": "541511", + "type": [ + "string", + "null" + ] + }, + "business_type": { + "enum": [ + "corporation", + "llc", + "partnership", + "sole_proprietorship", + "trust", + "non_profit" + ], + "example": "llc", + "type": [ + "string", + "null" + ] + }, + "city": { + "example": "Marshfield", + "type": [ + "string", + "null" + ] + }, + "country": { + "enum": [ + "AF", + "AL", + "DZ", + "AS", + "AD", + "AO", + "AI", + "AQ", + "AG", + "AR", + "AM", + "AW", + "AU", + "AT", + "AZ", + "BS", + "BH", + "BD", + "BB", + "BY", + "BE", + "BZ", + "BJ", + "BM", + "BT", + "BO", + "BQ", + "BA", + "BW", + "BV", + "BR", + "IO", + "BN", + "BG", + "BF", + "BI", + "CV", + "KH", + "CM", + "CA", + "KY", + "CF", + "TD", + "CL", + "CN", + "CX", + "CC", + "CO", + "KM", + "CD", + "CG", + "CK", + "CR", + "HR", + "CU", + "CW", + "CY", + "CZ", + "CI", + "DK", + "DJ", + "DM", + "DO", + "EC", + "EG", + "SV", + "GQ", + "ER", + "EE", + "SZ", + "ET", + "FK", + "FO", + "FJ", + "FI", + "FR", + "GF", + "PF", + "TF", + "GA", + "GM", + "GE", + "DE", + "GH", + "GI", + "GR", + "GL", + "GD", + "GP", + "GU", + "GT", + "GG", + "GN", + "GW", + "GY", + "HT", + "HM", + "VA", + "HN", + "HK", + "HU", + "IS", + "IN", + "ID", + "IR", + "IQ", + "IE", + "IM", + "IL", + "IT", + "JM", + "JP", + "JE", + "JO", + "KZ", + "KE", + "KI", + "KP", + "KR", + "KW", + "KG", + "LA", + "LV", + "LB", + "LS", + "LR", + "LY", + "LI", + "LT", + "LU", + "MO", + "MG", + "MW", + "MY", + "MV", + "ML", + "MT", + "MH", + "MQ", + "MR", + "MU", + "YT", + "MX", + "FM", + "MD", + "MC", + "MN", + "ME", + "MS", + "MA", + "MZ", + "MM", + "NA", + "NR", + "NP", + "NL", + "NC", + "NZ", + "NI", + "NE", + "NG", + "NU", + "NF", + "MP", + "NO", + "OM", + "PK", + "PW", + "PS", + "PA", + "PG", + "PY", + "PE", + "PH", + "PN", + "PL", + "PT", + "PR", + "QA", + "MK", + "RO", + "RU", + "RW", + "RE", + "BL", + "SH", + "KN", + "LC", + "MF", + "PM", + "VC", + "WS", + "SM", + "ST", + "SA", + "SN", + "RS", + "SC", + "SL", + "SG", + "SX", + "SK", + "SI", + "SB", + "SO", + "ZA", + "GS", + "SS", + "ES", + "LK", + "SD", + "SR", + "SJ", + "SE", + "CH", + "SY", + "TW", + "TJ", + "TZ", + "TH", + "TL", + "TG", + "TK", + "TO", + "TT", + "TN", + "TR", + "TM", + "TC", + "TV", + "UG", + "UA", + "AE", + "GB", + "UM", + "US", + "UY", + "UZ", + "VU", + "VE", + "VN", + "VG", + "VI", + "WF", + "EH", + "YE", + "ZM", + "ZW", + "AX" + ], + "example": "US", + "type": "string" }, - "pix_key": { + "created_at": { + "example": "2021-01-01T00:00:00Z", + "format": "date-time", "type": [ "string", "null" - ], - "example": "14947677768" - }, - "force_cpf_cnpj": { - "type": [ - "boolean", - "null" - ], - "description": "Force CPF/CNPJ validation for PIX key", - "example": false + ] }, - "beneficiary_name": { - "type": [ - "string", - "null" - ], - "maxLength": 128, - "example": "Individual full name or business name" + "customer_id": { + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" }, - "routing_number": { - "type": [ - "string", - "null" + "date_of_birth": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "string" + }, + { + "type": "null" + } ], - "example": "012345678" + "example": "1998-01-01T00:00:00Z" }, - "account_number": { - "type": [ - "string", - "null" - ], - "example": "1001001234" + "email": { + "example": "email@example.com", + "format": "email", + "type": "string" }, - "account_type": { - "type": [ - "string", - "null" - ], + "estimated_annual_revenue": { "enum": [ - "checking", - "saving" + "0_99999", + "100000_999999", + "1000000_9999999", + "10000000_49999999", + "50000000_249999999", + "250000000_plus" ], - "example": "checking" - }, - "account_class": { + "example": "1000000_9999999", "type": [ "string", "null" - ], - "enum": [ - "individual", - "business" - ], - "example": "individual" + ] }, - "address_line_1": { + "external_id": { + "example": "your_company_external_id", "type": [ "string", "null" - ], - "example": "Address line 1" + ] }, - "address_line_2": { + "first_name": { + "example": "John", "type": [ "string", "null" - ], - "example": "Address line 2" + ] }, - "city": { - "type": [ - "string", - "null" + "formation_date": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "string" + }, + { + "type": "null" + } ], - "example": "City" + "example": "1998-01-01T00:00:00Z", + "format": "date-time" }, - "state_province_region": { + "fraud_warnings": { + "example": [ + { + "id": "UC114", + "name": "User never used a Datacenter proxy and this device before", + "operation": "+", + "score": 10 + } + ], + "items": { + "properties": { + "id": { + "type": [ + "string", + "null" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + }, + "operation": { + "type": [ + "string", + "null" + ] + }, + "score": { + "type": [ + "number", + "null" + ] + } + }, + "type": "object" + }, "type": [ - "string", + "array", "null" - ], - "example": "State/Province/Region" + ] }, - "country": { + "id": { + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "id_doc_back_file": { + "description": "Only image files are accepted (.jpg, .jpeg, .png)", + "example": "https://example.com/image.png", "type": [ "string", "null" - ], + ] + }, + "id_doc_country": { "enum": [ "AF", "AL", @@ -26802,1590 +19919,1998 @@ "ZW", "AX" ], - "example": "US" + "example": "BR", + "type": [ + "string", + "null" + ] }, - "postal_code": { + "id_doc_front_file": { + "description": "Only image files are accepted (.jpg, .jpeg, .png)", + "example": "https://example.com/image.png", + "type": [ + "string", + "null" + ] + }, + "id_doc_type": { + "enum": [ + "PASSPORT", + "ID_CARD", + "DRIVERS" + ], + "example": "PASSPORT", + "type": [ + "string", + "null" + ] + }, + "image_url": { + "example": "https://example.com/image.png", + "type": [ + "string", + "null" + ] + }, + "incorporation_doc_file": { + "description": "Please upload your articles of incorporation below. The articles of incorporation or a certificate of incorporation usually includes information like the company name, business purpose, number of shares offered, value of shares, etc. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", + "example": "https://example.com/image.png", + "type": [ + "string", + "null" + ] + }, + "instance_id": { + "example": "in_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "ip_address": { + "example": "127.0.0.1", + "format": "ip", + "type": [ + "string", + "null" + ] + }, + "is_fbo": { + "example": false, + "type": [ + "boolean", + "null" + ] + }, + "is_tos_accepted": { + "type": [ + "boolean", + "null" + ] + }, + "kyc_status": { + "enum": [ + "verifying", + "approved", + "rejected", + "deprecated", + "pending_review", + "awaiting_contract", + "compliance_request", + "approved_rfi" + ], + "example": "verifying", + "type": "string" + }, + "kyc_type": { + "enum": [ + "light", + "standard", + "enhanced" + ], + "example": "standard", + "type": "string" + }, + "kyc_warnings": { + "description": "You can find more information here: https://docs.aiprise.com/docs/warnings-and-error-codes", + "example": [ + { + "code": "BIRTH_DATE_MISMATCH", + "message": "Mismatch between supplied birth date and extracted/looked up birth date.", + "resolution_status": "UNRESOLVED", + "warning_id": "38170889-50aa-4271-9eb1-61113ebf408c" + } + ], + "items": { + "properties": { + "code": { + "type": [ + "string", + "null" + ] + }, + "message": { + "type": [ + "string", + "null" + ] + }, + "resolution_status": { + "type": [ + "string", + "null" + ] + }, + "warning_id": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "last_name": { + "example": "Doe", + "type": [ + "string", + "null" + ] + }, + "latitude": { + "description": "Optional geolocation latitude collected from the customer. Forwarded to AiPrise and SEON for fraud analysis.", + "example": 37.7749, + "maximum": 90, + "minimum": -90, + "type": [ + "number", + "null" + ] + }, + "legal_name": { + "example": "Company Name Inc.", + "type": [ + "string", + "null" + ] + }, + "limit": { + "properties": { + "daily": { + "example": 200000, + "type": [ + "number", + "null" + ] + }, + "monthly": { + "example": 1000000, + "type": [ + "number", + "null" + ] + }, + "per_transaction": { + "example": 100000, + "type": [ + "number", + "null" + ] + } + }, + "required": [ + "per_transaction", + "daily", + "monthly" + ], + "type": "object" + }, + "longitude": { + "description": "Optional geolocation longitude collected from the customer. Forwarded to AiPrise and SEON for fraud analysis.", + "example": -122.4194, + "maximum": 180, + "minimum": -180, + "type": [ + "number", + "null" + ] + }, + "occupation": { + "example": "Software Engineer", + "maxLength": 255, + "type": [ + "string", + "null" + ] + }, + "owners": { + "description": "Customer owners", + "example": [ + { + "address_line_1": "738 Plain St", + "address_line_2": "Building 22", + "city": "Marshfield", + "country": "US", + "first_name": "John", + "id": "ub_000000000000", + "id_doc_back_file": "https://example.com/image.png", + "id_doc_country": "BR", + "id_doc_front_file": "https://example.com/image.png", + "id_doc_type": "PASSPORT", + "last_name": "Doe", + "postal_code": "02050", + "state_province_region": "MA" + } + ], + "items": { + "properties": { + "address_line_1": { + "example": "738 Plain St", + "type": "string" + }, + "address_line_2": { + "example": "Building 22", + "type": [ + "string", + "null" + ] + }, + "city": { + "example": "Marshfield", + "type": "string" + }, + "country": { + "enum": [ + "AF", + "AL", + "DZ", + "AS", + "AD", + "AO", + "AI", + "AQ", + "AG", + "AR", + "AM", + "AW", + "AU", + "AT", + "AZ", + "BS", + "BH", + "BD", + "BB", + "BY", + "BE", + "BZ", + "BJ", + "BM", + "BT", + "BO", + "BQ", + "BA", + "BW", + "BV", + "BR", + "IO", + "BN", + "BG", + "BF", + "BI", + "CV", + "KH", + "CM", + "CA", + "KY", + "CF", + "TD", + "CL", + "CN", + "CX", + "CC", + "CO", + "KM", + "CD", + "CG", + "CK", + "CR", + "HR", + "CU", + "CW", + "CY", + "CZ", + "CI", + "DK", + "DJ", + "DM", + "DO", + "EC", + "EG", + "SV", + "GQ", + "ER", + "EE", + "SZ", + "ET", + "FK", + "FO", + "FJ", + "FI", + "FR", + "GF", + "PF", + "TF", + "GA", + "GM", + "GE", + "DE", + "GH", + "GI", + "GR", + "GL", + "GD", + "GP", + "GU", + "GT", + "GG", + "GN", + "GW", + "GY", + "HT", + "HM", + "VA", + "HN", + "HK", + "HU", + "IS", + "IN", + "ID", + "IR", + "IQ", + "IE", + "IM", + "IL", + "IT", + "JM", + "JP", + "JE", + "JO", + "KZ", + "KE", + "KI", + "KP", + "KR", + "KW", + "KG", + "LA", + "LV", + "LB", + "LS", + "LR", + "LY", + "LI", + "LT", + "LU", + "MO", + "MG", + "MW", + "MY", + "MV", + "ML", + "MT", + "MH", + "MQ", + "MR", + "MU", + "YT", + "MX", + "FM", + "MD", + "MC", + "MN", + "ME", + "MS", + "MA", + "MZ", + "MM", + "NA", + "NR", + "NP", + "NL", + "NC", + "NZ", + "NI", + "NE", + "NG", + "NU", + "NF", + "MP", + "NO", + "OM", + "PK", + "PW", + "PS", + "PA", + "PG", + "PY", + "PE", + "PH", + "PN", + "PL", + "PT", + "PR", + "QA", + "MK", + "RO", + "RU", + "RW", + "RE", + "BL", + "SH", + "KN", + "LC", + "MF", + "PM", + "VC", + "WS", + "SM", + "ST", + "SA", + "SN", + "RS", + "SC", + "SL", + "SG", + "SX", + "SK", + "SI", + "SB", + "SO", + "ZA", + "GS", + "SS", + "ES", + "LK", + "SD", + "SR", + "SJ", + "SE", + "CH", + "SY", + "TW", + "TJ", + "TZ", + "TH", + "TL", + "TG", + "TK", + "TO", + "TT", + "TN", + "TR", + "TM", + "TC", + "TV", + "UG", + "UA", + "AE", + "GB", + "UM", + "US", + "UY", + "UZ", + "VU", + "VE", + "VN", + "VG", + "VI", + "WF", + "EH", + "YE", + "ZM", + "ZW", + "AX" + ], + "example": "US", + "type": "string" + }, + "customer_id": { + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "date_of_birth": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "string" + } + ], + "example": "1998-01-01T00:00:00Z" + }, + "first_name": { + "example": "John", + "minLength": 1, + "type": "string" + }, + "id": { + "example": "ub_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "id_doc_back_file": { + "description": "Only image files are accepted (.jpg, .jpeg, .png)", + "type": [ + "string", + "null" + ] + }, + "id_doc_country": { + "enum": [ + "AF", + "AL", + "DZ", + "AS", + "AD", + "AO", + "AI", + "AQ", + "AG", + "AR", + "AM", + "AW", + "AU", + "AT", + "AZ", + "BS", + "BH", + "BD", + "BB", + "BY", + "BE", + "BZ", + "BJ", + "BM", + "BT", + "BO", + "BQ", + "BA", + "BW", + "BV", + "BR", + "IO", + "BN", + "BG", + "BF", + "BI", + "CV", + "KH", + "CM", + "CA", + "KY", + "CF", + "TD", + "CL", + "CN", + "CX", + "CC", + "CO", + "KM", + "CD", + "CG", + "CK", + "CR", + "HR", + "CU", + "CW", + "CY", + "CZ", + "CI", + "DK", + "DJ", + "DM", + "DO", + "EC", + "EG", + "SV", + "GQ", + "ER", + "EE", + "SZ", + "ET", + "FK", + "FO", + "FJ", + "FI", + "FR", + "GF", + "PF", + "TF", + "GA", + "GM", + "GE", + "DE", + "GH", + "GI", + "GR", + "GL", + "GD", + "GP", + "GU", + "GT", + "GG", + "GN", + "GW", + "GY", + "HT", + "HM", + "VA", + "HN", + "HK", + "HU", + "IS", + "IN", + "ID", + "IR", + "IQ", + "IE", + "IM", + "IL", + "IT", + "JM", + "JP", + "JE", + "JO", + "KZ", + "KE", + "KI", + "KP", + "KR", + "KW", + "KG", + "LA", + "LV", + "LB", + "LS", + "LR", + "LY", + "LI", + "LT", + "LU", + "MO", + "MG", + "MW", + "MY", + "MV", + "ML", + "MT", + "MH", + "MQ", + "MR", + "MU", + "YT", + "MX", + "FM", + "MD", + "MC", + "MN", + "ME", + "MS", + "MA", + "MZ", + "MM", + "NA", + "NR", + "NP", + "NL", + "NC", + "NZ", + "NI", + "NE", + "NG", + "NU", + "NF", + "MP", + "NO", + "OM", + "PK", + "PW", + "PS", + "PA", + "PG", + "PY", + "PE", + "PH", + "PN", + "PL", + "PT", + "PR", + "QA", + "MK", + "RO", + "RU", + "RW", + "RE", + "BL", + "SH", + "KN", + "LC", + "MF", + "PM", + "VC", + "WS", + "SM", + "ST", + "SA", + "SN", + "RS", + "SC", + "SL", + "SG", + "SX", + "SK", + "SI", + "SB", + "SO", + "ZA", + "GS", + "SS", + "ES", + "LK", + "SD", + "SR", + "SJ", + "SE", + "CH", + "SY", + "TW", + "TJ", + "TZ", + "TH", + "TL", + "TG", + "TK", + "TO", + "TT", + "TN", + "TR", + "TM", + "TC", + "TV", + "UG", + "UA", + "AE", + "GB", + "UM", + "US", + "UY", + "UZ", + "VU", + "VE", + "VN", + "VG", + "VI", + "WF", + "EH", + "YE", + "ZM", + "ZW", + "AX" + ], + "example": "BR", + "type": "string" + }, + "id_doc_front_file": { + "description": "Only image files are accepted (.jpg, .jpeg, .png)", + "type": [ + "string", + "null" + ] + }, + "id_doc_type": { + "enum": [ + "PASSPORT", + "ID_CARD", + "DRIVERS" + ], + "example": "PASSPORT", + "type": "string" + }, + "instance_id": { + "example": "in_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "last_name": { + "example": "Doe", + "minLength": 1, + "type": "string" + }, + "ownership_percentage": { + "description": "Ownership percentage of the beneficial owner (0-100)", + "example": 25, + "maximum": 100, + "minimum": 0, + "type": [ + "integer", + "null" + ] + }, + "postal_code": { + "example": "02050", + "type": "string" + }, + "proof_of_address_doc_file": { + "description": "Please upload one document that serve as proof of address, this needs to be the same address as the one provided above. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", + "type": [ + "string", + "null" + ] + }, + "proof_of_address_doc_type": { + "enum": [ + "UTILITY_BILL", + "BANK_STATEMENT", + "RENTAL_AGREEMENT", + "TAX_DOCUMENT", + "GOVERNMENT_CORRESPONDENCE" + ], + "example": "UTILITY_BILL", + "type": [ + "string", + "null" + ] + }, + "role": { + "description": "A beneficial owner is someone who directly or indirectly owns 25% or more of your business. A controlling person is someone with significant responsibility to control, manage or direct your business (typically a CEO, senior executive officer or equivalent).", + "enum": [ + "beneficial_controlling", + "beneficial_owner", + "controlling_person" + ], + "example": "beneficial_owner", + "type": "string" + }, + "state_province_region": { + "example": "MA", + "type": "string" + }, + "tax_id": { + "example": "536804398", + "type": [ + "string", + "null" + ] + }, + "tax_type": { + "description": "Tax identifier type. Mandatory when country is US; must be SSN or ITIN.", + "enum": [ + "SSN", + "ITIN" + ], + "example": "SSN", + "type": [ + "string", + "null" + ] + }, + "title": { + "description": "Job title of the owner", + "example": "CEO", + "maxLength": 128, + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, "type": [ - "string", + "array", "null" - ], - "example": "Postal code" + ] }, - "checkbook_account_id": { + "phone_number": { + "example": "+13055555555", "type": [ "string", "null" - ], - "example": "dc809ff8f4d3417d83e5697e76f0b88a" + ] }, - "checkbook_user_key": { + "postal_code": { + "example": "02050", "type": [ "string", "null" - ], - "example": "d84fd0dc-3882-4de9-97f8-656730214619" + ] }, - "onemoney_external_account_id": { + "proof_of_address_doc_file": { + "description": "Please upload one document that serve as proof of address, this needs to be the same physical address as the one provided above. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", + "example": "https://example.com/image.png", "type": [ "string", "null" - ], - "example": "ex_000000000000" + ] }, - "pix_safe_bank_code": { - "type": [ - "string", - "null" + "proof_of_address_doc_type": { + "enum": [ + "UTILITY_BILL", + "BANK_STATEMENT", + "RENTAL_AGREEMENT", + "TAX_DOCUMENT", + "GOVERNMENT_CORRESPONDENCE" ], - "pattern": "^\\d{4,8}$", - "example": "00416968" - }, - "pix_safe_branch_code": { + "example": "UTILITY_BILL", "type": [ "string", "null" - ], - "pattern": "^\\d{4}(-\\d)?$", - "example": "0001" + ] }, - "pix_safe_cpf_cnpj": { + "proof_of_ownership_doc_file": { + "description": "Please upload your proof of ownership below. This document usually includes information like the shareholders names and percentages. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", + "example": "https://example.com/image.png", "type": [ "string", "null" - ], - "example": "12345678901" + ] }, - "ted_bank_code": { + "publicly_traded": { + "example": false, "type": [ - "string", + "boolean", "null" - ], - "pattern": "^\\d{3,5}$", - "example": "033" + ] }, - "ted_branch_code": { - "type": [ - "string", - "null" + "purpose_of_transactions": { + "enum": [ + "business_transactions", + "charitable_donations", + "investment_purposes", + "payments_to_friends_or_family_abroad", + "personal_or_living_expenses", + "protect_wealth", + "purchase_good_and_services", + "receive_payment_for_freelancing", + "receive_salary", + "other" ], - "pattern": "^\\d{4}(-\\d)?$", - "example": "0001" - }, - "ted_cpf_cnpj": { + "example": "business_transactions", "type": [ "string", "null" - ], - "example": "12345678901" + ] }, - "spei_protocol": { + "purpose_of_transactions_explanation": { + "example": "I am a business owner and I want to receive payments from my customers", "type": [ "string", "null" - ], - "enum": [ - "clabe", - "debitcard", - "phonenum" - ], - "description": "For debitcard and phonenum the spei_institution_code is required", - "example": "clabe" + ] }, - "spei_institution_code": { + "selfie_file": { + "description": "Only image files are accepted (.jpg, .jpeg, .png)", + "example": "https://example.com/image.png", "type": [ "string", "null" - ], - "minLength": 5, - "maxLength": 5, - "example": "40002" + ] }, - "spei_clabe": { + "source_of_funds_doc_file": { + "example": "https://example.com/image.png", "type": [ "string", "null" - ], - "example": "5482347403740546" + ] }, - "transfers_type": { - "type": [ - "string", - "null" - ], + "source_of_funds_doc_type": { "enum": [ - "CVU", - "CBU", - "ALIAS" + "business_income", + "gambling_proceeds", + "gifts", + "government_benefits", + "inheritance", + "investment_loans", + "pension_retirement", + "salary", + "sale_of_assets_real_estate", + "savings", + "esops", + "investment_proceeds", + "someone_else_funds" ], - "example": "CVU" - }, - "transfers_account": { + "example": "business_income", "type": [ "string", "null" - ], - "example": "BM123123123123" + ] }, - "ach_cop_beneficiary_first_name": { - "type": [ - "string", - "null" + "source_of_wealth": { + "enum": [ + "business_dividends_or_profits", + "investments", + "asset_sales", + "client_investor_contributions", + "gambling", + "charitable_contributions", + "inheritance", + "affiliate_or_royalty_income" ], - "example": "Fernando" - }, - "ach_cop_beneficiary_last_name": { + "example": "affiliate_or_royalty_income", "type": [ "string", "null" - ], - "example": "Guzman Alarcón" + ] }, - "ach_cop_document_id": { + "state_province_region": { + "example": "MA", "type": [ "string", "null" - ], - "example": "1661105408" + ] }, - "ach_cop_document_type": { + "tax_id": { + "example": "536804398", "type": [ "string", "null" - ], - "enum": [ - "CC", - "CE", - "NIT", - "PASS", - "PEP" - ], - "description": "CC - Cédula de Ciudadanía; CE - Cédula de Extranjería; NIT - Número de Identificación Tributaria; PASS - Passport; PEP - Permiso Especial de Permanencia", - "example": "CC" + ] }, - "ach_cop_email": { + "tos_id": { + "example": "to_000000000000", + "maxLength": 15, + "minLength": 15, "type": [ "string", "null" - ], - "example": "fernando.guzman@gmail.com" + ] }, - "ach_cop_bank_code": { - "type": [ - "string", - "null" + "type": { + "enum": [ + "individual", + "business" ], - "example": "051" + "example": "individual", + "type": "string" }, - "ach_cop_bank_account": { + "updated_at": { + "example": "2021-01-01T00:00:00Z", + "format": "date-time", "type": [ "string", "null" - ], - "example": "12345678" + ] }, - "swift_code_bic": { - "type": [ - "string", - "null" + "webhook_event": { + "enum": [ + "customer.update" ], - "example": "123456789" + "type": "string" }, - "swift_account_holder_name": { + "website": { + "example": "https://example.com", + "format": "uri", "type": [ "string", "null" - ], - "maxLength": 50, - "example": "John Doe" + ] + } + }, + "required": [ + "webhook_event", + "id", + "customer_id", + "type", + "kyc_type", + "kyc_status", + "email", + "country", + "instance_id", + "limit" + ], + "type": "object" + }, + "Error": { + "properties": { + "code": { + "description": "Stable error code. See the Error codes section for the full list.", + "example": "PAYOUTS_INSUFFICIENT_BALANCE", + "type": "string" }, - "swift_account_number_iban": { - "type": [ - "string", - "null" - ], - "example": "123456789" + "description": { + "description": "Human-readable explanation, safe to show to end users.", + "example": "There is not enough balance to complete this payout. Fund your balance and try again.", + "type": "string" }, - "swift_beneficiary_address_line_1": { - "type": [ - "string", - "null" + "errors": { + "example": [ + "Bad Request" ], - "example": "123 MAIN STREET SUITE 100" + "items": { + "type": "string" + }, + "type": "array" }, - "swift_beneficiary_address_line_2": { - "type": [ - "string", - "null" - ], - "example": "BUILDING A FLOOR 5" + "message": { + "description": "Legacy machine-readable message. Prefer `code` for programmatic handling.", + "example": "not_enough_balance", + "type": "string" }, - "swift_beneficiary_country": { - "type": [ - "string", - "null" - ], - "enum": [ - "AF", - "AL", - "DZ", - "AS", - "AD", - "AO", - "AI", - "AQ", - "AG", - "AR", - "AM", - "AW", - "AU", - "AT", - "AZ", - "BS", - "BH", - "BD", - "BB", - "BY", - "BE", - "BZ", - "BJ", - "BM", - "BT", - "BO", - "BQ", - "BA", - "BW", - "BV", - "BR", - "IO", - "BN", - "BG", - "BF", - "BI", - "CV", - "KH", - "CM", - "CA", - "KY", - "CF", - "TD", - "CL", - "CN", - "CX", - "CC", - "CO", - "KM", - "CD", - "CG", - "CK", - "CR", - "HR", - "CU", - "CW", - "CY", - "CZ", - "CI", - "DK", - "DJ", - "DM", - "DO", - "EC", - "EG", - "SV", - "GQ", - "ER", - "EE", - "SZ", - "ET", - "FK", - "FO", - "FJ", - "FI", - "FR", - "GF", - "PF", - "TF", - "GA", - "GM", - "GE", - "DE", - "GH", - "GI", - "GR", - "GL", - "GD", - "GP", - "GU", - "GT", - "GG", - "GN", - "GW", - "GY", - "HT", - "HM", - "VA", - "HN", - "HK", - "HU", - "IS", - "IN", - "ID", - "IR", - "IQ", - "IE", - "IM", - "IL", - "IT", - "JM", - "JP", - "JE", - "JO", - "KZ", - "KE", - "KI", - "KP", - "KR", - "KW", - "KG", - "LA", - "LV", - "LB", - "LS", - "LR", - "LY", - "LI", - "LT", - "LU", - "MO", - "MG", - "MW", - "MY", - "MV", - "ML", - "MT", - "MH", - "MQ", - "MR", - "MU", - "YT", - "MX", - "FM", - "MD", - "MC", - "MN", - "ME", - "MS", - "MA", - "MZ", - "MM", - "NA", - "NR", - "NP", - "NL", - "NC", - "NZ", - "NI", - "NE", - "NG", - "NU", - "NF", - "MP", - "NO", - "OM", - "PK", - "PW", - "PS", - "PA", - "PG", - "PY", - "PE", - "PH", - "PN", - "PL", - "PT", - "PR", - "QA", - "MK", - "RO", - "RU", - "RW", - "RE", - "BL", - "SH", - "KN", - "LC", - "MF", - "PM", - "VC", - "WS", - "SM", - "ST", - "SA", - "SN", - "RS", - "SC", - "SL", - "SG", - "SX", - "SK", - "SI", - "SB", - "SO", - "ZA", - "GS", - "SS", - "ES", - "LK", - "SD", - "SR", - "SJ", - "SE", - "CH", - "SY", - "TW", - "TJ", - "TZ", - "TH", - "TL", - "TG", - "TK", - "TO", - "TT", - "TN", - "TR", - "TM", - "TC", - "TV", - "UG", - "UA", - "AE", - "GB", - "UM", - "US", - "UY", - "UZ", - "VU", - "VE", - "VN", - "VG", - "VI", - "WF", - "EH", - "YE", - "ZM", - "ZW", - "AX" - ], - "example": "MX" + "success": { + "example": false, + "type": "boolean" + }, + "trace_id": { + "description": "Request trace ID. Include it when contacting support.", + "example": "0af7651916cd43dd8448eb211c80319c", + "type": "string" + } + }, + "required": [ + "success", + "message", + "errors" + ], + "type": "object" + }, + "ExternalInstanceOut": { + "properties": { + "customer_invite_redirect_url": { + "example": "https://blindpay.com", + "format": "uri", + "type": [ + "string", + "null" + ] }, - "swift_beneficiary_city": { + "legal_name": { + "example": "My Company", "type": [ "string", "null" - ], - "example": "MEXICO CITY" + ] + } + }, + "type": "object" + }, + "ExternalOnboardingInfo": { + "properties": { + "email": { + "format": "email", + "type": "string" }, - "swift_beneficiary_state_province_region": { + "legal_name": { "type": [ "string", "null" + ] + }, + "onboarding_step": { + "enum": [ + "initial", + "business_details", + "business_profile", + "documents", + "applicant", + "completed", + "blocked" ], - "example": "MX" + "example": "initial", + "type": "string" + } + }, + "required": [ + "legal_name", + "onboarding_step", + "email" + ], + "type": "object" + }, + "FeeOptions": { + "properties": { + "payin_flat": { + "description": "Payin flat fee in cents", + "example": 40, + "type": "integer" }, - "swift_beneficiary_postal_code": { + "payin_percentage": { + "description": "Payin percentage fee in basis points", + "example": 50, + "type": "integer" + }, + "payout_flat": { + "description": "Payout flat fee in cents", + "example": 40, + "type": "integer" + }, + "payout_percentage": { + "description": "Payout percentage fee in basis points", + "example": 50, + "type": "integer" + } + }, + "required": [ + "payin_flat", + "payin_percentage", + "payout_flat", + "payout_percentage" + ], + "type": "object" + }, + "FeedbackActor": { + "properties": { + "email": { "type": [ "string", "null" - ], - "example": "11530" + ] }, - "swift_bank_name": { + "id": { + "type": "string" + }, + "name": { "type": [ "string", "null" - ], - "example": "Banco Regional SA" + ] + } + }, + "required": [ + "id", + "name", + "email" + ], + "type": [ + "object", + "null" + ] + }, + "FeedbackOut": { + "properties": { + "created_at": { + "example": "2021-01-01T00:00:00Z", + "format": "date-time", + "type": [ + "string", + "null" + ] }, - "swift_bank_address_line_1": { + "description": { + "type": "string" + }, + "email": { + "type": [ + "string", + "null" + ] + }, + "id": { + "example": "fb_000000000000", + "type": "string" + }, + "instance_id": { + "example": "in_000000000000", + "type": [ + "string", + "null" + ] + }, + "page_url": { "type": [ "string", "null" + ] + }, + "title": { + "type": "string" + }, + "type": { + "enum": [ + "bug", + "suggestion", + "feedback", + "praise", + "complaint" ], - "example": "123 Main Street, Suite 100, Downtown District, City Center CP 12345" + "type": "string" }, - "swift_bank_address_line_2": { + "user_agent": { + "type": [ + "string", + "null" + ] + }, + "user_id": { + "example": "us_000000000000", "type": [ "string", "null" + ] + } + }, + "required": [ + "id", + "instance_id", + "user_id", + "type", + "title", + "description", + "email", + "page_url", + "user_agent" + ], + "type": "object" + }, + "FeedbackWithActorOut": { + "allOf": [ + { + "$ref": "#/components/schemas/FeedbackOut" + }, + { + "properties": { + "actor": { + "$ref": "#/components/schemas/FeedbackActor" + } + }, + "required": [ + "actor" ], - "example": "456 Oak Avenue, Building 7, Financial District, Business Center CP 54321" + "type": "object" + } + ] + }, + "GetCustomerLimitIncreaseOut": { + "properties": { + "approved_daily": { + "example": 140000, + "maximum": 100000000000, + "type": [ + "integer", + "null" + ] }, - "swift_bank_country": { + "approved_monthly": { + "example": 700000, + "maximum": 100000000000, + "type": [ + "integer", + "null" + ] + }, + "approved_per_transaction": { + "example": 70000, + "maximum": 100000000000, + "type": [ + "integer", + "null" + ] + }, + "created_at": { + "example": "2021-01-01T00:00:00Z", + "format": "date-time", "type": [ "string", "null" + ] + }, + "customer_id": { + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "daily": { + "example": 200000, + "maximum": 100000000000, + "type": [ + "integer", + "null" + ] + }, + "id": { + "example": "rl_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "monthly": { + "example": 1000000, + "maximum": 100000000000, + "type": [ + "integer", + "null" + ] + }, + "per_transaction": { + "example": 100000, + "maximum": 100000000000, + "type": [ + "integer", + "null" + ] + }, + "status": { + "enum": [ + "in_review", + "approved", + "rejected" ], + "example": "in_review", + "type": "string" + }, + "supporting_document_file": { + "example": "https://example.com/document.pdf", + "format": "uri", + "type": [ + "string", + "null" + ] + }, + "supporting_document_type": { "enum": [ - "AF", - "AL", - "DZ", - "AS", - "AD", - "AO", - "AI", - "AQ", - "AG", - "AR", - "AM", - "AW", - "AU", - "AT", - "AZ", - "BS", - "BH", - "BD", - "BB", - "BY", - "BE", - "BZ", - "BJ", - "BM", - "BT", - "BO", - "BQ", - "BA", - "BW", - "BV", - "BR", - "IO", - "BN", - "BG", - "BF", - "BI", - "CV", - "KH", - "CM", - "CA", - "KY", - "CF", - "TD", - "CL", - "CN", - "CX", - "CC", - "CO", - "KM", - "CD", - "CG", - "CK", - "CR", - "HR", - "CU", - "CW", - "CY", - "CZ", - "CI", - "DK", - "DJ", - "DM", - "DO", - "EC", - "EG", - "SV", - "GQ", - "ER", - "EE", - "SZ", - "ET", - "FK", - "FO", - "FJ", - "FI", - "FR", - "GF", - "PF", - "TF", - "GA", - "GM", - "GE", - "DE", - "GH", - "GI", - "GR", - "GL", - "GD", - "GP", - "GU", - "GT", - "GG", - "GN", - "GW", - "GY", - "HT", - "HM", - "VA", - "HN", - "HK", - "HU", - "IS", - "IN", - "ID", - "IR", - "IQ", - "IE", - "IM", - "IL", - "IT", - "JM", - "JP", - "JE", - "JO", - "KZ", - "KE", - "KI", - "KP", - "KR", - "KW", - "KG", - "LA", - "LV", - "LB", - "LS", - "LR", - "LY", - "LI", - "LT", - "LU", - "MO", - "MG", - "MW", - "MY", - "MV", - "ML", - "MT", - "MH", - "MQ", - "MR", - "MU", - "YT", - "MX", - "FM", - "MD", - "MC", - "MN", - "ME", - "MS", - "MA", - "MZ", - "MM", - "NA", - "NR", - "NP", - "NL", - "NC", - "NZ", - "NI", - "NE", - "NG", - "NU", - "NF", - "MP", - "NO", - "OM", - "PK", - "PW", - "PS", - "PA", - "PG", - "PY", - "PE", - "PH", - "PN", - "PL", - "PT", - "PR", - "QA", - "MK", - "RO", - "RU", - "RW", - "RE", - "BL", - "SH", - "KN", - "LC", - "MF", - "PM", - "VC", - "WS", - "SM", - "ST", - "SA", - "SN", - "RS", - "SC", - "SL", - "SG", - "SX", - "SK", - "SI", - "SB", - "SO", - "ZA", - "GS", - "SS", - "ES", - "LK", - "SD", - "SR", - "SJ", - "SE", - "CH", - "SY", - "TW", - "TJ", - "TZ", - "TH", - "TL", - "TG", - "TK", - "TO", - "TT", - "TN", - "TR", - "TM", - "TC", - "TV", - "UG", - "UA", - "AE", - "GB", - "UM", - "US", - "UY", - "UZ", - "VU", - "VE", - "VN", - "VG", - "VI", - "WF", - "EH", - "YE", - "ZM", - "ZW", - "AX" + "individual_bank_statement", + "individual_tax_return", + "individual_proof_of_income", + "individual_pay_stub", + "individual_employment_letter", + "individual_investment_statement", + "individual_crypto_exchange_statement", + "individual_blockchain_wallet_statement", + "business_bank_statement", + "business_financial_statements", + "business_tax_return", + "business_contract", + "business_accounts_receivable", + "business_merchant_processor_statement", + "business_shareholder_loan" ], - "example": "MX" - }, - "swift_bank_city": { + "example": "individual_bank_statement", "type": [ "string", "null" - ], - "example": "City" + ] }, - "swift_bank_state_province_region": { + "updated_at": { + "example": "2021-01-01T00:00:00Z", + "format": "date-time", "type": [ "string", "null" + ] + } + }, + "required": [ + "id", + "status", + "customer_id" + ], + "type": "object" + }, + "GetCustomerLimitsOut": { + "example": { + "limits": { + "payin": { + "daily": 500000, + "monthly": 2000000 + }, + "payout": { + "daily": 300000, + "monthly": 1000000 + } + } + }, + "properties": { + "limits": { + "properties": { + "payin": { + "properties": { + "daily": { + "type": "number" + }, + "monthly": { + "type": "number" + } + }, + "required": [ + "daily", + "monthly" + ], + "type": "object" + }, + "payout": { + "properties": { + "daily": { + "type": "number" + }, + "monthly": { + "type": "number" + } + }, + "required": [ + "daily", + "monthly" + ], + "type": "object" + } + }, + "required": [ + "payin", + "payout" ], - "example": "District" + "type": "object" + } + }, + "required": [ + "limits" + ], + "type": "object" + }, + "GetFeesOut": { + "properties": { + "ach": { + "$ref": "#/components/schemas/FeeOptions" }, - "swift_bank_postal_code": { - "type": [ - "string", - "null" - ], - "example": "11530" + "ach_colombia": { + "$ref": "#/components/schemas/FeeOptions" }, - "swift_ifsc_branch_code": { + "arbitrum": { + "$ref": "#/components/schemas/FeeOptions" + }, + "base": { + "$ref": "#/components/schemas/FeeOptions" + }, + "created_at": { + "example": "2021-01-01T00:00:00Z", + "format": "date-time", "type": [ "string", "null" - ], - "pattern": "^[A-Z]{4}0[A-Z0-9]{6}$", - "example": "BARB0AHIMCI" + ] }, - "swift_intermediary_bank_swift_code_bic": { - "anyOf": [ - { - "type": "string", - "minLength": 8, - "maxLength": 8 - }, + "domestic_wire": { + "$ref": "#/components/schemas/FeeOptions" + }, + "ethereum": { + "$ref": "#/components/schemas/FeeOptions" + }, + "id": { + "example": "fe_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "instance_id": { + "example": "in_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "international_swift": { + "$ref": "#/components/schemas/FeeOptions" + }, + "pix": { + "$ref": "#/components/schemas/FeeOptions" + }, + "pix_safe": { + "$ref": "#/components/schemas/FeeOptions" + }, + "polygon": { + "$ref": "#/components/schemas/FeeOptions" + }, + "rtp": { + "$ref": "#/components/schemas/FeeOptions" + }, + "sepa": { + "$ref": "#/components/schemas/FeeOptions" + }, + "solana": { + "$ref": "#/components/schemas/FeeOptions" + }, + "spei": { + "$ref": "#/components/schemas/FeeOptions" + }, + "stellar": { + "$ref": "#/components/schemas/FeeOptions" + }, + "ted": { + "allOf": [ { - "type": "string", - "minLength": 11, - "maxLength": 11 + "$ref": "#/components/schemas/FeeOptions" }, { - "type": "null" + "type": [ + "object", + "null" + ] } - ], - "example": "AEIBARB1" + ] }, - "swift_intermediary_bank_account_number_iban": { - "type": [ - "string", - "null" - ], - "maxLength": 34, - "example": "123456789" + "transfers_3": { + "$ref": "#/components/schemas/FeeOptions" }, - "swift_intermediary_bank_name": { - "type": [ - "string", - "null" - ], - "example": "Banco Regional SA" + "tron": { + "$ref": "#/components/schemas/FeeOptions" }, - "swift_intermediary_bank_country": { + "updated_at": { + "example": "2021-01-01T00:00:00Z", + "format": "date-time", "type": [ "string", "null" - ], - "enum": [ - "AF", - "AL", - "DZ", - "AS", - "AD", - "AO", - "AI", - "AQ", - "AG", - "AR", - "AM", - "AW", - "AU", - "AT", - "AZ", - "BS", - "BH", - "BD", - "BB", - "BY", - "BE", - "BZ", - "BJ", - "BM", - "BT", - "BO", - "BQ", - "BA", - "BW", - "BV", - "BR", - "IO", - "BN", - "BG", - "BF", - "BI", - "CV", - "KH", - "CM", - "CA", - "KY", - "CF", - "TD", - "CL", - "CN", - "CX", - "CC", - "CO", - "KM", - "CD", - "CG", - "CK", - "CR", - "HR", - "CU", - "CW", - "CY", - "CZ", - "CI", - "DK", - "DJ", - "DM", - "DO", - "EC", - "EG", - "SV", - "GQ", - "ER", - "EE", - "SZ", - "ET", - "FK", - "FO", - "FJ", - "FI", - "FR", - "GF", - "PF", - "TF", - "GA", - "GM", - "GE", - "DE", - "GH", - "GI", - "GR", - "GL", - "GD", - "GP", - "GU", - "GT", - "GG", - "GN", - "GW", - "GY", - "HT", - "HM", - "VA", - "HN", - "HK", - "HU", - "IS", - "IN", - "ID", - "IR", - "IQ", - "IE", - "IM", - "IL", - "IT", - "JM", - "JP", - "JE", - "JO", - "KZ", - "KE", - "KI", - "KP", - "KR", - "KW", - "KG", - "LA", - "LV", - "LB", - "LS", - "LR", - "LY", - "LI", - "LT", - "LU", - "MO", - "MG", - "MW", - "MY", - "MV", - "ML", - "MT", - "MH", - "MQ", - "MR", - "MU", - "YT", - "MX", - "FM", - "MD", - "MC", - "MN", - "ME", - "MS", - "MA", - "MZ", - "MM", - "NA", - "NR", - "NP", - "NL", - "NC", - "NZ", - "NI", - "NE", - "NG", - "NU", - "NF", - "MP", - "NO", - "OM", - "PK", - "PW", - "PS", - "PA", - "PG", - "PY", - "PE", - "PH", - "PN", - "PL", - "PT", - "PR", - "QA", - "MK", - "RO", - "RU", - "RW", - "RE", - "BL", - "SH", - "KN", - "LC", - "MF", - "PM", - "VC", - "WS", - "SM", - "ST", - "SA", - "SN", - "RS", - "SC", - "SL", - "SG", - "SX", - "SK", - "SI", - "SB", - "SO", - "ZA", - "GS", - "SS", - "ES", - "LK", - "SD", - "SR", - "SJ", - "SE", - "CH", - "SY", - "TW", - "TJ", - "TZ", - "TH", - "TL", - "TG", - "TK", - "TO", - "TT", - "TN", - "TR", - "TM", - "TC", - "TV", - "UG", - "UA", - "AE", - "GB", - "UM", - "US", - "UY", - "UZ", - "VU", - "VE", - "VN", - "VG", - "VI", - "WF", - "EH", - "YE", - "ZM", - "ZW", - "AX" - ], - "example": "US" - }, - "sepa_iban": { + ] + } + }, + "required": [ + "id", + "instance_id", + "ach", + "domestic_wire", + "rtp", + "international_swift", + "pix", + "pix_safe", + "ach_colombia", + "transfers_3", + "spei", + "sepa", + "tron", + "ethereum", + "polygon", + "base", + "arbitrum", + "stellar", + "solana" + ], + "type": "object" + }, + "GetInvoicePdfSchemaOut": { + "properties": { + "url": { + "description": "Signed URL to the partner fee invoice PDF (expires in 15 minutes)", + "example": "https://invoices-bucket.s3.us-east-1.amazonaws.com/signed-url...", + "type": "string" + } + }, + "required": [ + "url" + ], + "type": "object" + }, + "GetInvoiceSchemaOut": { + "properties": { + "collection_id": { + "description": "Reference to invoice collection record", + "example": "ic_000000000000", "type": [ "string", "null" - ], - "example": "DE89370400440532013000" + ] }, - "sepa_beneficiary_bic": { - "type": [ - "string", - "null" - ], - "description": "BIC/SWIFT code of the beneficiary bank", - "example": "TRWIBEB1XXX" + "credit_note_amount": { + "description": "Credit note amount in cents", + "example": 0, + "type": "integer" }, - "sepa_beneficiary_legal_name": { - "type": [ - "string", - "null" - ], - "maxLength": 128, - "example": "Hans Müller" + "discount": { + "description": "Discount amount in cents from Stripe coupon", + "example": 0, + "type": "integer" }, - "sepa_beneficiary_address_line_1": { + "due_date": { + "description": "Invoice due date (null for partner-fee-only invoices)", + "example": "2025-11-21T00:00:00.000Z", + "format": "date-time", "type": [ "string", "null" - ], - "example": "Friedrichstraße 12" + ] }, - "sepa_beneficiary_address_line_2": { - "type": [ - "string", - "null" - ], - "example": "Apt 4B" + "has_partner_fee_invoice": { + "description": "Whether a partner fee collection invoice PDF is available", + "example": false, + "type": "boolean" + }, + "id": { + "description": "Invoice ID", + "example": "iv_000000000000", + "type": "string" + }, + "items": { + "description": "Addon items", + "items": { + "$ref": "#/components/schemas/AddonItemSchema" + }, + "type": "array" + }, + "minimum_per_month": { + "description": "Minimum monthly amount in cents", + "example": 200000, + "type": "integer" + }, + "payin_billing_fees": { + "description": "Payin billing fees in cents", + "example": 10000, + "type": "integer" }, - "sepa_beneficiary_city": { - "type": [ - "string", - "null" - ], - "example": "Berlin" + "payin_partner_fees": { + "description": "Payin partner fees in cents (earnings)", + "example": 25000, + "type": "integer" }, - "sepa_beneficiary_state_province_region": { + "payment_id": { + "description": "Reference to invoice payment record", + "example": "ip_000000000000", "type": [ "string", "null" - ], - "example": "Berlin" + ] }, - "sepa_beneficiary_postal_code": { - "type": [ - "string", - "null" - ], - "example": "10117" + "payout_billing_fees": { + "description": "Payout billing fees in cents", + "example": 10000, + "type": "integer" }, - "sepa_beneficiary_country": { - "type": [ - "string", - "null" - ], + "payout_partner_fees": { + "description": "Payout partner fees in cents (earnings)", + "example": 25000, + "type": "integer" + }, + "period_end": { + "description": "End of billing period", + "example": "2025-11-30T23:59:59.999Z", + "format": "date-time", + "type": "string" + }, + "period_start": { + "description": "Start of billing period", + "example": "2025-11-01T00:00:00.000Z", + "format": "date-time", + "type": "string" + }, + "status": { + "description": "Invoice status: owing (unpaid), paid (payment received), claimable (has partner fees to claim), collected (partner fees claimed), expired (voided), overdue (past due date)", "enum": [ - "AF", - "AL", - "DZ", - "AS", - "AD", - "AO", - "AI", - "AQ", - "AG", - "AR", - "AM", - "AW", - "AU", - "AT", - "AZ", - "BS", - "BH", - "BD", - "BB", - "BY", - "BE", - "BZ", - "BJ", - "BM", - "BT", - "BO", - "BQ", - "BA", - "BW", - "BV", - "BR", - "IO", - "BN", - "BG", - "BF", - "BI", - "CV", - "KH", - "CM", - "CA", - "KY", - "CF", - "TD", - "CL", - "CN", - "CX", - "CC", - "CO", - "KM", - "CD", - "CG", - "CK", - "CR", - "HR", - "CU", - "CW", - "CY", - "CZ", - "CI", - "DK", - "DJ", - "DM", - "DO", - "EC", - "EG", - "SV", - "GQ", - "ER", - "EE", - "SZ", - "ET", - "FK", - "FO", - "FJ", - "FI", - "FR", - "GF", - "PF", - "TF", - "GA", - "GM", - "GE", - "DE", - "GH", - "GI", - "GR", - "GL", - "GD", - "GP", - "GU", - "GT", - "GG", - "GN", - "GW", - "GY", - "HT", - "HM", - "VA", - "HN", - "HK", - "HU", - "IS", - "IN", - "ID", - "IR", - "IQ", - "IE", - "IM", - "IL", - "IT", - "JM", - "JP", - "JE", - "JO", - "KZ", - "KE", - "KI", - "KP", - "KR", - "KW", - "KG", - "LA", - "LV", - "LB", - "LS", - "LR", - "LY", - "LI", - "LT", - "LU", - "MO", - "MG", - "MW", - "MY", - "MV", - "ML", - "MT", - "MH", - "MQ", - "MR", - "MU", - "YT", - "MX", - "FM", - "MD", - "MC", - "MN", - "ME", - "MS", - "MA", - "MZ", - "MM", - "NA", - "NR", - "NP", - "NL", - "NC", - "NZ", - "NI", - "NE", - "NG", - "NU", - "NF", - "MP", - "NO", - "OM", - "PK", - "PW", - "PS", - "PA", - "PG", - "PY", - "PE", - "PH", - "PN", - "PL", - "PT", - "PR", - "QA", - "MK", - "RO", - "RU", - "RW", - "RE", - "BL", - "SH", - "KN", - "LC", - "MF", - "PM", - "VC", - "WS", - "SM", - "ST", - "SA", - "SN", - "RS", - "SC", - "SL", - "SG", - "SX", - "SK", - "SI", - "SB", - "SO", - "ZA", - "GS", - "SS", - "ES", - "LK", - "SD", - "SR", - "SJ", - "SE", - "CH", - "SY", - "TW", - "TJ", - "TZ", - "TH", - "TL", - "TG", - "TK", - "TO", - "TT", - "TN", - "TR", - "TM", - "TC", - "TV", - "UG", - "UA", - "AE", - "GB", - "UM", - "US", - "UY", - "UZ", - "VU", - "VE", - "VN", - "VG", - "VI", - "WF", - "EH", - "YE", - "ZM", - "ZW", - "AX" + "owing", + "paid", + "claimable", + "collected", + "expired", + "overdue" ], - "example": "DE" + "example": "paid", + "type": "string" }, - "business_industry": { + "subscription_plan": { + "description": "Subscription plan: Basic, Business, or Enterprise", + "enum": [ + "Basic", + "Business", + "Enterprise" + ], + "example": "Basic", "type": [ "string", "null" - ], - "enum": [ - "111998", - "112120", - "113310", - "115114", - "541211", - "541810", - "541430", - "541715", - "541930", - "561422", - "561311", - "561612", - "561740", - "561730", - "236115", - "236220", - "237310", - "238210", - "811111", - "812111", - "812112", - "532111", - "624410", - "541922", - "811210", - "812199", - "611110", - "611310", - "611410", - "611710", - "211120", - "212114", - "221310", - "562111", - "562920", - "213112", - "522110", - "522210", - "522320", - "523150", - "523940", - "523999", - "524113", - "813110", - "813211", - "813219", - "551112", - "721110", - "722511", - "722513", - "561510", - "713110", - "713210", - "712110", - "711110", - "711211", - "621111", - "621210", - "622110", - "623110", - "621511", - "623220", - "541940", - "621399", - "621910", - "541110", - "311421", - "337121", - "322220", - "339920", - "334210", - "339930", - "312130", - "334111", - "334118", - "325412", - "339112", - "336110", - "336390", - "315990", - "313110", - "339910", - "516120", - "513130", - "512250", - "519130", - "711410", - "711510", - "531110", - "531120", - "531130", - "531190", - "531210", - "531311", - "531312", - "531320", - "531390", - "454110", - "445110", - "455110", - "457110", - "449210", - "444110", - "459210", - "459120", - "445320", - "458110", - "458210", - "458310", - "455219", - "424210", - "456110", - "446120", - "541511", - "541512", - "541519", - "518210", - "511210", - "517111", - "517112", - "517410", - "481111", - "483111", - "485210", - "488510", - "484121", - "493110", - "423430", - "423690", - "423110", - "423830", - "423840", - "423510", - "424690", - "424990", - "424410", - "424480", - "423940", - "541611", - "541618", - "541330", - "541990", - "541214", - "561499" - ], - "example": "541511" + ] + }, + "subscription_price": { + "description": "Subscription price in cents", + "example": 24900, + "type": "integer" + }, + "total_to_collect": { + "description": "Total partner fees to collect (earnings) in cents", + "example": 50000, + "type": "integer" + }, + "total_to_pay": { + "description": "Total amount owed to Blindpay in cents", + "example": 40000, + "type": "integer" + }, + "url": { + "description": "Invoice URL", + "example": "https://example.com", + "type": "string" + }, + "virtual_account_fees": { + "description": "Virtual account fees in cents", + "example": 10000, + "type": "integer" + } + }, + "required": [ + "id", + "status", + "period_start", + "period_end", + "due_date", + "virtual_account_fees", + "payin_billing_fees", + "payin_partner_fees", + "payout_billing_fees", + "payout_partner_fees", + "total_to_pay", + "total_to_collect", + "discount", + "credit_note_amount", + "url", + "has_partner_fee_invoice", + "minimum_per_month", + "subscription_price", + "items" + ], + "type": "object" + }, + "GetInvoicesSchemaOut": { + "properties": { + "current": { + "$ref": "#/components/schemas/CurrentUsageSchema" + }, + "invoices": { + "items": { + "$ref": "#/components/schemas/InvoiceItemSchema" + }, + "type": "array" + } + }, + "required": [ + "current", + "invoices" + ], + "type": "object" + }, + "InitiateTosIn": { + "properties": { + "customer_id": { + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": [ + "string", + "null" + ] }, - "phone_number": { + "idempotency_key": { + "example": "123e4567-e89b-12d3-a456-426614174000", + "format": "uuid", + "type": "string" + }, + "redirect_url": { + "format": "uri", "type": [ "string", "null" + ] + } + }, + "required": [ + "idempotency_key" + ], + "type": "object" + }, + "InitiateTosOut": { + "properties": { + "url": { + "example": "https://app.blindpay.com/e/terms-of-service?session_token=SESSION_TOKEN_FROM_INITIATE_TOS_RESPONSE", + "format": "uri", + "type": "string" + } + }, + "required": [ + "url" + ], + "type": "object" + }, + "InstanceIn": { + "properties": { + "name": { + "example": "My Instance", + "maxLength": 100, + "minLength": 3, + "type": "string" + }, + "seed_sample_data": { + "description": "Development instances only: seed sample customers, payouts and payins so the dashboard lands populated.", + "example": true, + "type": "boolean" + }, + "type": { + "enum": [ + "production", + "development" + ], + "example": "development", + "type": "string" + } + }, + "required": [ + "name", + "type" + ], + "type": "object" + }, + "InstanceOut": { + "properties": { + "compliance_emails": { + "description": "When non-empty, compliance Request for Information emails are sent only to these addresses instead of all instance members", + "example": [ + "compliance@example.com" ], - "example": "+13055555555" + "items": { + "format": "email", + "type": "string" + }, + "maxItems": 20, + "type": [ + "array", + "null" + ] }, - "tax_id": { + "customer_invite_redirect_url": { + "example": "https://blindpay.com", + "format": "uri", "type": [ "string", "null" - ], - "maxLength": 32, - "example": "536804398" + ] }, - "date_of_birth": { + "customer_rfi_emails_enabled": { + "default": true, + "description": "Whether customer (customer) Request for Information notification emails are sent for this instance. Instance-level RFI emails are always sent regardless of this setting.", + "example": true, + "type": "boolean" + }, + "customers_amount": { + "example": 150, + "type": [ + "number", + "null" + ] + }, + "email_notifications": { + "default": true, + "description": "Whether email notifications are enabled for this instance", + "example": true, + "type": "boolean" + }, + "id": { + "example": "in_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "invoice_due_date_days": { + "description": "Number of days from invoice creation to due date", + "example": 15, + "minimum": 0, + "type": [ + "integer", + "null" + ] + }, + "is_fbo": { + "example": false, + "type": [ + "boolean", + "null" + ] + }, + "last_payout_date": { "anyOf": [ { - "type": "string", - "format": "date-time" + "format": "date-time", + "type": "string" }, { "type": "string" @@ -28394,3851 +21919,10742 @@ "type": "null" } ], - "example": "1998-01-01T00:00:00Z" - } - }, - "required": [ - "type", - "name" - ] - }, - "VirtualAccountOut": { - "type": "object", - "properties": { - "id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "va_000000000000" + "example": "2022-01-01T00:00:00.000Z" }, - "banking_partner": { + "minimum_monthly_amount": { + "description": "Minimum monthly billing amount in USD", + "example": 2000, + "minimum": 0, "type": [ - "string", + "number", "null" - ], - "enum": [ - "jpmorgan", - "citi", - "hsbc", - "cfsb", - "portage" - ], - "example": "jpmorgan" + ] }, - "kyc_status": { - "type": [ - "string", - "null" - ], + "name": { + "example": "My Instance", + "maxLength": 100, + "minLength": 3, + "type": "string" + }, + "onboarding_step": { "enum": [ - "verifying", - "approved", - "rejected", - "deprecated", - "pending_review", - "awaiting_contract", - "compliance_request", - "approved_rfi" + "initial", + "business_details", + "business_profile", + "documents", + "applicant", + "completed", + "blocked" ], - "example": "approved" + "example": "initial", + "type": "string" }, - "us": { - "type": "object", - "properties": { - "ach": { - "type": [ - "object", - "null" - ], - "properties": { - "routing_number": { - "type": "string", - "example": "123456789" - }, - "account_number": { - "type": "string", - "example": "123456789" - } - }, - "required": [ - "routing_number", - "account_number" - ] - }, - "wire": { - "type": "object", - "properties": { - "routing_number": { - "type": "string", - "example": "123456789" - }, - "account_number": { - "type": "string", - "example": "123456789" - } - }, - "required": [ - "routing_number", - "account_number" - ] - }, - "rtp": { - "type": [ - "object", - "null" - ], - "properties": { - "routing_number": { - "type": "string", - "example": "123456789" - }, - "account_number": { - "type": "string", - "example": "123456789" - } - }, - "required": [ - "routing_number", - "account_number" - ] - }, - "swift_bic_code": { - "type": [ - "string", - "null" - ], - "example": "TCCLGB3L" - }, - "swift_account_number": { - "type": [ - "string", - "null" - ], - "example": "GB50TCCL04140449730892" - }, - "account_type": { - "type": [ - "string", - "null" - ], - "enum": [ - "Personal checking", - "Business checking" - ], - "default": "Business checking", - "example": "Business checking" - }, - "beneficiary": { - "type": [ - "object", - "null" - ], - "properties": { - "name": { - "type": "string", - "example": "Customer Name" - }, - "address_line_1": { - "type": "string", - "example": "8 The Green, #19364" - }, - "address_line_2": { - "type": "string", - "example": "Dover, DE 19901" - } - }, - "required": [ - "name", - "address_line_1", - "address_line_2" - ] - }, - "receiving_bank": { - "type": [ - "object", - "null" - ], - "properties": { - "name": { - "type": "string", - "example": "JPMorgan Chase" - }, - "address_line_1": { - "type": "string", - "example": "270 Park Ave" - }, - "address_line_2": { - "type": [ - "string", - "null" - ], - "example": "New York, NY, 10017-2070" - } - }, - "required": [ - "name", - "address_line_1" - ] - }, - "swift_receiving_bank": { - "type": [ - "object", - "null" - ], + "require_passkey": { + "default": false, + "description": "Whether passkey verification is required for protected actions", + "example": false, + "type": "boolean" + }, + "subscription_features": { + "anyOf": [ + { "properties": { - "name": { + "billing_charge": { "type": [ - "string", + "boolean", "null" - ], - "example": "JPMorgan Chase" + ] }, - "address_line_1": { - "type": [ - "string", - "null" - ], - "example": "270 Park Ave" + "international_swift": { + "type": "boolean" }, - "address_line_2": { + "manual_review_all_payments": { "type": [ - "string", + "boolean", "null" - ], - "example": "New York, NY, 10017-2070" - } - } - }, - "swift_intermediary_bank": { - "type": [ - "object", - "null" - ], - "properties": { - "name": { + ] + }, + "manual_review_skip": { + "$ref": "#/components/schemas/ManualReviewSkip" + }, + "otc": { "type": [ - "string", + "boolean", "null" - ], - "example": "JP Morgan Chase NA" + ] }, - "swift_code_bic": { + "otc_dynamic_rate": { "type": [ - "string", + "boolean", "null" - ], - "example": "CHASUS33" + ] }, - "routing_number": { + "otc_manual_execution": { "type": [ - "string", + "boolean", "null" - ], - "example": "021000021" + ] }, - "address_line_1": { + "payment_route": { + "$ref": "#/components/schemas/PaymentRoute" + }, + "ted_payin": { "type": [ - "string", + "boolean", "null" - ], - "example": "270 Park Ave" + ] }, - "address_line_2": { + "virtual_accounts": { + "type": "boolean" + }, + "wallets_and_transfers": { "type": [ - "string", + "boolean", "null" - ], - "example": "New York, NY, 10017-2070" + ] } - } + }, + "required": [ + "international_swift", + "virtual_accounts" + ], + "type": "object" + }, + { + "type": "string" } - }, - "required": [ - "wire" - ] + ], + "example": { + "billing_charge": false, + "international_swift": true, + "manual_review_all_payments": false, + "otc": false, + "otc_manual_execution": false, + "virtual_accounts": false, + "wallets_and_transfers": false + } }, - "token": { - "type": "string", + "subscription_plan": { + "description": "Subscription plan: Basic, Business, or Enterprise", "enum": [ - "USDC", - "USDT", - "USDB" + "Basic", + "Business", + "Enterprise" ], - "example": "USDC" + "example": "Basic", + "type": [ + "string", + "null" + ] }, - "blockchain_wallet_id": { + "subscription_plan_amount": { + "description": "Monthly subscription plan amount in USD", + "example": 249, + "minimum": 0, + "type": [ + "number", + "null" + ] + }, + "subscription_status": { + "description": "Subscription status: active, pending_payment, past_due, or cancelled", + "enum": [ + "active", + "pending_payment", + "past_due", + "cancelled" + ], + "example": "active", "type": [ "string", "null" + ] + }, + "type": { + "enum": [ + "production", + "development" ], - "minLength": 15, - "maxLength": 15, - "example": "bw_000000000000" + "example": "development", + "type": "string" }, - "blockchain_wallet": { + "user_owner_id": { + "example": "us_000000000000", + "type": "string" + }, + "user_role": { + "enum": [ + "owner", + "admin", + "finance", + "checker", + "operations", + "developer", + "viewer" + ], + "example": "admin", "type": [ - "object", + "string", "null" - ], - "properties": { - "network": { - "type": "string", - "enum": [ - "base", - "sepolia", - "arbitrum_sepolia", - "base_sepolia", - "arbitrum", - "polygon", - "polygon_amoy", - "ethereum", - "stellar", - "stellar_testnet", - "tron", - "solana", - "solana_devnet" - ], - "example": "polygon" - }, - "address": { - "type": [ - "string", - "null" - ], - "example": "0xDD6a3aD0949396e57C7738ba8FC1A46A5a1C372C" - } - }, - "required": [ - "network" ] + } + }, + "required": [ + "id", + "name", + "type", + "subscription_features", + "user_owner_id", + "onboarding_step" + ], + "type": "object" + }, + "InstanceRfi": { + "properties": { + "created_at": { + "format": "date-time", + "type": "string" + }, + "expires_at": { + "format": "date-time", + "type": "string" + }, + "id": { + "type": "string" + }, + "instance_id": { + "type": "string" + }, + "request": { + "items": { + "$ref": "#/components/schemas/RfiSection" + }, + "maxItems": 20, + "minItems": 1, + "type": "array" + }, + "response": { + "additionalProperties": { + "anyOf": [ + { + "maxLength": 4096, + "type": "string" + }, + { + "items": { + "format": "uri", + "type": "string" + }, + "maxItems": 20, + "type": "array" + } + ] + }, + "type": "object" + }, + "status": { + "enum": [ + "pending", + "submitted", + "expired", + "cancelled" + ], + "type": "string" }, - "customer_id": { + "submitted_at": { + "format": "date-time", "type": [ "string", "null" - ], - "minLength": 15, - "maxLength": 15, - "example": "re_000000000000" + ] } }, "required": [ "id", - "banking_partner", - "kyc_status", - "us", - "token" + "instance_id", + "status", + "request", + "response", + "expires_at", + "submitted_at", + "created_at" + ], + "type": [ + "object", + "null" ] }, - "CreateVirtualAccountIn": { - "type": "object", + "InvoiceItemSchema": { "properties": { - "banking_partner": { - "type": "string", - "enum": [ - "jpmorgan", - "citi", - "hsbc", - "cfsb", - "portage" - ], - "example": "jpmorgan" + "collection_id": { + "description": "Reference to invoice_collection record", + "example": "ic_000000000000", + "type": [ + "string", + "null" + ] }, - "token": { - "type": "string", - "enum": [ - "USDC", - "USDT", - "USDB" - ], - "example": "USDC" + "discount": { + "description": "Discount amount in cents from Stripe coupon", + "example": 0, + "type": "integer" }, - "blockchain_wallet_id": { - "type": "string", - "minLength": 15, - "maxLength": 15 + "due_date": { + "description": "Invoice due date (null for partner-fee-only invoices)", + "example": "2025-11-21T00:00:00.000Z", + "format": "date-time", + "type": [ + "string", + "null" + ] }, - "sole_proprietor_doc_type": { + "has_partner_fee_invoice": { + "description": "Whether a partner fee collection invoice PDF is available", + "example": false, + "type": "boolean" + }, + "id": { + "description": "Invoice ID", + "example": "iv_000000000000", + "type": "string" + }, + "minimum_per_month": { + "description": "Minimum monthly amount in cents at time of invoice", + "example": 200000, + "type": "integer" + }, + "payin_billing_fees": { + "description": "Payin billing fees in cents", + "example": 10000, + "type": "integer" + }, + "payin_partner_fees": { + "description": "Payin partner fees in cents (earnings)", + "example": 25000, + "type": "integer" + }, + "payment_id": { + "description": "Reference to invoice_payment record", + "example": "ip_000000000000", "type": [ "string", "null" - ], + ] + }, + "payout_billing_fees": { + "description": "Payout billing fees in cents", + "example": 10000, + "type": "integer" + }, + "payout_partner_fees": { + "description": "Payout partner fees in cents (earnings)", + "example": 25000, + "type": "integer" + }, + "period_end": { + "description": "End of billing period", + "example": "2025-11-30T23:59:59.999Z", + "format": "date-time", + "type": "string" + }, + "period_start": { + "description": "Start of billing period", + "example": "2025-11-01T00:00:00.000Z", + "format": "date-time", + "type": "string" + }, + "reference": { + "description": "Invoice reference (billing period month/year)", + "example": "01/2026", + "type": [ + "string", + "null" + ] + }, + "status": { + "description": "Invoice status: owing (unpaid), paid (payment received), claimable (has partner fees to claim), collected (partner fees claimed), expired (voided), overdue (past due date)", "enum": [ - "master_service_agreement", - "salary_slip", - "bank_statement" + "owing", + "paid", + "claimable", + "collected", + "expired", + "overdue" ], - "example": "master_service_agreement" + "example": "paid", + "type": "string" }, - "sole_proprietor_doc_file": { + "subscription_plan": { + "description": "Subscription plan used", + "enum": [ + "Basic", + "Business", + "Enterprise" + ], + "example": "Basic", "type": [ "string", "null" - ], - "format": "uri", - "example": "https://example.com/document.pdf" + ] + }, + "subscription_price": { + "description": "Subscription price in cents used", + "example": 24900, + "type": "integer" + }, + "total_to_collect": { + "description": "Total partner fees to collect (earnings) in cents", + "example": 50000, + "type": "integer" + }, + "total_to_pay": { + "description": "Total amount owed to Blindpay in cents", + "example": 40000, + "type": "integer" + }, + "url": { + "description": "Invoice URL", + "example": "https://example.com", + "type": "string" + }, + "virtual_account_fees": { + "description": "Virtual account fees in cents", + "example": 10000, + "type": "integer" } }, "required": [ - "banking_partner", - "token", - "blockchain_wallet_id" - ] + "id", + "period_start", + "period_end", + "due_date", + "status", + "virtual_account_fees", + "payin_billing_fees", + "payin_partner_fees", + "payout_billing_fees", + "payout_partner_fees", + "total_to_pay", + "total_to_collect", + "discount", + "url", + "has_partner_fee_invoice", + "minimum_per_month", + "subscription_price" + ], + "type": "object" }, - "UpdateVirtualAccountIn": { - "type": "object", + "KycDecisionBody": { "properties": { - "token": { - "type": "string", + "decision": { "enum": [ - "USDC", - "USDT", - "USDB" + "approved", + "rejected" ], - "example": "USDC" + "type": "string" }, - "blockchain_wallet_id": { - "type": "string", - "minLength": 15, - "maxLength": 15 + "reason": { + "maxLength": 2048, + "type": "string" + }, + "reviewed_by": { + "format": "email", + "type": "string" } }, "required": [ - "token", - "blockchain_wallet_id" - ] + "decision", + "reviewed_by" + ], + "type": "object" }, - "CreateCustomerIn": { - "type": "object", + "LedgerOperation": { "properties": { - "type": { - "type": "string", - "enum": [ - "individual", - "business" - ], - "example": "individual" - }, - "kyc_type": { - "type": "string", - "enum": [ - "light", - "standard", - "enhanced" - ], - "example": "standard" + "bank_external_id": { + "type": [ + "string", + "null" + ] }, - "email": { - "type": "string", - "format": "email", - "example": "email@example.com" + "counterparty_address": { + "type": [ + "string", + "null" + ] }, - "tax_id": { + "created_at": { "type": [ "string", "null" - ], - "example": "536804398" + ] }, - "address_line_1": { + "currency": { "type": [ "string", "null" - ], - "example": "738 Plain St" + ] }, - "address_line_2": { + "external_id": { "type": [ "string", "null" - ], - "example": "Building 22" + ] }, - "city": { + "funding_end_to_end_id": { "type": [ "string", "null" - ], - "example": "Marshfield" + ] }, - "state_province_region": { + "id": { + "type": "string" + }, + "instance_id": { "type": [ "string", "null" - ], - "example": "MA" + ] }, - "country": { - "type": "string", + "is_otc": { + "type": "boolean" + }, + "kind": { "enum": [ - "AF", - "AL", - "DZ", - "AS", - "AD", - "AO", - "AI", - "AQ", - "AG", - "AR", - "AM", - "AW", - "AU", - "AT", - "AZ", - "BS", - "BH", - "BD", - "BB", - "BY", - "BE", - "BZ", - "BJ", - "BM", - "BT", - "BO", - "BQ", - "BA", - "BW", - "BV", - "BR", - "IO", - "BN", - "BG", - "BF", - "BI", - "CV", - "KH", - "CM", - "CA", - "KY", - "CF", - "TD", - "CL", - "CN", - "CX", - "CC", - "CO", - "KM", - "CD", - "CG", - "CK", - "CR", - "HR", - "CU", - "CW", - "CY", - "CZ", - "CI", - "DK", - "DJ", - "DM", - "DO", - "EC", - "EG", - "SV", - "GQ", - "ER", - "EE", - "SZ", - "ET", - "FK", - "FO", - "FJ", - "FI", - "FR", - "GF", - "PF", - "TF", - "GA", - "GM", - "GE", - "DE", - "GH", - "GI", - "GR", - "GL", - "GD", - "GP", - "GU", - "GT", - "GG", - "GN", - "GW", - "GY", - "HT", - "HM", - "VA", - "HN", - "HK", - "HU", - "IS", - "IN", - "ID", - "IR", - "IQ", - "IE", - "IM", - "IL", - "IT", - "JM", - "JP", - "JE", - "JO", - "KZ", - "KE", - "KI", - "KP", - "KR", - "KW", - "KG", - "LA", - "LV", - "LB", - "LS", - "LR", - "LY", - "LI", - "LT", - "LU", - "MO", - "MG", - "MW", - "MY", - "MV", - "ML", - "MT", - "MH", - "MQ", - "MR", - "MU", - "YT", - "MX", - "FM", - "MD", - "MC", - "MN", - "ME", - "MS", - "MA", - "MZ", - "MM", - "NA", - "NR", - "NP", - "NL", - "NC", - "NZ", - "NI", - "NE", - "NG", - "NU", - "NF", - "MP", - "NO", - "OM", - "PK", - "PW", - "PS", - "PA", - "PG", - "PY", - "PE", - "PH", - "PN", - "PL", - "PT", - "PR", - "QA", - "MK", - "RO", - "RU", - "RW", - "RE", - "BL", - "SH", - "KN", - "LC", - "MF", - "PM", - "VC", - "WS", - "SM", - "ST", - "SA", - "SN", - "RS", - "SC", - "SL", - "SG", - "SX", - "SK", - "SI", - "SB", - "SO", - "ZA", - "GS", - "SS", - "ES", - "LK", - "SD", - "SR", - "SJ", - "SE", - "CH", - "SY", - "TW", - "TJ", - "TZ", - "TH", - "TL", - "TG", - "TK", - "TO", - "TT", - "TN", - "TR", - "TM", - "TC", - "TV", - "UG", - "UA", - "AE", - "GB", - "UM", - "US", - "UY", - "UZ", - "VU", - "VE", - "VN", - "VG", - "VI", - "WF", - "EH", - "YE", - "ZM", - "ZW", - "AX" + "payin", + "payout" ], - "example": "US" + "type": "string" + }, + "memo_code": { + "type": [ + "string", + "null" + ] + }, + "network": { + "type": [ + "string", + "null" + ] + }, + "payer_tax_id": { + "type": [ + "string", + "null" + ] }, - "postal_code": { + "provider": { "type": [ "string", "null" - ], - "example": "02050" + ] }, - "ip_address": { + "provider_transaction_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "receiver_amount": { "type": [ "string", "null" - ], - "format": "ip", - "example": "127.0.0.1" + ] }, - "latitude": { + "recipient_tax_id": { "type": [ - "number", + "string", "null" - ], - "minimum": -90, - "maximum": 90, - "description": "Optional geolocation latitude collected from the customer. Forwarded to AiPrise and SEON for fraud analysis.", - "example": 37.7749 + ] }, - "longitude": { + "sender_amount": { "type": [ - "number", + "string", "null" - ], - "minimum": -180, - "maximum": 180, - "description": "Optional geolocation longitude collected from the customer. Forwarded to AiPrise and SEON for fraud analysis.", - "example": -122.4194 + ] }, - "image_url": { + "status": { "type": [ "string", "null" - ], - "format": "uri", - "example": "https://example.com/image.png" + ] }, - "phone_number": { + "tx_hashes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "updated_at": { "type": [ "string", "null" - ], - "example": "+13055555555" + ] }, - "proof_of_address_doc_type": { + "veem_customer_id": { "type": [ "string", "null" - ], - "enum": [ - "UTILITY_BILL", - "BANK_STATEMENT", - "RENTAL_AGREEMENT", - "TAX_DOCUMENT", - "GOVERNMENT_CORRESPONDENCE" - ], - "example": "UTILITY_BILL" + ] + } + }, + "required": [ + "kind", + "id", + "instance_id", + "status", + "provider", + "currency", + "sender_amount", + "receiver_amount", + "network", + "counterparty_address", + "tx_hashes", + "provider_transaction_ids", + "external_id", + "bank_external_id", + "memo_code", + "recipient_tax_id", + "veem_customer_id", + "funding_end_to_end_id", + "payer_tax_id", + "is_otc", + "created_at", + "updated_at" + ], + "type": "object" + }, + "LimitIncreaseNewWebhookOut": { + "properties": { + "approved_daily": { + "example": 140000, + "maximum": 100000000000, + "type": [ + "integer", + "null" + ] }, - "proof_of_address_doc_file": { + "approved_monthly": { + "example": 700000, + "maximum": 100000000000, + "type": [ + "integer", + "null" + ] + }, + "approved_per_transaction": { + "example": 70000, + "maximum": 100000000000, + "type": [ + "integer", + "null" + ] + }, + "created_at": { + "example": "2021-01-01T00:00:00Z", + "format": "date-time", "type": [ "string", "null" + ] + }, + "customer_id": { + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "daily": { + "example": 200000, + "maximum": 100000000000, + "type": [ + "integer", + "null" + ] + }, + "id": { + "example": "rl_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "monthly": { + "example": 1000000, + "maximum": 100000000000, + "type": [ + "integer", + "null" + ] + }, + "per_transaction": { + "example": 100000, + "maximum": 100000000000, + "type": [ + "integer", + "null" + ] + }, + "status": { + "enum": [ + "in_review", + "approved", + "rejected" ], - "format": "uri", - "description": "Please upload one document that serve as proof of address, this needs to be the same physical address as the one provided above. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", - "example": "https://example.com/image.png" + "example": "in_review", + "type": "string" }, - "first_name": { + "supporting_document_file": { + "example": "https://example.com/document.pdf", + "format": "uri", "type": [ "string", "null" + ] + }, + "supporting_document_type": { + "enum": [ + "individual_bank_statement", + "individual_tax_return", + "individual_proof_of_income", + "individual_pay_stub", + "individual_employment_letter", + "individual_investment_statement", + "individual_crypto_exchange_statement", + "individual_blockchain_wallet_statement", + "business_bank_statement", + "business_financial_statements", + "business_tax_return", + "business_contract", + "business_accounts_receivable", + "business_merchant_processor_statement", + "business_shareholder_loan" ], - "example": "John" + "example": "individual_bank_statement", + "type": [ + "string", + "null" + ] }, - "last_name": { + "updated_at": { + "example": "2021-01-01T00:00:00Z", + "format": "date-time", "type": [ "string", "null" - ], - "example": "Doe" + ] }, - "date_of_birth": { - "anyOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "type": "string" - }, - { - "type": "null" - } + "webhook_event": { + "enum": [ + "limitIncrease.new" ], - "example": "1998-01-01T00:00:00Z" + "type": "string" + } + }, + "required": [ + "webhook_event", + "id", + "status", + "customer_id" + ], + "type": "object" + }, + "LimitIncreaseUpdateWebhookOut": { + "properties": { + "approved_daily": { + "example": 140000, + "maximum": 100000000000, + "type": [ + "integer", + "null" + ] }, - "id_doc_country": { + "approved_monthly": { + "example": 700000, + "maximum": 100000000000, + "type": [ + "integer", + "null" + ] + }, + "approved_per_transaction": { + "example": 70000, + "maximum": 100000000000, + "type": [ + "integer", + "null" + ] + }, + "created_at": { + "example": "2021-01-01T00:00:00Z", + "format": "date-time", "type": [ "string", "null" + ] + }, + "customer_id": { + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "daily": { + "example": 200000, + "maximum": 100000000000, + "type": [ + "integer", + "null" + ] + }, + "id": { + "example": "rl_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "monthly": { + "example": 1000000, + "maximum": 100000000000, + "type": [ + "integer", + "null" + ] + }, + "per_transaction": { + "example": 100000, + "maximum": 100000000000, + "type": [ + "integer", + "null" + ] + }, + "status": { + "enum": [ + "in_review", + "approved", + "rejected" ], - "enum": [ - "AF", - "AL", - "DZ", - "AS", - "AD", - "AO", - "AI", - "AQ", - "AG", - "AR", - "AM", - "AW", - "AU", - "AT", - "AZ", - "BS", - "BH", - "BD", - "BB", - "BY", - "BE", - "BZ", - "BJ", - "BM", - "BT", - "BO", - "BQ", - "BA", - "BW", - "BV", - "BR", - "IO", - "BN", - "BG", - "BF", - "BI", - "CV", - "KH", - "CM", - "CA", - "KY", - "CF", - "TD", - "CL", - "CN", - "CX", - "CC", - "CO", - "KM", - "CD", - "CG", - "CK", - "CR", - "HR", - "CU", - "CW", - "CY", - "CZ", - "CI", - "DK", - "DJ", - "DM", - "DO", - "EC", - "EG", - "SV", - "GQ", - "ER", - "EE", - "SZ", - "ET", - "FK", - "FO", - "FJ", - "FI", - "FR", - "GF", - "PF", - "TF", - "GA", - "GM", - "GE", - "DE", - "GH", - "GI", - "GR", - "GL", - "GD", - "GP", - "GU", - "GT", - "GG", - "GN", - "GW", - "GY", - "HT", - "HM", - "VA", - "HN", - "HK", - "HU", - "IS", - "IN", - "ID", - "IR", - "IQ", - "IE", - "IM", - "IL", - "IT", - "JM", - "JP", - "JE", - "JO", - "KZ", - "KE", - "KI", - "KP", - "KR", - "KW", - "KG", - "LA", - "LV", - "LB", - "LS", - "LR", - "LY", - "LI", - "LT", - "LU", - "MO", - "MG", - "MW", - "MY", - "MV", - "ML", - "MT", - "MH", - "MQ", - "MR", - "MU", - "YT", - "MX", - "FM", - "MD", - "MC", - "MN", - "ME", - "MS", - "MA", - "MZ", - "MM", - "NA", - "NR", - "NP", - "NL", - "NC", - "NZ", - "NI", - "NE", - "NG", - "NU", - "NF", - "MP", - "NO", - "OM", - "PK", - "PW", - "PS", - "PA", - "PG", - "PY", - "PE", - "PH", - "PN", - "PL", - "PT", - "PR", - "QA", - "MK", - "RO", - "RU", - "RW", - "RE", - "BL", - "SH", - "KN", - "LC", - "MF", - "PM", - "VC", - "WS", - "SM", - "ST", - "SA", - "SN", - "RS", - "SC", - "SL", - "SG", - "SX", - "SK", - "SI", - "SB", - "SO", - "ZA", - "GS", - "SS", - "ES", - "LK", - "SD", - "SR", - "SJ", - "SE", - "CH", - "SY", - "TW", - "TJ", - "TZ", - "TH", - "TL", - "TG", - "TK", - "TO", - "TT", - "TN", - "TR", - "TM", - "TC", - "TV", - "UG", - "UA", - "AE", - "GB", - "UM", - "US", - "UY", - "UZ", - "VU", - "VE", - "VN", - "VG", - "VI", - "WF", - "EH", - "YE", - "ZM", - "ZW", - "AX" - ], - "example": "BR" + "example": "in_review", + "type": "string" }, - "id_doc_type": { + "supporting_document_file": { + "example": "https://example.com/document.pdf", + "format": "uri", "type": [ "string", "null" - ], + ] + }, + "supporting_document_type": { "enum": [ - "PASSPORT", - "ID_CARD", - "DRIVERS" + "individual_bank_statement", + "individual_tax_return", + "individual_proof_of_income", + "individual_pay_stub", + "individual_employment_letter", + "individual_investment_statement", + "individual_crypto_exchange_statement", + "individual_blockchain_wallet_statement", + "business_bank_statement", + "business_financial_statements", + "business_tax_return", + "business_contract", + "business_accounts_receivable", + "business_merchant_processor_statement", + "business_shareholder_loan" ], - "example": "PASSPORT" - }, - "id_doc_front_file": { + "example": "individual_bank_statement", "type": [ "string", "null" - ], - "format": "uri", - "description": "Only image files are accepted (.jpg, .jpeg, .png)", - "example": "https://example.com/image.png" + ] }, - "id_doc_back_file": { + "updated_at": { + "example": "2021-01-01T00:00:00Z", + "format": "date-time", "type": [ "string", "null" + ] + }, + "webhook_event": { + "enum": [ + "limitIncrease.update" ], - "format": "uri", - "description": "Only image files are accepted (.jpg, .jpeg, .png)", - "example": "https://example.com/image.png" + "type": "string" + } + }, + "required": [ + "webhook_event", + "id", + "status", + "customer_id" + ], + "type": "object" + }, + "ManualReviewSkip": { + "description": "Per-rail threshold (in cents of the rail currency: USD for ach/wire/rtp, BRL for pix) at or below which payins and payouts skip the manual review. Takes precedence over the manual-review toggles (customer force_manual_review and instance manual_review_all_payments). FULL bypass: it also takes precedence over the SEON pre-send fraud gate (the check still runs and flags are still posted to Slack for audit). Configure only for fully trusted instances with low thresholds.", + "example": { + "ach": { + "max_amount_usd_cents": 100000 }, - "legal_name": { + "pix": { + "max_amount_brl_cents": 500000 + }, + "rtp": { + "max_amount_usd_cents": 50000 + }, + "wire": { + "max_amount_usd_cents": 500000 + } + }, + "properties": { + "ach": { + "properties": { + "max_amount_usd_cents": { + "description": "Threshold in USD cents. Payins and payouts on this rail at or below it skip the manual review.", + "example": 100000, + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "max_amount_usd_cents" + ], + "type": "object" + }, + "pix": { + "properties": { + "max_amount_brl_cents": { + "description": "Threshold in BRL cents. Pix payins and payouts at or below it skip the manual review.", + "example": 500000, + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "max_amount_brl_cents" + ], + "type": "object" + }, + "rtp": { + "properties": { + "max_amount_usd_cents": { + "description": "Threshold in USD cents. Payins and payouts on this rail at or below it skip the manual review.", + "example": 100000, + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "max_amount_usd_cents" + ], + "type": "object" + }, + "wire": { + "properties": { + "max_amount_usd_cents": { + "description": "Threshold in USD cents. Payins and payouts on this rail at or below it skip the manual review.", + "example": 100000, + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "max_amount_usd_cents" + ], + "type": "object" + } + }, + "type": [ + "object", + "null" + ] + }, + "MigrateInstanceOwnershipIn": { + "properties": { + "user_id": { + "example": "us_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + } + }, + "required": [ + "user_id" + ], + "type": "object" + }, + "MonitoredWallet": { + "properties": { + "address": { + "type": "string" + }, + "instance_id": { "type": [ "string", "null" + ] + }, + "label": { + "description": "treasury: for the shared treasury wallet, instance: for a `wallet` row, instance::offramp for an `offramp_wallet` row.", + "example": "instance:inst_abc123", + "type": "string" + }, + "network": { + "type": "string" + }, + "source": { + "enum": [ + "treasury", + "wallet", + "offramp_wallet" ], - "example": "Company Name Inc." + "type": "string" + } + }, + "required": [ + "network", + "address", + "label", + "source", + "instance_id" + ], + "type": "object" + }, + "OfframpWallet": { + "properties": { + "address": { + "example": "TALJN9zTTEL9TVBb4WuTt6wLvPqJZr3hvb", + "type": "string" }, - "alternate_name": { + "bank_account_id": { + "example": "ba_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "circle_wallet_id": { + "example": "01234567-abcd-efgh-ijkl-012345678901", "type": [ "string", "null" - ], - "example": "Company Name Inc." - }, - "formation_date": { - "anyOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "type": "string" - }, - { - "type": "null" - } - ], - "example": "1998-01-01T00:00:00Z", - "format": "date-time" + ] }, - "website": { + "created_at": { + "example": "2021-01-01T00:00:00Z", + "format": "date-time", "type": [ "string", "null" - ], - "format": "uri", - "example": "https://example.com" + ] }, - "owners": { + "customer_id": { + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "external_id": { + "example": "your_external_id", "type": [ - "array", + "string", "null" - ], - "items": { - "type": "object", - "properties": { - "role": { - "type": "string", - "enum": [ - "beneficial_controlling", - "beneficial_owner", - "controlling_person" - ], - "description": "A beneficial owner is someone who directly or indirectly owns 25% or more of your business. A controlling person is someone with significant responsibility to control, manage or direct your business (typically a CEO, senior executive officer or equivalent).", - "example": "beneficial_owner" - }, - "first_name": { - "type": "string", - "minLength": 1, - "example": "John" - }, - "last_name": { - "type": "string", - "minLength": 1, - "example": "Doe" - }, - "date_of_birth": { - "anyOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "type": "string" - } - ], - "example": "1998-01-01T00:00:00Z" - }, - "tax_id": { - "type": "string", - "example": "536804398" - }, - "address_line_1": { - "type": "string", - "example": "738 Plain St" - }, - "address_line_2": { - "type": [ - "string", - "null" - ], - "example": "Building 22" - }, - "city": { - "type": "string", - "example": "Marshfield" - }, - "state_province_region": { - "type": "string", - "example": "MA" - }, - "country": { - "type": "string", - "enum": [ - "AF", - "AL", - "DZ", - "AS", - "AD", - "AO", - "AI", - "AQ", - "AG", - "AR", - "AM", - "AW", - "AU", - "AT", - "AZ", - "BS", - "BH", - "BD", - "BB", - "BY", - "BE", - "BZ", - "BJ", - "BM", - "BT", - "BO", - "BQ", - "BA", - "BW", - "BV", - "BR", - "IO", - "BN", - "BG", - "BF", - "BI", - "CV", - "KH", - "CM", - "CA", - "KY", - "CF", - "TD", - "CL", - "CN", - "CX", - "CC", - "CO", - "KM", - "CD", - "CG", - "CK", - "CR", - "HR", - "CU", - "CW", - "CY", - "CZ", - "CI", - "DK", - "DJ", - "DM", - "DO", - "EC", - "EG", - "SV", - "GQ", - "ER", - "EE", - "SZ", - "ET", - "FK", - "FO", - "FJ", - "FI", - "FR", - "GF", - "PF", - "TF", - "GA", - "GM", - "GE", - "DE", - "GH", - "GI", - "GR", - "GL", - "GD", - "GP", - "GU", - "GT", - "GG", - "GN", - "GW", - "GY", - "HT", - "HM", - "VA", - "HN", - "HK", - "HU", - "IS", - "IN", - "ID", - "IR", - "IQ", - "IE", - "IM", - "IL", - "IT", - "JM", - "JP", - "JE", - "JO", - "KZ", - "KE", - "KI", - "KP", - "KR", - "KW", - "KG", - "LA", - "LV", - "LB", - "LS", - "LR", - "LY", - "LI", - "LT", - "LU", - "MO", - "MG", - "MW", - "MY", - "MV", - "ML", - "MT", - "MH", - "MQ", - "MR", - "MU", - "YT", - "MX", - "FM", - "MD", - "MC", - "MN", - "ME", - "MS", - "MA", - "MZ", - "MM", - "NA", - "NR", - "NP", - "NL", - "NC", - "NZ", - "NI", - "NE", - "NG", - "NU", - "NF", - "MP", - "NO", - "OM", - "PK", - "PW", - "PS", - "PA", - "PG", - "PY", - "PE", - "PH", - "PN", - "PL", - "PT", - "PR", - "QA", - "MK", - "RO", - "RU", - "RW", - "RE", - "BL", - "SH", - "KN", - "LC", - "MF", - "PM", - "VC", - "WS", - "SM", - "ST", - "SA", - "SN", - "RS", - "SC", - "SL", - "SG", - "SX", - "SK", - "SI", - "SB", - "SO", - "ZA", - "GS", - "SS", - "ES", - "LK", - "SD", - "SR", - "SJ", - "SE", - "CH", - "SY", - "TW", - "TJ", - "TZ", - "TH", - "TL", - "TG", - "TK", - "TO", - "TT", - "TN", - "TR", - "TM", - "TC", - "TV", - "UG", - "UA", - "AE", - "GB", - "UM", - "US", - "UY", - "UZ", - "VU", - "VE", - "VN", - "VG", - "VI", - "WF", - "EH", - "YE", - "ZM", - "ZW", - "AX" - ], - "example": "US" + ] + }, + "id": { + "example": "ow_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "instance_id": { + "example": "in_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "network": { + "enum": [ + "tron", + "solana", + "solana_devnet", + "arbitrum", + "base", + "ethereum", + "polygon", + "sepolia", + "arbitrum_sepolia", + "base_sepolia", + "polygon_amoy" + ], + "example": "tron", + "type": "string" + }, + "updated_at": { + "example": "2021-01-01T00:00:00Z", + "format": "date-time", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id", + "instance_id", + "customer_id", + "bank_account_id", + "network", + "address" + ], + "type": "object" + }, + "PaginationMetadata": { + "properties": { + "has_more": { + "description": "Whether or not there are more elements available after this set.", + "example": true, + "type": "boolean" + }, + "next_page": { + "description": "The ID of the first item in the next page of results.", + "example": "pi_123", + "type": [ + "string", + "null" + ] + }, + "prev_page": { + "description": "The ID of the first item in the previous page of results.", + "example": "pi_123", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "has_more" + ], + "type": "object" + }, + "PayInvoiceSchemaOut": { + "properties": { + "amount": { + "description": "Amount to pay in cents (USD)", + "example": 40000, + "type": "integer" + }, + "solana_wallet": { + "description": "Solana wallet address to send USDC to", + "example": "Sol1abc123def456", + "type": "string" + }, + "tron_wallet": { + "description": "Tron wallet address to send USDT to", + "example": "TXYZabcd1234567890", + "type": "string" + } + }, + "required": [ + "amount", + "tron_wallet", + "solana_wallet" + ], + "type": "object" + }, + "PayinCompleteWebhookOut": { + "properties": { + "billing_fee_amount": { + "description": "Billing fee in cents (charged at the end of the month)", + "example": 50, + "type": [ + "number", + "null" + ] + }, + "blindpay_bank_details": { + "properties": { + "account_number": { + "default": "621327727210181", + "example": "621327727210181", + "type": "string" + }, + "account_type": { + "default": "Business checking", + "example": "Business checking", + "type": "string" + }, + "ach": { + "properties": { + "account_number": { + "example": "123456789", + "type": "string" + }, + "routing_number": { + "example": "123456789", + "type": "string" + } }, - "postal_code": { - "type": "string", - "example": "02050" + "required": [ + "routing_number", + "account_number" + ], + "type": [ + "object", + "null" + ] + }, + "beneficiary": { + "properties": { + "address_line_1": { + "default": "8 The Green, #19364", + "example": "8 The Green, #19364", + "type": "string" + }, + "address_line_2": { + "default": "Dover, DE 19901", + "example": "Dover, DE 19901", + "type": "string" + }, + "name": { + "default": "BlindPay, Inc.", + "example": "BlindPay, Inc.", + "type": "string" + } }, - "id_doc_country": { - "type": "string", - "enum": [ - "AF", - "AL", - "DZ", - "AS", - "AD", - "AO", - "AI", - "AQ", - "AG", - "AR", - "AM", - "AW", - "AU", - "AT", - "AZ", - "BS", - "BH", - "BD", - "BB", - "BY", - "BE", - "BZ", - "BJ", - "BM", - "BT", - "BO", - "BQ", - "BA", - "BW", - "BV", - "BR", - "IO", - "BN", - "BG", - "BF", - "BI", - "CV", - "KH", - "CM", - "CA", - "KY", - "CF", - "TD", - "CL", - "CN", - "CX", - "CC", - "CO", - "KM", - "CD", - "CG", - "CK", - "CR", - "HR", - "CU", - "CW", - "CY", - "CZ", - "CI", - "DK", - "DJ", - "DM", - "DO", - "EC", - "EG", - "SV", - "GQ", - "ER", - "EE", - "SZ", - "ET", - "FK", - "FO", - "FJ", - "FI", - "FR", - "GF", - "PF", - "TF", - "GA", - "GM", - "GE", - "DE", - "GH", - "GI", - "GR", - "GL", - "GD", - "GP", - "GU", - "GT", - "GG", - "GN", - "GW", - "GY", - "HT", - "HM", - "VA", - "HN", - "HK", - "HU", - "IS", - "IN", - "ID", - "IR", - "IQ", - "IE", - "IM", - "IL", - "IT", - "JM", - "JP", - "JE", - "JO", - "KZ", - "KE", - "KI", - "KP", - "KR", - "KW", - "KG", - "LA", - "LV", - "LB", - "LS", - "LR", - "LY", - "LI", - "LT", - "LU", - "MO", - "MG", - "MW", - "MY", - "MV", - "ML", - "MT", - "MH", - "MQ", - "MR", - "MU", - "YT", - "MX", - "FM", - "MD", - "MC", - "MN", - "ME", - "MS", - "MA", - "MZ", - "MM", - "NA", - "NR", - "NP", - "NL", - "NC", - "NZ", - "NI", - "NE", - "NG", - "NU", - "NF", - "MP", - "NO", - "OM", - "PK", - "PW", - "PS", - "PA", - "PG", - "PY", - "PE", - "PH", - "PN", - "PL", - "PT", - "PR", - "QA", - "MK", - "RO", - "RU", - "RW", - "RE", - "BL", - "SH", - "KN", - "LC", - "MF", - "PM", - "VC", - "WS", - "SM", - "ST", - "SA", - "SN", - "RS", - "SC", - "SL", - "SG", - "SX", - "SK", - "SI", - "SB", - "SO", - "ZA", - "GS", - "SS", - "ES", - "LK", - "SD", - "SR", - "SJ", - "SE", - "CH", - "SY", - "TW", - "TJ", - "TZ", - "TH", - "TL", - "TG", - "TK", - "TO", - "TT", - "TN", - "TR", - "TM", - "TC", - "TV", - "UG", - "UA", - "AE", - "GB", - "UM", - "US", - "UY", - "UZ", - "VU", - "VE", - "VN", - "VG", - "VI", - "WF", - "EH", - "YE", - "ZM", - "ZW", - "AX" - ], - "example": "BR" + "type": "object" + }, + "receiving_bank": { + "properties": { + "address_line_1": { + "default": "1 Letterman Drive, Building A, Suite A4-700", + "example": "1 Letterman Drive, Building A, Suite A4-700", + "type": "string" + }, + "address_line_2": { + "default": "San Francisco, CA 94129", + "example": "San Francisco, CA 94129", + "type": "string" + }, + "name": { + "default": "CFSB", + "example": "CFSB", + "type": "string" + } + }, + "type": "object" + }, + "routing_number": { + "default": "121145349", + "example": "121145349", + "type": "string" + }, + "rtp": { + "properties": { + "account_number": { + "example": "123456789", + "type": "string" + }, + "routing_number": { + "example": "123456789", + "type": "string" + } + }, + "required": [ + "routing_number", + "account_number" + ], + "type": [ + "object", + "null" + ] + }, + "swift_account_number": { + "example": "GB50TCCL04140449730892", + "type": [ + "string", + "null" + ] + }, + "swift_bic_code": { + "default": "CHASUS33", + "example": "CHASUS33", + "type": [ + "string", + "null" + ] + }, + "swift_receiving_bank": { + "properties": { + "address_line_1": { + "example": "270 Park Ave", + "type": [ + "string", + "null" + ] + }, + "address_line_2": { + "example": "New York, NY, 10017-2070", + "type": [ + "string", + "null" + ] + }, + "name": { + "example": "JPMorgan Chase", + "type": [ + "string", + "null" + ] + } + }, + "type": [ + "object", + "null" + ] + }, + "wire": { + "properties": { + "account_number": { + "example": "123456789", + "type": "string" + }, + "routing_number": { + "example": "123456789", + "type": "string" + } + }, + "required": [ + "routing_number", + "account_number" + ], + "type": [ + "object", + "null" + ] + } + }, + "required": [ + "beneficiary", + "receiving_bank" + ], + "type": "object" + }, + "clabe": { + "description": "CLABE code", + "example": "014027000000000008", + "type": [ + "string", + "null" + ] + }, + "customer_id": { + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": [ + "string", + "null" + ] + }, + "id": { + "example": "pi_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "memo_code": { + "description": "Memo code", + "example": "8K45GHBNT6BQ6462", + "type": [ + "string", + "null" + ] + }, + "partner_fee": { + "default": 0, + "description": "Payin partner fee amount in cents", + "example": 25000, + "minimum": 0, + "type": "integer" + }, + "payment_method": { + "enum": [ + "ach", + "wire", + "pix", + "ted", + "spei", + "transfers", + "pse", + "international_swift", + "rtp" + ], + "example": "pix", + "type": [ + "string", + "null" + ] + }, + "pix_code": { + "description": "PIX code", + "example": "00020101021226790014br.gov.bcb.pix2557brcode.starkinfra.com/v2/bcf07f6c4110454e9fd6f120bab13e835204000053039865802BR5915Blind Pay, Inc.6010Vila Velha62070503***6304BCAB", + "type": [ + "string", + "null" + ] + }, + "receiver_amount": { + "description": "10.10 USDC", + "example": 1010, + "type": [ + "number", + "null" + ] + }, + "sender_amount": { + "description": "52.40 BRL needs to be sent in a pix transfer", + "example": 5240, + "type": [ + "number", + "null" + ] + }, + "status": { + "description": "Payin general status", + "enum": [ + "processing", + "on_hold", + "failed", + "refunded", + "completed" + ], + "example": "processing", + "type": "string" + }, + "tracking_complete": { + "properties": { + "completed_at": { + "description": "Complete completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Complete step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "on_hold", + "type": "string" + }, + "transaction_hash": { + "description": "Complete transaction hash", + "example": "0x123...890", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "step" + ], + "type": "object" + }, + "tracking_payment": { + "properties": { + "approved_risk_sources": { + "description": "Risk sources already approved by an analyst", + "example": [ + "seon_review" + ], + "items": { + "type": "string" }, - "id_doc_type": { - "type": "string", - "enum": [ - "PASSPORT", - "ID_CARD", - "DRIVERS" - ], - "example": "PASSPORT" + "type": [ + "array", + "null" + ] + }, + "completed_at": { + "description": "Payment completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "provider_name": { + "description": "Payment provider name", + "example": "blockchain", + "type": [ + "string", + "null" + ] + }, + "review_context": { + "additionalProperties": {}, + "description": "Structured risk context for manual review", + "type": [ + "object", + "null" + ] + }, + "review_source": { + "description": "Risk source that sent this payin to manual review", + "example": "seon_review", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Payment step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "on_hold", + "type": "string" + } + }, + "required": [ + "step" + ], + "type": "object" + }, + "tracking_transaction": { + "properties": { + "completed_at": { + "description": "Payin transaction completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "description": { + "example": "Payment from John Doe Smith", + "type": [ + "string", + "null" + ] + }, + "end_to_end_id": { + "description": "BACEN Pix end-to-end transaction ID (govt Pix ID)", + "example": "E20018183202603311320vm6ALFpJpsS", + "type": [ + "string", + "null" + ] + }, + "external_id": { + "description": "Payin transaction external id", + "example": "12345678", + "type": [ + "string", + "null" + ] + }, + "provider_name": { + "description": "Payment provider name", + "enum": [ + "Nvio Pagos", + "Brex", + "Stark Bank", + "JPMorgan Chase", + "HSBC", + "Inter", + "JP Morgan Chase", + "Bitso", + "Citi", + "CFSB", + "Triple A Technologies", + "Portage Bank" + ], + "example": "HSBC", + "type": [ + "string", + "null" + ] + }, + "provider_transaction_id": { + "description": "Payment provider transaction id", + "example": "", + "type": [ + "string", + "null" + ] + }, + "pse_instruction": { + "properties": { + "bank_code": { + "description": "PSE payer bank code", + "example": "1007", + "type": [ + "string", + "null" + ] + }, + "document_type": { + "description": "PSE payer document type", + "enum": [ + "CC", + "NIT" + ], + "example": "CC", + "type": "string" + }, + "email": { + "description": "PSE payer email", + "example": "juan@example.com", + "type": "string" + }, + "fid": { + "description": "PSE funding identifier for webhook matching", + "example": "fid_abc123", + "type": "string" + }, + "full_name": { + "description": "PSE payer full name", + "example": "Juan P\u00e9rez Garc\u00eda", + "type": "string" + }, + "payment_link": { + "description": "PSE payment link URL", + "example": "https://pse.example.com/payment/abc123", + "type": "string" + }, + "phone": { + "description": "PSE payer phone number", + "example": "+573001234567", + "type": "string" + }, + "tax_id": { + "description": "PSE payer document number", + "example": "1234567890", + "type": "string" + } }, - "id_doc_front_file": { - "type": "string", - "format": "uri" + "required": [ + "payment_link", + "fid", + "full_name", + "tax_id", + "document_type", + "phone", + "email" + ], + "type": [ + "object", + "null" + ] + }, + "sender_account_number": { + "example": "1234567890", + "type": [ + "string", + "null" + ] + }, + "sender_bank_code": { + "example": "00416968", + "type": [ + "string", + "null" + ] + }, + "sender_bank_name": { + "example": "Bank of America", + "type": [ + "string", + "null" + ] + }, + "sender_name": { + "example": "John Doe Smith", + "type": [ + "string", + "null" + ] + }, + "sender_tax_id": { + "example": "123.456.789-10", + "type": [ + "string", + "null" + ] + }, + "status": { + "description": "Payin transaction status", + "enum": [ + "failed", + "completed" + ], + "example": "failed", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Payin transaction step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "processing", + "type": "string" + }, + "ted_instruction": { + "properties": { + "account_number": { + "example": "01011707084-8", + "type": "string" + }, + "account_type": { + "example": "checking", + "type": "string" + }, + "bank_code": { + "example": "665", + "type": "string" + }, + "bank_name": { + "example": "STARK BANK S.A.", + "type": "string" + }, + "beneficiary_name": { + "example": "Blind Pay, Inc.", + "type": "string" + }, + "branch_code": { + "example": "5340", + "type": "string" + }, + "tax_id": { + "example": "57.599.376/0001-81", + "type": "string" + } }, - "id_doc_back_file": { - "type": [ - "string", - "null" - ], - "format": "uri", - "description": "Only image files are accepted (.jpg, .jpeg, .png)" + "required": [ + "beneficiary_name", + "tax_id", + "bank_code", + "bank_name", + "branch_code", + "account_number", + "account_type" + ], + "type": [ + "object", + "null" + ] + }, + "trace_number": { + "example": "1234567890", + "type": [ + "string", + "null" + ] + }, + "transaction_hash": { + "description": "Blockchain transaction hash", + "example": "0x123...890", + "type": [ + "string", + "null" + ] + }, + "transaction_reference": { + "example": "1234567890", + "type": [ + "string", + "null" + ] + }, + "transfers_instruction": { + "properties": { + "account": { + "description": "CVU/CBU/Alias account number", + "example": "0000003100012389237485", + "type": "string" + }, + "tax_id": { + "description": "CUIT/CUIL (normalized, digits only)", + "example": "20123456783", + "type": [ + "string", + "null" + ] + }, + "type": { + "description": "Account type (CVU, CBU, or ALIAS)", + "enum": [ + "CVU", + "CBU", + "ALIAS" + ], + "example": "CVU", + "type": "string" + } }, - "proof_of_address_doc_type": { - "type": [ - "string", - "null" - ], - "enum": [ - "UTILITY_BILL", - "BANK_STATEMENT", - "RENTAL_AGREEMENT", - "TAX_DOCUMENT", - "GOVERNMENT_CORRESPONDENCE" - ], - "example": "UTILITY_BILL" + "required": [ + "account", + "type" + ], + "type": [ + "object", + "null" + ] + } + }, + "required": [ + "step" + ], + "type": "object" + }, + "transaction_fee_amount": { + "description": "Transaction fee in cents (percentage-based fee)", + "example": 100, + "type": [ + "number", + "null" + ] + }, + "webhook_event": { + "enum": [ + "payin.complete" + ], + "type": "string" + } + }, + "required": [ + "webhook_event", + "id", + "status", + "tracking_complete", + "tracking_payment", + "tracking_transaction", + "blindpay_bank_details" + ], + "type": "object" + }, + "PayinNewWebhookOut": { + "properties": { + "billing_fee_amount": { + "description": "Billing fee in cents (charged at the end of the month)", + "example": 50, + "type": [ + "number", + "null" + ] + }, + "blindpay_bank_details": { + "properties": { + "account_number": { + "default": "621327727210181", + "example": "621327727210181", + "type": "string" + }, + "account_type": { + "default": "Business checking", + "example": "Business checking", + "type": "string" + }, + "ach": { + "properties": { + "account_number": { + "example": "123456789", + "type": "string" + }, + "routing_number": { + "example": "123456789", + "type": "string" + } }, - "proof_of_address_doc_file": { - "type": [ - "string", - "null" - ], - "format": "uri", - "description": "Please upload one document that serve as proof of address, this needs to be the same address as the one provided above. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB." + "required": [ + "routing_number", + "account_number" + ], + "type": [ + "object", + "null" + ] + }, + "beneficiary": { + "properties": { + "address_line_1": { + "default": "8 The Green, #19364", + "example": "8 The Green, #19364", + "type": "string" + }, + "address_line_2": { + "default": "Dover, DE 19901", + "example": "Dover, DE 19901", + "type": "string" + }, + "name": { + "default": "BlindPay, Inc.", + "example": "BlindPay, Inc.", + "type": "string" + } + }, + "type": "object" + }, + "receiving_bank": { + "properties": { + "address_line_1": { + "default": "1 Letterman Drive, Building A, Suite A4-700", + "example": "1 Letterman Drive, Building A, Suite A4-700", + "type": "string" + }, + "address_line_2": { + "default": "San Francisco, CA 94129", + "example": "San Francisco, CA 94129", + "type": "string" + }, + "name": { + "default": "CFSB", + "example": "CFSB", + "type": "string" + } }, - "ownership_percentage": { - "type": [ - "integer", - "null" - ], - "minimum": 0, - "maximum": 100, - "description": "Ownership percentage of the beneficial owner (0-100)", - "example": 25 + "type": "object" + }, + "routing_number": { + "default": "121145349", + "example": "121145349", + "type": "string" + }, + "rtp": { + "properties": { + "account_number": { + "example": "123456789", + "type": "string" + }, + "routing_number": { + "example": "123456789", + "type": "string" + } }, - "title": { - "type": [ - "string", - "null" - ], - "maxLength": 128, - "description": "Job title of the owner", - "example": "CEO" + "required": [ + "routing_number", + "account_number" + ], + "type": [ + "object", + "null" + ] + }, + "swift_account_number": { + "example": "GB50TCCL04140449730892", + "type": [ + "string", + "null" + ] + }, + "swift_bic_code": { + "default": "CHASUS33", + "example": "CHASUS33", + "type": [ + "string", + "null" + ] + }, + "swift_receiving_bank": { + "properties": { + "address_line_1": { + "example": "270 Park Ave", + "type": [ + "string", + "null" + ] + }, + "address_line_2": { + "example": "New York, NY, 10017-2070", + "type": [ + "string", + "null" + ] + }, + "name": { + "example": "JPMorgan Chase", + "type": [ + "string", + "null" + ] + } }, - "tax_type": { - "type": [ - "string", - "null" - ], - "enum": [ - "SSN", - "ITIN" - ], - "description": "Tax identifier type. Mandatory when country is US; must be SSN or ITIN.", - "example": "SSN" - } + "type": [ + "object", + "null" + ] }, - "required": [ - "role", - "first_name", - "last_name", - "date_of_birth", - "tax_id", - "address_line_1", - "city", - "state_province_region", - "country", - "postal_code", - "id_doc_country", - "id_doc_type", - "id_doc_front_file" - ] - } + "wire": { + "properties": { + "account_number": { + "example": "123456789", + "type": "string" + }, + "routing_number": { + "example": "123456789", + "type": "string" + } + }, + "required": [ + "routing_number", + "account_number" + ], + "type": [ + "object", + "null" + ] + } + }, + "required": [ + "beneficiary", + "receiving_bank" + ], + "type": "object" }, - "incorporation_doc_file": { + "clabe": { + "description": "CLABE code", + "example": "014027000000000008", "type": [ "string", "null" - ], - "format": "uri", - "description": "Please upload your articles of incorporation below. The articles of incorporation or a certificate of incorporation usually includes information like the company name, business purpose, number of shares offered, value of shares, etc. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", - "example": "https://example.com/image.png" + ] }, - "proof_of_ownership_doc_file": { + "customer_id": { + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, "type": [ "string", "null" - ], - "format": "uri", - "description": "Please upload your proof of ownership below. This document usually includes information like the shareholders names and percentages. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", - "example": "https://example.com/image.png" + ] }, - "source_of_funds_doc_type": { + "id": { + "example": "pi_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "memo_code": { + "description": "Memo code", + "example": "8K45GHBNT6BQ6462", "type": [ "string", "null" - ], + ] + }, + "partner_fee": { + "default": 0, + "description": "Payin partner fee amount in cents", + "example": 25000, + "minimum": 0, + "type": "integer" + }, + "payment_method": { "enum": [ - "business_income", - "gambling_proceeds", - "gifts", - "government_benefits", - "inheritance", - "investment_loans", - "pension_retirement", - "salary", - "sale_of_assets_real_estate", - "savings", - "esops", - "investment_proceeds", - "someone_else_funds" + "ach", + "wire", + "pix", + "ted", + "spei", + "transfers", + "pse", + "international_swift", + "rtp" ], - "example": "business_income" - }, - "source_of_funds_doc_file": { + "example": "pix", "type": [ "string", "null" - ], - "format": "uri", - "example": "https://example.com/image.png" + ] }, - "selfie_file": { + "pix_code": { + "description": "PIX code", + "example": "00020101021226790014br.gov.bcb.pix2557brcode.starkinfra.com/v2/bcf07f6c4110454e9fd6f120bab13e835204000053039865802BR5915Blind Pay, Inc.6010Vila Velha62070503***6304BCAB", "type": [ "string", "null" - ], - "format": "uri", - "description": "Only image files are accepted (.jpg, .jpeg, .png)", - "example": "https://example.com/image.png" + ] }, - "purpose_of_transactions": { + "receiver_amount": { + "description": "10.10 USDC", + "example": 1010, "type": [ - "string", + "number", "null" - ], - "enum": [ - "business_transactions", - "charitable_donations", - "investment_purposes", - "payments_to_friends_or_family_abroad", - "personal_or_living_expenses", - "protect_wealth", - "purchase_good_and_services", - "receive_payment_for_freelancing", - "receive_salary", - "other" - ], - "example": "business_transactions" + ] }, - "purpose_of_transactions_explanation": { + "sender_amount": { + "description": "52.40 BRL needs to be sent in a pix transfer", + "example": 5240, "type": [ - "string", + "number", "null" - ], - "example": "I am a business owner and I want to receive payments from my customers" + ] }, - "account_purpose": { - "type": [ - "string", - "null" - ], + "status": { + "description": "Payin general status", "enum": [ - "charitable_donations", - "ecommerce_retail_payments", - "investment_purposes", - "business_expenses", - "payments_to_friends_or_family_abroad", - "personal_or_living_expenses", - "protect_wealth", - "purchase_goods_and_services", - "receive_payments_for_goods_and_services", - "tax_optimization", - "third_party_money_transmission", - "payroll", - "treasury_management", - "other" + "processing", + "on_hold", + "failed", + "refunded", + "completed" ], - "example": "treasury_management" + "example": "processing", + "type": "string" }, - "account_purpose_other": { - "type": [ - "string", - "null" + "tracking_complete": { + "properties": { + "completed_at": { + "description": "Complete completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Complete step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "on_hold", + "type": "string" + }, + "transaction_hash": { + "description": "Complete transaction hash", + "example": "0x123...890", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "step" ], - "maxLength": 512, - "description": "Required when account_purpose is \"other\". Max 512 characters.", - "example": "Custom account purpose description" + "type": "object" }, - "business_type": { - "type": [ - "string", - "null" + "tracking_payment": { + "properties": { + "approved_risk_sources": { + "description": "Risk sources already approved by an analyst", + "example": [ + "seon_review" + ], + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "completed_at": { + "description": "Payment completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "provider_name": { + "description": "Payment provider name", + "example": "blockchain", + "type": [ + "string", + "null" + ] + }, + "review_context": { + "additionalProperties": {}, + "description": "Structured risk context for manual review", + "type": [ + "object", + "null" + ] + }, + "review_source": { + "description": "Risk source that sent this payin to manual review", + "example": "seon_review", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Payment step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "on_hold", + "type": "string" + } + }, + "required": [ + "step" ], - "enum": [ - "corporation", - "llc", - "partnership", - "sole_proprietorship", - "trust", - "non_profit" + "type": "object" + }, + "tracking_transaction": { + "properties": { + "completed_at": { + "description": "Payin transaction completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "description": { + "example": "Payment from John Doe Smith", + "type": [ + "string", + "null" + ] + }, + "end_to_end_id": { + "description": "BACEN Pix end-to-end transaction ID (govt Pix ID)", + "example": "E20018183202603311320vm6ALFpJpsS", + "type": [ + "string", + "null" + ] + }, + "external_id": { + "description": "Payin transaction external id", + "example": "12345678", + "type": [ + "string", + "null" + ] + }, + "provider_name": { + "description": "Payment provider name", + "enum": [ + "Nvio Pagos", + "Brex", + "Stark Bank", + "JPMorgan Chase", + "HSBC", + "Inter", + "JP Morgan Chase", + "Bitso", + "Citi", + "CFSB", + "Triple A Technologies", + "Portage Bank" + ], + "example": "HSBC", + "type": [ + "string", + "null" + ] + }, + "provider_transaction_id": { + "description": "Payment provider transaction id", + "example": "", + "type": [ + "string", + "null" + ] + }, + "pse_instruction": { + "properties": { + "bank_code": { + "description": "PSE payer bank code", + "example": "1007", + "type": [ + "string", + "null" + ] + }, + "document_type": { + "description": "PSE payer document type", + "enum": [ + "CC", + "NIT" + ], + "example": "CC", + "type": "string" + }, + "email": { + "description": "PSE payer email", + "example": "juan@example.com", + "type": "string" + }, + "fid": { + "description": "PSE funding identifier for webhook matching", + "example": "fid_abc123", + "type": "string" + }, + "full_name": { + "description": "PSE payer full name", + "example": "Juan P\u00e9rez Garc\u00eda", + "type": "string" + }, + "payment_link": { + "description": "PSE payment link URL", + "example": "https://pse.example.com/payment/abc123", + "type": "string" + }, + "phone": { + "description": "PSE payer phone number", + "example": "+573001234567", + "type": "string" + }, + "tax_id": { + "description": "PSE payer document number", + "example": "1234567890", + "type": "string" + } + }, + "required": [ + "payment_link", + "fid", + "full_name", + "tax_id", + "document_type", + "phone", + "email" + ], + "type": [ + "object", + "null" + ] + }, + "sender_account_number": { + "example": "1234567890", + "type": [ + "string", + "null" + ] + }, + "sender_bank_code": { + "example": "00416968", + "type": [ + "string", + "null" + ] + }, + "sender_bank_name": { + "example": "Bank of America", + "type": [ + "string", + "null" + ] + }, + "sender_name": { + "example": "John Doe Smith", + "type": [ + "string", + "null" + ] + }, + "sender_tax_id": { + "example": "123.456.789-10", + "type": [ + "string", + "null" + ] + }, + "status": { + "description": "Payin transaction status", + "enum": [ + "failed", + "completed" + ], + "example": "failed", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Payin transaction step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "processing", + "type": "string" + }, + "ted_instruction": { + "properties": { + "account_number": { + "example": "01011707084-8", + "type": "string" + }, + "account_type": { + "example": "checking", + "type": "string" + }, + "bank_code": { + "example": "665", + "type": "string" + }, + "bank_name": { + "example": "STARK BANK S.A.", + "type": "string" + }, + "beneficiary_name": { + "example": "Blind Pay, Inc.", + "type": "string" + }, + "branch_code": { + "example": "5340", + "type": "string" + }, + "tax_id": { + "example": "57.599.376/0001-81", + "type": "string" + } + }, + "required": [ + "beneficiary_name", + "tax_id", + "bank_code", + "bank_name", + "branch_code", + "account_number", + "account_type" + ], + "type": [ + "object", + "null" + ] + }, + "trace_number": { + "example": "1234567890", + "type": [ + "string", + "null" + ] + }, + "transaction_hash": { + "description": "Blockchain transaction hash", + "example": "0x123...890", + "type": [ + "string", + "null" + ] + }, + "transaction_reference": { + "example": "1234567890", + "type": [ + "string", + "null" + ] + }, + "transfers_instruction": { + "properties": { + "account": { + "description": "CVU/CBU/Alias account number", + "example": "0000003100012389237485", + "type": "string" + }, + "tax_id": { + "description": "CUIT/CUIL (normalized, digits only)", + "example": "20123456783", + "type": [ + "string", + "null" + ] + }, + "type": { + "description": "Account type (CVU, CBU, or ALIAS)", + "enum": [ + "CVU", + "CBU", + "ALIAS" + ], + "example": "CVU", + "type": "string" + } + }, + "required": [ + "account", + "type" + ], + "type": [ + "object", + "null" + ] + } + }, + "required": [ + "step" ], - "example": "llc" + "type": "object" }, - "business_description": { + "transaction_fee_amount": { + "description": "Transaction fee in cents (percentage-based fee)", + "example": 100, "type": [ - "string", + "number", "null" - ], - "maxLength": 1000, - "example": "Software development company" + ] }, - "business_industry": { - "type": [ - "string", - "null" - ], + "webhook_event": { "enum": [ - "111998", - "112120", - "113310", - "115114", - "541211", - "541810", - "541430", - "541715", - "541930", - "561422", - "561311", - "561612", - "561740", - "561730", - "236115", - "236220", - "237310", - "238210", - "811111", - "812111", - "812112", - "532111", - "624410", - "541922", - "811210", - "812199", - "611110", - "611310", - "611410", - "611710", - "211120", - "212114", - "221310", - "562111", - "562920", - "213112", - "522110", - "522210", - "522320", - "523150", - "523940", - "523999", - "524113", - "813110", - "813211", - "813219", - "551112", - "721110", - "722511", - "722513", - "561510", - "713110", - "713210", - "712110", - "711110", - "711211", - "621111", - "621210", - "622110", - "623110", - "621511", - "623220", - "541940", - "621399", - "621910", - "541110", - "311421", - "337121", - "322220", - "339920", - "334210", - "339930", - "312130", - "334111", - "334118", - "325412", - "339112", - "336110", - "336390", - "315990", - "313110", - "339910", - "516120", - "513130", - "512250", - "519130", - "711410", - "711510", - "531110", - "531120", - "531130", - "531190", - "531210", - "531311", - "531312", - "531320", - "531390", - "454110", - "445110", - "455110", - "457110", - "449210", - "444110", - "459210", - "459120", - "445320", - "458110", - "458210", - "458310", - "455219", - "424210", - "456110", - "446120", - "541511", - "541512", - "541519", - "518210", - "511210", - "517111", - "517112", - "517410", - "481111", - "483111", - "485210", - "488510", - "484121", - "493110", - "423430", - "423690", - "423110", - "423830", - "423840", - "423510", - "424690", - "424990", - "424410", - "424480", - "423940", - "541611", - "541618", - "541330", - "541990", - "541214", - "561499" + "payin.new" ], - "example": "541511" - }, - "estimated_annual_revenue": { + "type": "string" + } + }, + "required": [ + "webhook_event", + "id", + "status", + "tracking_complete", + "tracking_payment", + "tracking_transaction", + "blindpay_bank_details" + ], + "type": "object" + }, + "PayinOut": { + "properties": { + "address": { + "example": "0xDD6a3aD0949396e57C7738ba8FC1A46A5a1C372C", "type": [ "string", "null" - ], - "enum": [ - "0_99999", - "100000_999999", - "1000000_9999999", - "10000000_49999999", - "50000000_249999999", - "250000000_plus" - ], - "example": "1000000_9999999" + ] }, - "source_of_wealth": { + "billing_fee_amount": { + "description": "Billing fee in cents (charged at the end of the month)", + "example": 50, "type": [ - "string", + "number", "null" - ], - "enum": [ - "business_dividends_or_profits", - "investments", - "asset_sales", - "client_investor_contributions", - "gambling", - "charitable_contributions", - "inheritance", - "affiliate_or_royalty_income" - ], - "example": "affiliate_or_royalty_income" + ] }, - "publicly_traded": { - "type": [ - "boolean", - "null" + "blindpay_bank_details": { + "properties": { + "account_number": { + "default": "621327727210181", + "example": "621327727210181", + "type": "string" + }, + "account_type": { + "default": "Business checking", + "example": "Business checking", + "type": "string" + }, + "ach": { + "properties": { + "account_number": { + "example": "123456789", + "type": "string" + }, + "routing_number": { + "example": "123456789", + "type": "string" + } + }, + "required": [ + "routing_number", + "account_number" + ], + "type": [ + "object", + "null" + ] + }, + "beneficiary": { + "properties": { + "address_line_1": { + "default": "8 The Green, #19364", + "example": "8 The Green, #19364", + "type": "string" + }, + "address_line_2": { + "default": "Dover, DE 19901", + "example": "Dover, DE 19901", + "type": "string" + }, + "name": { + "default": "BlindPay, Inc.", + "example": "BlindPay, Inc.", + "type": "string" + } + }, + "type": "object" + }, + "receiving_bank": { + "properties": { + "address_line_1": { + "default": "1 Letterman Drive, Building A, Suite A4-700", + "example": "1 Letterman Drive, Building A, Suite A4-700", + "type": "string" + }, + "address_line_2": { + "default": "San Francisco, CA 94129", + "example": "San Francisco, CA 94129", + "type": "string" + }, + "name": { + "default": "CFSB", + "example": "CFSB", + "type": "string" + } + }, + "type": "object" + }, + "routing_number": { + "default": "121145349", + "example": "121145349", + "type": "string" + }, + "rtp": { + "properties": { + "account_number": { + "example": "123456789", + "type": "string" + }, + "routing_number": { + "example": "123456789", + "type": "string" + } + }, + "required": [ + "routing_number", + "account_number" + ], + "type": [ + "object", + "null" + ] + }, + "swift_account_number": { + "example": "GB50TCCL04140449730892", + "type": [ + "string", + "null" + ] + }, + "swift_bic_code": { + "default": "CHASUS33", + "example": "CHASUS33", + "type": [ + "string", + "null" + ] + }, + "swift_receiving_bank": { + "properties": { + "address_line_1": { + "example": "270 Park Ave", + "type": [ + "string", + "null" + ] + }, + "address_line_2": { + "example": "New York, NY, 10017-2070", + "type": [ + "string", + "null" + ] + }, + "name": { + "example": "JPMorgan Chase", + "type": [ + "string", + "null" + ] + } + }, + "type": [ + "object", + "null" + ] + }, + "wire": { + "properties": { + "account_number": { + "example": "123456789", + "type": "string" + }, + "routing_number": { + "example": "123456789", + "type": "string" + } + }, + "required": [ + "routing_number", + "account_number" + ], + "type": [ + "object", + "null" + ] + } + }, + "required": [ + "beneficiary", + "receiving_bank" ], - "example": false - }, - "occupation": { "type": [ - "string", + "object", "null" - ], - "maxLength": 255, - "example": "Software Engineer" + ] }, - "external_id": { + "blindpay_quotation": { + "description": "1 USD = 5.05 BRL (commercial quotation + (blindpay taxes))", + "example": 505, "type": [ - "string", + "number", "null" - ], - "example": "your_company_external_id" + ] }, - "tos_id": { + "clabe": { + "description": "CLABE code", + "example": "014027000000000008", "type": [ "string", "null" - ], - "minLength": 15, - "maxLength": 15, - "example": "to_000000000000" - }, - "additional_info": { - "type": [ - "array", - "null" - ], - "items": { - "$ref": "#/components/schemas/AdditionalInfoItem" - }, - "description": "Optional extra documents or notes for this customer. `label` is a known category, `value` is either a URL to upload or a free-text description. Any URLs are downloaded and re-hosted on Blindpay storage before being stored.", - "example": [ - { - "label": "EIN_LETTER", - "value": "https://example.com/ein.pdf" - }, - { - "label": "FLOW_OF_FUNDS", - "value": "Funds originate from US payroll deposits, forwarded weekly to customer." - } ] - } - }, - "required": [ - "type", - "kyc_type", - "email", - "country" - ] - }, - "CustomerOut": { - "type": "object", - "properties": { - "id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "re_000000000000" }, - "customer_id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "re_000000000000" + "commercial_quotation": { + "description": "1 USD = 4.95 BRL", + "example": 495, + "type": [ + "number", + "null" + ] }, - "type": { - "type": "string", - "enum": [ - "individual", - "business" - ], - "example": "individual" + "created_at": { + "example": "2021-01-01T00:00:00Z", + "format": "date-time", + "type": [ + "string", + "null" + ] }, - "kyc_type": { - "type": "string", + "currency": { + "description": "ISO 4271 currency code", "enum": [ - "light", - "standard", - "enhanced" + "BRL", + "USD", + "MXN", + "COP", + "ARS", + "EUR" ], - "example": "standard" + "example": "BRL", + "type": "string" }, - "kyc_status": { - "type": "string", - "enum": [ - "verifying", - "approved", - "rejected", - "deprecated", - "pending_review", - "awaiting_contract", - "compliance_request", - "approved_rfi" - ], - "example": "verifying" + "customer_id": { + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" }, - "kyc_warnings": { + "first_name": { + "example": "John", "type": [ - "array", + "string", "null" - ], - "items": { - "type": "object", - "properties": { - "code": { - "type": [ - "string", - "null" - ] - }, - "message": { - "type": [ - "string", - "null" - ] - }, - "resolution_status": { - "type": [ - "string", - "null" - ] - }, - "warning_id": { - "type": [ - "string", - "null" - ] - } - } - }, - "description": "You can find more information here: https://docs.aiprise.com/docs/warnings-and-error-codes", - "example": [ - { - "code": "BIRTH_DATE_MISMATCH", - "message": "Mismatch between supplied birth date and extracted/looked up birth date.", - "resolution_status": "UNRESOLVED", - "warning_id": "38170889-50aa-4271-9eb1-61113ebf408c" - } ] }, - "fraud_warnings": { + "id": { + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "image_url": { + "example": "https://example.com/image.png", + "format": "uri", "type": [ - "array", + "string", "null" - ], - "items": { - "type": "object", - "properties": { - "id": { - "type": [ - "string", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - }, - "operation": { - "type": [ - "string", - "null" - ] - }, - "score": { - "type": [ - "number", - "null" - ] - } - } - }, - "example": [ - { - "id": "UC114", - "name": "User never used a Datacenter proxy and this device before", - "operation": "+", - "score": 10 - } ] }, - "email": { - "type": "string", - "format": "email", - "example": "email@example.com" + "instance_id": { + "example": "in_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" }, - "tax_id": { + "is_otc": { + "description": "If true, the payin quote is for an OTC (Over the Counter) transaction", + "example": false, + "type": [ + "boolean", + "null" + ] + }, + "last_name": { + "example": "Doe", "type": [ "string", "null" - ], - "example": "536804398" + ] }, - "address_line_1": { + "legal_name": { + "example": "Company Name Inc.", "type": [ "string", "null" - ], - "example": "738 Plain St" + ] }, - "address_line_2": { + "manual_concluded_at": { + "description": "When `manual_execution_status` transitioned to `concluded`. Postgres returns a Date; this transform normalizes to an ISO string for the SDK.", + "example": null + }, + "manual_concluded_by": { + "description": "Identifier of the operator who marked the manual OTC concluded.", + "example": null, "type": [ "string", "null" + ] + }, + "manual_execution_status": { + "description": "When non-null, the payin was created while the manual OTC liquidity toggle was ON. `pending` means an operator must convert BRL\u2192USDT manually and click \"Mark concluded\"; `concluded` closes the internal flow. Customer-facing behavior is identical in either mode.", + "enum": [ + "pending", + "concluded", + "failed" ], - "example": "Building 22" + "example": null, + "type": [ + "string", + "null" + ] }, - "city": { + "memo_code": { + "description": "Memo code", + "example": "8K45GHBNT6BQ6462", "type": [ "string", "null" + ] + }, + "name": { + "example": "Wallet Display Name", + "type": "string" + }, + "network": { + "enum": [ + "base", + "sepolia", + "arbitrum_sepolia", + "base_sepolia", + "arbitrum", + "polygon", + "polygon_amoy", + "ethereum", + "stellar", + "stellar_testnet", + "tron", + "solana", + "solana_devnet" ], - "example": "Marshfield" + "example": "polygon", + "type": "string" }, - "state_province_region": { + "partner_fee": { + "default": 0, + "description": "Payin partner fee amount in cents", + "example": 25000, + "minimum": 0, + "type": "integer" + }, + "partner_fee_amount": { + "default": 0, + "description": "1.5 USDC", + "example": 150, + "type": [ + "number", + "null" + ] + }, + "partner_fee_id": { + "example": "pf_000000000000", + "maxLength": 15, + "minLength": 15, "type": [ "string", "null" - ], - "example": "MA" + ] }, - "country": { - "type": "string", - "enum": [ - "AF", - "AL", - "DZ", - "AS", - "AD", - "AO", - "AI", - "AQ", - "AG", - "AR", - "AM", - "AW", - "AU", - "AT", - "AZ", - "BS", - "BH", - "BD", - "BB", - "BY", - "BE", - "BZ", - "BJ", - "BM", - "BT", - "BO", - "BQ", - "BA", - "BW", - "BV", - "BR", - "IO", - "BN", - "BG", - "BF", - "BI", - "CV", - "KH", - "CM", - "CA", - "KY", - "CF", - "TD", - "CL", - "CN", - "CX", - "CC", - "CO", - "KM", - "CD", - "CG", - "CK", - "CR", - "HR", - "CU", - "CW", - "CY", - "CZ", - "CI", - "DK", - "DJ", - "DM", - "DO", - "EC", - "EG", - "SV", - "GQ", - "ER", - "EE", - "SZ", - "ET", - "FK", - "FO", - "FJ", - "FI", - "FR", - "GF", - "PF", - "TF", - "GA", - "GM", - "GE", - "DE", - "GH", - "GI", - "GR", - "GL", - "GD", - "GP", - "GU", - "GT", - "GG", - "GN", - "GW", - "GY", - "HT", - "HM", - "VA", - "HN", - "HK", - "HU", - "IS", - "IN", - "ID", - "IR", - "IQ", - "IE", - "IM", - "IL", - "IT", - "JM", - "JP", - "JE", - "JO", - "KZ", - "KE", - "KI", - "KP", - "KR", - "KW", - "KG", - "LA", - "LV", - "LB", - "LS", - "LR", - "LY", - "LI", - "LT", - "LU", - "MO", - "MG", - "MW", - "MY", - "MV", - "ML", - "MT", - "MH", - "MQ", - "MR", - "MU", - "YT", - "MX", - "FM", - "MD", - "MC", - "MN", - "ME", - "MS", - "MA", - "MZ", - "MM", - "NA", - "NR", - "NP", - "NL", - "NC", - "NZ", - "NI", - "NE", - "NG", - "NU", - "NF", - "MP", - "NO", - "OM", - "PK", - "PW", - "PS", - "PA", - "PG", - "PY", - "PE", - "PH", - "PN", - "PL", - "PT", - "PR", - "QA", - "MK", - "RO", - "RU", - "RW", - "RE", - "BL", - "SH", - "KN", - "LC", - "MF", - "PM", - "VC", - "WS", - "SM", - "ST", - "SA", - "SN", - "RS", - "SC", - "SL", - "SG", - "SX", - "SK", - "SI", - "SB", - "SO", - "ZA", - "GS", - "SS", - "ES", - "LK", - "SD", - "SR", - "SJ", - "SE", - "CH", - "SY", - "TW", - "TJ", - "TZ", - "TH", - "TL", - "TG", - "TK", - "TO", - "TT", - "TN", - "TR", - "TM", - "TC", - "TV", - "UG", - "UA", - "AE", - "GB", - "UM", - "US", - "UY", - "UZ", - "VU", - "VE", - "VN", - "VG", - "VI", - "WF", - "EH", - "YE", - "ZM", - "ZW", - "AX" + "payer_rules": { + "example": { + "pix_allowed_tax_ids": [ + "123.456.789-09" + ], + "pse_allowed_tax_ids": [ + "1234567890" + ], + "transfers_allowed_tax_id": "20-12345678-3" + }, + "properties": { + "pix_allowed_tax_ids": { + "items": { + "example": "123.456.789-09", + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "pse_allowed_tax_ids": { + "items": { + "example": "1234567890", + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "pse_bank_code": { + "type": [ + "string", + "null" + ] + }, + "pse_document_number": { + "type": [ + "string", + "null" + ] + }, + "pse_document_type": { + "enum": [ + "CC", + "NIT" + ], + "type": [ + "string", + "null" + ] + }, + "pse_email": { + "format": "email", + "type": [ + "string", + "null" + ] + }, + "pse_full_name": { + "maxLength": 50, + "type": [ + "string", + "null" + ] + }, + "pse_phone": { + "pattern": "^\\+573\\d{9}$", + "type": [ + "string", + "null" + ] + }, + "transfers_allowed_tax_id": { + "example": "20-12345678-3", + "type": [ + "string", + "null" + ] + } + }, + "type": [ + "object", + "null" + ] + }, + "payin_quote_id": { + "example": "pq_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "payment_method": { + "enum": [ + "ach", + "wire", + "pix", + "ted", + "spei", + "transfers", + "pse", + "international_swift", + "rtp" ], - "example": "US" + "example": "pix", + "type": "string" }, - "postal_code": { + "pix_code": { + "description": "PIX code", + "example": "00020101021226790014br.gov.bcb.pix2557brcode.starkinfra.com/v2/bcf07f6c4110454e9fd6f120bab13e835204000053039865802BR5915Blind Pay, Inc.6010Vila Velha62070503***6304BCAB", "type": [ "string", "null" + ] + }, + "pse_document_type": { + "description": "PSE payer document type", + "enum": [ + "CC", + "NIT" ], - "example": "02050" + "example": "CC", + "type": [ + "string", + "null" + ] }, - "ip_address": { + "pse_full_name": { + "description": "PSE payer full name", + "example": "Juan P\u00e9rez Garc\u00eda", "type": [ "string", "null" - ], - "format": "ip", - "example": "127.0.0.1" + ] }, - "latitude": { + "pse_payment_link": { + "description": "PSE payment link (derived from tracking_transaction.pse_instruction)", + "example": "https://pse.example.com/payment/abc123", + "type": [ + "string", + "null" + ] + }, + "pse_tax_id": { + "description": "PSE payer document number", + "example": "1234567890", + "type": [ + "string", + "null" + ] + }, + "receiver_amount": { + "description": "10.10 USDC", + "example": 1010, + "type": [ + "number", + "null" + ] + }, + "sender_amount": { + "description": "52.40 BRL needs to be sent in a pix transfer", + "example": 5240, "type": [ "number", "null" + ] + }, + "status": { + "description": "Payin general status", + "enum": [ + "processing", + "on_hold", + "failed", + "refunded", + "completed" ], - "minimum": -90, - "maximum": 90, - "description": "Optional geolocation latitude collected from the customer. Forwarded to AiPrise and SEON for fraud analysis.", - "example": 37.7749 + "example": "processing", + "type": "string" }, - "longitude": { + "token": { + "enum": [ + "USDC", + "USDT", + "USDB" + ], + "example": "USDC", + "type": "string" + }, + "total_fee_amount": { + "default": 0, + "description": "1.53 USDC", + "example": 1.53, "type": [ "number", "null" + ] + }, + "tracking_complete": { + "properties": { + "completed_at": { + "description": "Complete completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Complete step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "on_hold", + "type": "string" + }, + "transaction_hash": { + "description": "Complete transaction hash", + "example": "0x123...890", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "step" ], - "minimum": -180, - "maximum": 180, - "description": "Optional geolocation longitude collected from the customer. Forwarded to AiPrise and SEON for fraud analysis.", - "example": -122.4194 + "type": "object" }, - "image_url": { + "tracking_payment": { + "properties": { + "approved_risk_sources": { + "description": "Risk sources already approved by an analyst", + "example": [ + "seon_review" + ], + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "completed_at": { + "description": "Payment completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "provider_name": { + "description": "Payment provider name", + "example": "blockchain", + "type": [ + "string", + "null" + ] + }, + "review_context": { + "additionalProperties": {}, + "description": "Structured risk context for manual review", + "type": [ + "object", + "null" + ] + }, + "review_source": { + "description": "Risk source that sent this payin to manual review", + "example": "seon_review", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Payment step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "on_hold", + "type": "string" + } + }, + "required": [ + "step" + ], + "type": "object" + }, + "tracking_transaction": { + "properties": { + "completed_at": { + "description": "Payin transaction completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "description": { + "example": "Payment from John Doe Smith", + "type": [ + "string", + "null" + ] + }, + "end_to_end_id": { + "description": "BACEN Pix end-to-end transaction ID (govt Pix ID)", + "example": "E20018183202603311320vm6ALFpJpsS", + "type": [ + "string", + "null" + ] + }, + "external_id": { + "description": "Payin transaction external id", + "example": "12345678", + "type": [ + "string", + "null" + ] + }, + "provider_name": { + "description": "Payment provider name", + "enum": [ + "Nvio Pagos", + "Brex", + "Stark Bank", + "JPMorgan Chase", + "HSBC", + "Inter", + "JP Morgan Chase", + "Bitso", + "Citi", + "CFSB", + "Triple A Technologies", + "Portage Bank" + ], + "example": "HSBC", + "type": [ + "string", + "null" + ] + }, + "provider_transaction_id": { + "description": "Payment provider transaction id", + "example": "", + "type": [ + "string", + "null" + ] + }, + "pse_instruction": { + "properties": { + "bank_code": { + "description": "PSE payer bank code", + "example": "1007", + "type": [ + "string", + "null" + ] + }, + "document_type": { + "description": "PSE payer document type", + "enum": [ + "CC", + "NIT" + ], + "example": "CC", + "type": "string" + }, + "email": { + "description": "PSE payer email", + "example": "juan@example.com", + "type": "string" + }, + "fid": { + "description": "PSE funding identifier for webhook matching", + "example": "fid_abc123", + "type": "string" + }, + "full_name": { + "description": "PSE payer full name", + "example": "Juan P\u00e9rez Garc\u00eda", + "type": "string" + }, + "payment_link": { + "description": "PSE payment link URL", + "example": "https://pse.example.com/payment/abc123", + "type": "string" + }, + "phone": { + "description": "PSE payer phone number", + "example": "+573001234567", + "type": "string" + }, + "tax_id": { + "description": "PSE payer document number", + "example": "1234567890", + "type": "string" + } + }, + "required": [ + "payment_link", + "fid", + "full_name", + "tax_id", + "document_type", + "phone", + "email" + ], + "type": [ + "object", + "null" + ] + }, + "sender_account_number": { + "example": "1234567890", + "type": [ + "string", + "null" + ] + }, + "sender_bank_code": { + "example": "00416968", + "type": [ + "string", + "null" + ] + }, + "sender_bank_name": { + "example": "Bank of America", + "type": [ + "string", + "null" + ] + }, + "sender_name": { + "example": "John Doe Smith", + "type": [ + "string", + "null" + ] + }, + "sender_tax_id": { + "example": "123.456.789-10", + "type": [ + "string", + "null" + ] + }, + "status": { + "description": "Payin transaction status", + "enum": [ + "failed", + "completed" + ], + "example": "failed", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Payin transaction step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "processing", + "type": "string" + }, + "ted_instruction": { + "properties": { + "account_number": { + "example": "01011707084-8", + "type": "string" + }, + "account_type": { + "example": "checking", + "type": "string" + }, + "bank_code": { + "example": "665", + "type": "string" + }, + "bank_name": { + "example": "STARK BANK S.A.", + "type": "string" + }, + "beneficiary_name": { + "example": "Blind Pay, Inc.", + "type": "string" + }, + "branch_code": { + "example": "5340", + "type": "string" + }, + "tax_id": { + "example": "57.599.376/0001-81", + "type": "string" + } + }, + "required": [ + "beneficiary_name", + "tax_id", + "bank_code", + "bank_name", + "branch_code", + "account_number", + "account_type" + ], + "type": [ + "object", + "null" + ] + }, + "trace_number": { + "example": "1234567890", + "type": [ + "string", + "null" + ] + }, + "transaction_hash": { + "description": "Blockchain transaction hash", + "example": "0x123...890", + "type": [ + "string", + "null" + ] + }, + "transaction_reference": { + "example": "1234567890", + "type": [ + "string", + "null" + ] + }, + "transfers_instruction": { + "properties": { + "account": { + "description": "CVU/CBU/Alias account number", + "example": "0000003100012389237485", + "type": "string" + }, + "tax_id": { + "description": "CUIT/CUIL (normalized, digits only)", + "example": "20123456783", + "type": [ + "string", + "null" + ] + }, + "type": { + "description": "Account type (CVU, CBU, or ALIAS)", + "enum": [ + "CVU", + "CBU", + "ALIAS" + ], + "example": "CVU", + "type": "string" + } + }, + "required": [ + "account", + "type" + ], + "type": [ + "object", + "null" + ] + } + }, + "required": [ + "step" + ], + "type": "object" + }, + "transaction_fee_amount": { + "description": "Transaction fee in cents (percentage-based fee)", + "example": 100, "type": [ - "string", + "number", "null" + ] + }, + "type": { + "enum": [ + "individual", + "business" ], - "example": "https://example.com/image.png" + "example": "individual", + "type": "string" }, - "phone_number": { + "updated_at": { + "example": "2021-01-01T00:00:00Z", + "format": "date-time", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id", + "status", + "payin_quote_id", + "instance_id", + "customer_id", + "tracking_transaction", + "tracking_payment", + "tracking_complete", + "type", + "payment_method", + "sender_amount", + "receiver_amount", + "token", + "commercial_quotation", + "blindpay_quotation", + "currency", + "name", + "network" + ], + "type": "object" + }, + "PayinPartnerFeeWebhookOut": { + "properties": { + "billing_fee_amount": { + "description": "Billing fee in cents (charged at the end of the month)", + "example": 50, "type": [ - "string", + "number", "null" - ], - "example": "+13055555555" + ] }, - "proof_of_address_doc_type": { - "type": [ - "string", - "null" - ], - "enum": [ - "UTILITY_BILL", - "BANK_STATEMENT", - "RENTAL_AGREEMENT", - "TAX_DOCUMENT", - "GOVERNMENT_CORRESPONDENCE" + "blindpay_bank_details": { + "properties": { + "account_number": { + "default": "621327727210181", + "example": "621327727210181", + "type": "string" + }, + "account_type": { + "default": "Business checking", + "example": "Business checking", + "type": "string" + }, + "ach": { + "properties": { + "account_number": { + "example": "123456789", + "type": "string" + }, + "routing_number": { + "example": "123456789", + "type": "string" + } + }, + "required": [ + "routing_number", + "account_number" + ], + "type": [ + "object", + "null" + ] + }, + "beneficiary": { + "properties": { + "address_line_1": { + "default": "8 The Green, #19364", + "example": "8 The Green, #19364", + "type": "string" + }, + "address_line_2": { + "default": "Dover, DE 19901", + "example": "Dover, DE 19901", + "type": "string" + }, + "name": { + "default": "BlindPay, Inc.", + "example": "BlindPay, Inc.", + "type": "string" + } + }, + "type": "object" + }, + "receiving_bank": { + "properties": { + "address_line_1": { + "default": "1 Letterman Drive, Building A, Suite A4-700", + "example": "1 Letterman Drive, Building A, Suite A4-700", + "type": "string" + }, + "address_line_2": { + "default": "San Francisco, CA 94129", + "example": "San Francisco, CA 94129", + "type": "string" + }, + "name": { + "default": "CFSB", + "example": "CFSB", + "type": "string" + } + }, + "type": "object" + }, + "routing_number": { + "default": "121145349", + "example": "121145349", + "type": "string" + }, + "rtp": { + "properties": { + "account_number": { + "example": "123456789", + "type": "string" + }, + "routing_number": { + "example": "123456789", + "type": "string" + } + }, + "required": [ + "routing_number", + "account_number" + ], + "type": [ + "object", + "null" + ] + }, + "swift_account_number": { + "example": "GB50TCCL04140449730892", + "type": [ + "string", + "null" + ] + }, + "swift_bic_code": { + "default": "CHASUS33", + "example": "CHASUS33", + "type": [ + "string", + "null" + ] + }, + "swift_receiving_bank": { + "properties": { + "address_line_1": { + "example": "270 Park Ave", + "type": [ + "string", + "null" + ] + }, + "address_line_2": { + "example": "New York, NY, 10017-2070", + "type": [ + "string", + "null" + ] + }, + "name": { + "example": "JPMorgan Chase", + "type": [ + "string", + "null" + ] + } + }, + "type": [ + "object", + "null" + ] + }, + "wire": { + "properties": { + "account_number": { + "example": "123456789", + "type": "string" + }, + "routing_number": { + "example": "123456789", + "type": "string" + } + }, + "required": [ + "routing_number", + "account_number" + ], + "type": [ + "object", + "null" + ] + } + }, + "required": [ + "beneficiary", + "receiving_bank" ], - "example": "UTILITY_BILL" + "type": "object" }, - "proof_of_address_doc_file": { + "clabe": { + "description": "CLABE code", + "example": "014027000000000008", "type": [ "string", "null" - ], - "description": "Please upload one document that serve as proof of address, this needs to be the same physical address as the one provided above. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", - "example": "https://example.com/image.png" + ] }, - "first_name": { + "customer_id": { + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, "type": [ "string", "null" - ], - "example": "John" + ] }, - "last_name": { + "id": { + "example": "pi_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "memo_code": { + "description": "Memo code", + "example": "8K45GHBNT6BQ6462", "type": [ "string", "null" - ], - "example": "Doe" + ] }, - "date_of_birth": { - "anyOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "type": "string" - }, - { - "type": "null" - } - ], - "example": "1998-01-01T00:00:00Z" + "partner_fee": { + "default": 0, + "description": "Payin partner fee amount in cents", + "example": 25000, + "minimum": 0, + "type": "integer" }, - "id_doc_country": { - "type": [ - "string", - "null" - ], + "payment_method": { "enum": [ - "AF", - "AL", - "DZ", - "AS", - "AD", - "AO", - "AI", - "AQ", - "AG", - "AR", - "AM", - "AW", - "AU", - "AT", - "AZ", - "BS", - "BH", - "BD", - "BB", - "BY", - "BE", - "BZ", - "BJ", - "BM", - "BT", - "BO", - "BQ", - "BA", - "BW", - "BV", - "BR", - "IO", - "BN", - "BG", - "BF", - "BI", - "CV", - "KH", - "CM", - "CA", - "KY", - "CF", - "TD", - "CL", - "CN", - "CX", - "CC", - "CO", - "KM", - "CD", - "CG", - "CK", - "CR", - "HR", - "CU", - "CW", - "CY", - "CZ", - "CI", - "DK", - "DJ", - "DM", - "DO", - "EC", - "EG", - "SV", - "GQ", - "ER", - "EE", - "SZ", - "ET", - "FK", - "FO", - "FJ", - "FI", - "FR", - "GF", - "PF", - "TF", - "GA", - "GM", - "GE", - "DE", - "GH", - "GI", - "GR", - "GL", - "GD", - "GP", - "GU", - "GT", - "GG", - "GN", - "GW", - "GY", - "HT", - "HM", - "VA", - "HN", - "HK", - "HU", - "IS", - "IN", - "ID", - "IR", - "IQ", - "IE", - "IM", - "IL", - "IT", - "JM", - "JP", - "JE", - "JO", - "KZ", - "KE", - "KI", - "KP", - "KR", - "KW", - "KG", - "LA", - "LV", - "LB", - "LS", - "LR", - "LY", - "LI", - "LT", - "LU", - "MO", - "MG", - "MW", - "MY", - "MV", - "ML", - "MT", - "MH", - "MQ", - "MR", - "MU", - "YT", - "MX", - "FM", - "MD", - "MC", - "MN", - "ME", - "MS", - "MA", - "MZ", - "MM", - "NA", - "NR", - "NP", - "NL", - "NC", - "NZ", - "NI", - "NE", - "NG", - "NU", - "NF", - "MP", - "NO", - "OM", - "PK", - "PW", - "PS", - "PA", - "PG", - "PY", - "PE", - "PH", - "PN", - "PL", - "PT", - "PR", - "QA", - "MK", - "RO", - "RU", - "RW", - "RE", - "BL", - "SH", - "KN", - "LC", - "MF", - "PM", - "VC", - "WS", - "SM", - "ST", - "SA", - "SN", - "RS", - "SC", - "SL", - "SG", - "SX", - "SK", - "SI", - "SB", - "SO", - "ZA", - "GS", - "SS", - "ES", - "LK", - "SD", - "SR", - "SJ", - "SE", - "CH", - "SY", - "TW", - "TJ", - "TZ", - "TH", - "TL", - "TG", - "TK", - "TO", - "TT", - "TN", - "TR", - "TM", - "TC", - "TV", - "UG", - "UA", - "AE", - "GB", - "UM", - "US", - "UY", - "UZ", - "VU", - "VE", - "VN", - "VG", - "VI", - "WF", - "EH", - "YE", - "ZM", - "ZW", - "AX" + "ach", + "wire", + "pix", + "ted", + "spei", + "transfers", + "pse", + "international_swift", + "rtp" ], - "example": "BR" - }, - "id_doc_type": { + "example": "pix", "type": [ "string", "null" - ], - "enum": [ - "PASSPORT", - "ID_CARD", - "DRIVERS" - ], - "example": "PASSPORT" + ] }, - "id_doc_front_file": { + "pix_code": { + "description": "PIX code", + "example": "00020101021226790014br.gov.bcb.pix2557brcode.starkinfra.com/v2/bcf07f6c4110454e9fd6f120bab13e835204000053039865802BR5915Blind Pay, Inc.6010Vila Velha62070503***6304BCAB", "type": [ "string", "null" - ], - "description": "Only image files are accepted (.jpg, .jpeg, .png)", - "example": "https://example.com/image.png" + ] }, - "id_doc_back_file": { + "receiver_amount": { + "description": "10.10 USDC", + "example": 1010, "type": [ - "string", + "number", "null" - ], - "description": "Only image files are accepted (.jpg, .jpeg, .png)", - "example": "https://example.com/image.png" + ] }, - "legal_name": { + "sender_amount": { + "description": "52.40 BRL needs to be sent in a pix transfer", + "example": 5240, "type": [ - "string", + "number", "null" - ], - "example": "Company Name Inc." + ] }, - "alternate_name": { - "type": [ - "string", - "null" + "status": { + "description": "Payin general status", + "enum": [ + "processing", + "on_hold", + "failed", + "refunded", + "completed" ], - "example": "Company Name Inc." + "example": "processing", + "type": "string" }, - "formation_date": { - "anyOf": [ - { - "type": "string", - "format": "date-time" + "tracking_complete": { + "properties": { + "completed_at": { + "description": "Complete completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] }, - { + "step": { + "description": "Complete step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "on_hold", "type": "string" }, - { - "type": "null" + "transaction_hash": { + "description": "Complete transaction hash", + "example": "0x123...890", + "type": [ + "string", + "null" + ] } + }, + "required": [ + "step" ], - "example": "1998-01-01T00:00:00Z", - "format": "date-time" + "type": "object" }, - "website": { - "type": [ - "string", - "null" + "tracking_payment": { + "properties": { + "approved_risk_sources": { + "description": "Risk sources already approved by an analyst", + "example": [ + "seon_review" + ], + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "completed_at": { + "description": "Payment completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "provider_name": { + "description": "Payment provider name", + "example": "blockchain", + "type": [ + "string", + "null" + ] + }, + "review_context": { + "additionalProperties": {}, + "description": "Structured risk context for manual review", + "type": [ + "object", + "null" + ] + }, + "review_source": { + "description": "Risk source that sent this payin to manual review", + "example": "seon_review", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Payment step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "on_hold", + "type": "string" + } + }, + "required": [ + "step" ], - "format": "uri", - "example": "https://example.com" + "type": "object" }, - "owners": { - "type": [ - "array", - "null" - ], - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "ub_000000000000" - }, - "instance_id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "in_000000000000" - }, - "customer_id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "re_000000000000" - }, - "role": { - "type": "string", - "enum": [ - "beneficial_controlling", - "beneficial_owner", - "controlling_person" - ], - "description": "A beneficial owner is someone who directly or indirectly owns 25% or more of your business. A controlling person is someone with significant responsibility to control, manage or direct your business (typically a CEO, senior executive officer or equivalent).", - "example": "beneficial_owner" - }, - "first_name": { - "type": "string", - "minLength": 1, - "example": "John" - }, - "last_name": { - "type": "string", - "minLength": 1, - "example": "Doe" - }, - "date_of_birth": { - "anyOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "type": "string" - } - ], - "example": "1998-01-01T00:00:00Z" - }, - "tax_id": { - "type": [ - "string", - "null" - ], - "example": "536804398" - }, - "address_line_1": { - "type": "string", - "example": "738 Plain St" - }, - "address_line_2": { - "type": [ - "string", - "null" - ], - "example": "Building 22" - }, - "city": { - "type": "string", - "example": "Marshfield" - }, - "state_province_region": { - "type": "string", - "example": "MA" + "tracking_transaction": { + "properties": { + "completed_at": { + "description": "Payin transaction completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "description": { + "example": "Payment from John Doe Smith", + "type": [ + "string", + "null" + ] + }, + "end_to_end_id": { + "description": "BACEN Pix end-to-end transaction ID (govt Pix ID)", + "example": "E20018183202603311320vm6ALFpJpsS", + "type": [ + "string", + "null" + ] + }, + "external_id": { + "description": "Payin transaction external id", + "example": "12345678", + "type": [ + "string", + "null" + ] + }, + "provider_name": { + "description": "Payment provider name", + "enum": [ + "Nvio Pagos", + "Brex", + "Stark Bank", + "JPMorgan Chase", + "HSBC", + "Inter", + "JP Morgan Chase", + "Bitso", + "Citi", + "CFSB", + "Triple A Technologies", + "Portage Bank" + ], + "example": "HSBC", + "type": [ + "string", + "null" + ] + }, + "provider_transaction_id": { + "description": "Payment provider transaction id", + "example": "", + "type": [ + "string", + "null" + ] + }, + "pse_instruction": { + "properties": { + "bank_code": { + "description": "PSE payer bank code", + "example": "1007", + "type": [ + "string", + "null" + ] + }, + "document_type": { + "description": "PSE payer document type", + "enum": [ + "CC", + "NIT" + ], + "example": "CC", + "type": "string" + }, + "email": { + "description": "PSE payer email", + "example": "juan@example.com", + "type": "string" + }, + "fid": { + "description": "PSE funding identifier for webhook matching", + "example": "fid_abc123", + "type": "string" + }, + "full_name": { + "description": "PSE payer full name", + "example": "Juan P\u00e9rez Garc\u00eda", + "type": "string" + }, + "payment_link": { + "description": "PSE payment link URL", + "example": "https://pse.example.com/payment/abc123", + "type": "string" + }, + "phone": { + "description": "PSE payer phone number", + "example": "+573001234567", + "type": "string" + }, + "tax_id": { + "description": "PSE payer document number", + "example": "1234567890", + "type": "string" + } }, - "country": { - "type": "string", - "enum": [ - "AF", - "AL", - "DZ", - "AS", - "AD", - "AO", - "AI", - "AQ", - "AG", - "AR", - "AM", - "AW", - "AU", - "AT", - "AZ", - "BS", - "BH", - "BD", - "BB", - "BY", - "BE", - "BZ", - "BJ", - "BM", - "BT", - "BO", - "BQ", - "BA", - "BW", - "BV", - "BR", - "IO", - "BN", - "BG", - "BF", - "BI", - "CV", - "KH", - "CM", - "CA", - "KY", - "CF", - "TD", - "CL", - "CN", - "CX", - "CC", - "CO", - "KM", - "CD", - "CG", - "CK", - "CR", - "HR", - "CU", - "CW", - "CY", - "CZ", - "CI", - "DK", - "DJ", - "DM", - "DO", - "EC", - "EG", - "SV", - "GQ", - "ER", - "EE", - "SZ", - "ET", - "FK", - "FO", - "FJ", - "FI", - "FR", - "GF", - "PF", - "TF", - "GA", - "GM", - "GE", - "DE", - "GH", - "GI", - "GR", - "GL", - "GD", - "GP", - "GU", - "GT", - "GG", - "GN", - "GW", - "GY", - "HT", - "HM", - "VA", - "HN", - "HK", - "HU", - "IS", - "IN", - "ID", - "IR", - "IQ", - "IE", - "IM", - "IL", - "IT", - "JM", - "JP", - "JE", - "JO", - "KZ", - "KE", - "KI", - "KP", - "KR", - "KW", - "KG", - "LA", - "LV", - "LB", - "LS", - "LR", - "LY", - "LI", - "LT", - "LU", - "MO", - "MG", - "MW", - "MY", - "MV", - "ML", - "MT", - "MH", - "MQ", - "MR", - "MU", - "YT", - "MX", - "FM", - "MD", - "MC", - "MN", - "ME", - "MS", - "MA", - "MZ", - "MM", - "NA", - "NR", - "NP", - "NL", - "NC", - "NZ", - "NI", - "NE", - "NG", - "NU", - "NF", - "MP", - "NO", - "OM", - "PK", - "PW", - "PS", - "PA", - "PG", - "PY", - "PE", - "PH", - "PN", - "PL", - "PT", - "PR", - "QA", - "MK", - "RO", - "RU", - "RW", - "RE", - "BL", - "SH", - "KN", - "LC", - "MF", - "PM", - "VC", - "WS", - "SM", - "ST", - "SA", - "SN", - "RS", - "SC", - "SL", - "SG", - "SX", - "SK", - "SI", - "SB", - "SO", - "ZA", - "GS", - "SS", - "ES", - "LK", - "SD", - "SR", - "SJ", - "SE", - "CH", - "SY", - "TW", - "TJ", - "TZ", - "TH", - "TL", - "TG", - "TK", - "TO", - "TT", - "TN", - "TR", - "TM", - "TC", - "TV", - "UG", - "UA", - "AE", - "GB", - "UM", - "US", - "UY", - "UZ", - "VU", - "VE", - "VN", - "VG", - "VI", - "WF", - "EH", - "YE", - "ZM", - "ZW", - "AX" - ], - "example": "US" + "required": [ + "payment_link", + "fid", + "full_name", + "tax_id", + "document_type", + "phone", + "email" + ], + "type": [ + "object", + "null" + ] + }, + "sender_account_number": { + "example": "1234567890", + "type": [ + "string", + "null" + ] + }, + "sender_bank_code": { + "example": "00416968", + "type": [ + "string", + "null" + ] + }, + "sender_bank_name": { + "example": "Bank of America", + "type": [ + "string", + "null" + ] + }, + "sender_name": { + "example": "John Doe Smith", + "type": [ + "string", + "null" + ] + }, + "sender_tax_id": { + "example": "123.456.789-10", + "type": [ + "string", + "null" + ] + }, + "status": { + "description": "Payin transaction status", + "enum": [ + "failed", + "completed" + ], + "example": "failed", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Payin transaction step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "processing", + "type": "string" + }, + "ted_instruction": { + "properties": { + "account_number": { + "example": "01011707084-8", + "type": "string" + }, + "account_type": { + "example": "checking", + "type": "string" + }, + "bank_code": { + "example": "665", + "type": "string" + }, + "bank_name": { + "example": "STARK BANK S.A.", + "type": "string" + }, + "beneficiary_name": { + "example": "Blind Pay, Inc.", + "type": "string" + }, + "branch_code": { + "example": "5340", + "type": "string" + }, + "tax_id": { + "example": "57.599.376/0001-81", + "type": "string" + } }, - "postal_code": { - "type": "string", - "example": "02050" + "required": [ + "beneficiary_name", + "tax_id", + "bank_code", + "bank_name", + "branch_code", + "account_number", + "account_type" + ], + "type": [ + "object", + "null" + ] + }, + "trace_number": { + "example": "1234567890", + "type": [ + "string", + "null" + ] + }, + "transaction_hash": { + "description": "Blockchain transaction hash", + "example": "0x123...890", + "type": [ + "string", + "null" + ] + }, + "transaction_reference": { + "example": "1234567890", + "type": [ + "string", + "null" + ] + }, + "transfers_instruction": { + "properties": { + "account": { + "description": "CVU/CBU/Alias account number", + "example": "0000003100012389237485", + "type": "string" + }, + "tax_id": { + "description": "CUIT/CUIL (normalized, digits only)", + "example": "20123456783", + "type": [ + "string", + "null" + ] + }, + "type": { + "description": "Account type (CVU, CBU, or ALIAS)", + "enum": [ + "CVU", + "CBU", + "ALIAS" + ], + "example": "CVU", + "type": "string" + } }, - "id_doc_country": { - "type": "string", - "enum": [ - "AF", - "AL", - "DZ", - "AS", - "AD", - "AO", - "AI", - "AQ", - "AG", - "AR", - "AM", - "AW", - "AU", - "AT", - "AZ", - "BS", - "BH", - "BD", - "BB", - "BY", - "BE", - "BZ", - "BJ", - "BM", - "BT", - "BO", - "BQ", - "BA", - "BW", - "BV", - "BR", - "IO", - "BN", - "BG", - "BF", - "BI", - "CV", - "KH", - "CM", - "CA", - "KY", - "CF", - "TD", - "CL", - "CN", - "CX", - "CC", - "CO", - "KM", - "CD", - "CG", - "CK", - "CR", - "HR", - "CU", - "CW", - "CY", - "CZ", - "CI", - "DK", - "DJ", - "DM", - "DO", - "EC", - "EG", - "SV", - "GQ", - "ER", - "EE", - "SZ", - "ET", - "FK", - "FO", - "FJ", - "FI", - "FR", - "GF", - "PF", - "TF", - "GA", - "GM", - "GE", - "DE", - "GH", - "GI", - "GR", - "GL", - "GD", - "GP", - "GU", - "GT", - "GG", - "GN", - "GW", - "GY", - "HT", - "HM", - "VA", - "HN", - "HK", - "HU", - "IS", - "IN", - "ID", - "IR", - "IQ", - "IE", - "IM", - "IL", - "IT", - "JM", - "JP", - "JE", - "JO", - "KZ", - "KE", - "KI", - "KP", - "KR", - "KW", - "KG", - "LA", - "LV", - "LB", - "LS", - "LR", - "LY", - "LI", - "LT", - "LU", - "MO", - "MG", - "MW", - "MY", - "MV", - "ML", - "MT", - "MH", - "MQ", - "MR", - "MU", - "YT", - "MX", - "FM", - "MD", - "MC", - "MN", - "ME", - "MS", - "MA", - "MZ", - "MM", - "NA", - "NR", - "NP", - "NL", - "NC", - "NZ", - "NI", - "NE", - "NG", - "NU", - "NF", - "MP", - "NO", - "OM", - "PK", - "PW", - "PS", - "PA", - "PG", - "PY", - "PE", - "PH", - "PN", - "PL", - "PT", - "PR", - "QA", - "MK", - "RO", - "RU", - "RW", - "RE", - "BL", - "SH", - "KN", - "LC", - "MF", - "PM", - "VC", - "WS", - "SM", - "ST", - "SA", - "SN", - "RS", - "SC", - "SL", - "SG", - "SX", - "SK", - "SI", - "SB", - "SO", - "ZA", - "GS", - "SS", - "ES", - "LK", - "SD", - "SR", - "SJ", - "SE", - "CH", - "SY", - "TW", - "TJ", - "TZ", - "TH", - "TL", - "TG", - "TK", - "TO", - "TT", - "TN", - "TR", - "TM", - "TC", - "TV", - "UG", - "UA", - "AE", - "GB", - "UM", - "US", - "UY", - "UZ", - "VU", - "VE", - "VN", - "VG", - "VI", - "WF", - "EH", - "YE", - "ZM", - "ZW", - "AX" - ], - "example": "BR" + "required": [ + "account", + "type" + ], + "type": [ + "object", + "null" + ] + } + }, + "required": [ + "step" + ], + "type": "object" + }, + "transaction_fee_amount": { + "description": "Transaction fee in cents (percentage-based fee)", + "example": 100, + "type": [ + "number", + "null" + ] + }, + "webhook_event": { + "enum": [ + "payin.partnerFee" + ], + "type": "string" + } + }, + "required": [ + "webhook_event", + "id", + "status", + "tracking_complete", + "tracking_payment", + "tracking_transaction", + "blindpay_bank_details" + ], + "type": "object" + }, + "PayinUpdateWebhookOut": { + "properties": { + "billing_fee_amount": { + "description": "Billing fee in cents (charged at the end of the month)", + "example": 50, + "type": [ + "number", + "null" + ] + }, + "blindpay_bank_details": { + "properties": { + "account_number": { + "default": "621327727210181", + "example": "621327727210181", + "type": "string" + }, + "account_type": { + "default": "Business checking", + "example": "Business checking", + "type": "string" + }, + "ach": { + "properties": { + "account_number": { + "example": "123456789", + "type": "string" + }, + "routing_number": { + "example": "123456789", + "type": "string" + } + }, + "required": [ + "routing_number", + "account_number" + ], + "type": [ + "object", + "null" + ] + }, + "beneficiary": { + "properties": { + "address_line_1": { + "default": "8 The Green, #19364", + "example": "8 The Green, #19364", + "type": "string" + }, + "address_line_2": { + "default": "Dover, DE 19901", + "example": "Dover, DE 19901", + "type": "string" + }, + "name": { + "default": "BlindPay, Inc.", + "example": "BlindPay, Inc.", + "type": "string" + } + }, + "type": "object" + }, + "receiving_bank": { + "properties": { + "address_line_1": { + "default": "1 Letterman Drive, Building A, Suite A4-700", + "example": "1 Letterman Drive, Building A, Suite A4-700", + "type": "string" + }, + "address_line_2": { + "default": "San Francisco, CA 94129", + "example": "San Francisco, CA 94129", + "type": "string" + }, + "name": { + "default": "CFSB", + "example": "CFSB", + "type": "string" + } + }, + "type": "object" + }, + "routing_number": { + "default": "121145349", + "example": "121145349", + "type": "string" + }, + "rtp": { + "properties": { + "account_number": { + "example": "123456789", + "type": "string" + }, + "routing_number": { + "example": "123456789", + "type": "string" + } + }, + "required": [ + "routing_number", + "account_number" + ], + "type": [ + "object", + "null" + ] + }, + "swift_account_number": { + "example": "GB50TCCL04140449730892", + "type": [ + "string", + "null" + ] + }, + "swift_bic_code": { + "default": "CHASUS33", + "example": "CHASUS33", + "type": [ + "string", + "null" + ] + }, + "swift_receiving_bank": { + "properties": { + "address_line_1": { + "example": "270 Park Ave", + "type": [ + "string", + "null" + ] + }, + "address_line_2": { + "example": "New York, NY, 10017-2070", + "type": [ + "string", + "null" + ] + }, + "name": { + "example": "JPMorgan Chase", + "type": [ + "string", + "null" + ] + } }, - "id_doc_type": { - "type": "string", - "enum": [ - "PASSPORT", - "ID_CARD", - "DRIVERS" - ], - "example": "PASSPORT" + "type": [ + "object", + "null" + ] + }, + "wire": { + "properties": { + "account_number": { + "example": "123456789", + "type": "string" + }, + "routing_number": { + "example": "123456789", + "type": "string" + } }, - "id_doc_front_file": { - "type": [ - "string", - "null" - ], - "description": "Only image files are accepted (.jpg, .jpeg, .png)" + "required": [ + "routing_number", + "account_number" + ], + "type": [ + "object", + "null" + ] + } + }, + "required": [ + "beneficiary", + "receiving_bank" + ], + "type": "object" + }, + "clabe": { + "description": "CLABE code", + "example": "014027000000000008", + "type": [ + "string", + "null" + ] + }, + "customer_id": { + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": [ + "string", + "null" + ] + }, + "id": { + "example": "pi_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "memo_code": { + "description": "Memo code", + "example": "8K45GHBNT6BQ6462", + "type": [ + "string", + "null" + ] + }, + "partner_fee": { + "default": 0, + "description": "Payin partner fee amount in cents", + "example": 25000, + "minimum": 0, + "type": "integer" + }, + "payment_method": { + "enum": [ + "ach", + "wire", + "pix", + "ted", + "spei", + "transfers", + "pse", + "international_swift", + "rtp" + ], + "example": "pix", + "type": [ + "string", + "null" + ] + }, + "pix_code": { + "description": "PIX code", + "example": "00020101021226790014br.gov.bcb.pix2557brcode.starkinfra.com/v2/bcf07f6c4110454e9fd6f120bab13e835204000053039865802BR5915Blind Pay, Inc.6010Vila Velha62070503***6304BCAB", + "type": [ + "string", + "null" + ] + }, + "receiver_amount": { + "description": "10.10 USDC", + "example": 1010, + "type": [ + "number", + "null" + ] + }, + "sender_amount": { + "description": "52.40 BRL needs to be sent in a pix transfer", + "example": 5240, + "type": [ + "number", + "null" + ] + }, + "status": { + "description": "Payin general status", + "enum": [ + "processing", + "on_hold", + "failed", + "refunded", + "completed" + ], + "example": "processing", + "type": "string" + }, + "tracking_complete": { + "properties": { + "completed_at": { + "description": "Complete completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Complete step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "on_hold", + "type": "string" + }, + "transaction_hash": { + "description": "Complete transaction hash", + "example": "0x123...890", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "step" + ], + "type": "object" + }, + "tracking_payment": { + "properties": { + "approved_risk_sources": { + "description": "Risk sources already approved by an analyst", + "example": [ + "seon_review" + ], + "items": { + "type": "string" }, - "id_doc_back_file": { - "type": [ - "string", - "null" - ], - "description": "Only image files are accepted (.jpg, .jpeg, .png)" + "type": [ + "array", + "null" + ] + }, + "completed_at": { + "description": "Payment completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "provider_name": { + "description": "Payment provider name", + "example": "blockchain", + "type": [ + "string", + "null" + ] + }, + "review_context": { + "additionalProperties": {}, + "description": "Structured risk context for manual review", + "type": [ + "object", + "null" + ] + }, + "review_source": { + "description": "Risk source that sent this payin to manual review", + "example": "seon_review", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Payment step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "on_hold", + "type": "string" + } + }, + "required": [ + "step" + ], + "type": "object" + }, + "tracking_transaction": { + "properties": { + "completed_at": { + "description": "Payin transaction completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "description": { + "example": "Payment from John Doe Smith", + "type": [ + "string", + "null" + ] + }, + "end_to_end_id": { + "description": "BACEN Pix end-to-end transaction ID (govt Pix ID)", + "example": "E20018183202603311320vm6ALFpJpsS", + "type": [ + "string", + "null" + ] + }, + "external_id": { + "description": "Payin transaction external id", + "example": "12345678", + "type": [ + "string", + "null" + ] + }, + "provider_name": { + "description": "Payment provider name", + "enum": [ + "Nvio Pagos", + "Brex", + "Stark Bank", + "JPMorgan Chase", + "HSBC", + "Inter", + "JP Morgan Chase", + "Bitso", + "Citi", + "CFSB", + "Triple A Technologies", + "Portage Bank" + ], + "example": "HSBC", + "type": [ + "string", + "null" + ] + }, + "provider_transaction_id": { + "description": "Payment provider transaction id", + "example": "", + "type": [ + "string", + "null" + ] + }, + "pse_instruction": { + "properties": { + "bank_code": { + "description": "PSE payer bank code", + "example": "1007", + "type": [ + "string", + "null" + ] + }, + "document_type": { + "description": "PSE payer document type", + "enum": [ + "CC", + "NIT" + ], + "example": "CC", + "type": "string" + }, + "email": { + "description": "PSE payer email", + "example": "juan@example.com", + "type": "string" + }, + "fid": { + "description": "PSE funding identifier for webhook matching", + "example": "fid_abc123", + "type": "string" + }, + "full_name": { + "description": "PSE payer full name", + "example": "Juan P\u00e9rez Garc\u00eda", + "type": "string" + }, + "payment_link": { + "description": "PSE payment link URL", + "example": "https://pse.example.com/payment/abc123", + "type": "string" + }, + "phone": { + "description": "PSE payer phone number", + "example": "+573001234567", + "type": "string" + }, + "tax_id": { + "description": "PSE payer document number", + "example": "1234567890", + "type": "string" + } }, - "proof_of_address_doc_type": { - "type": [ - "string", - "null" - ], - "enum": [ - "UTILITY_BILL", - "BANK_STATEMENT", - "RENTAL_AGREEMENT", - "TAX_DOCUMENT", - "GOVERNMENT_CORRESPONDENCE" - ], - "example": "UTILITY_BILL" + "required": [ + "payment_link", + "fid", + "full_name", + "tax_id", + "document_type", + "phone", + "email" + ], + "type": [ + "object", + "null" + ] + }, + "sender_account_number": { + "example": "1234567890", + "type": [ + "string", + "null" + ] + }, + "sender_bank_code": { + "example": "00416968", + "type": [ + "string", + "null" + ] + }, + "sender_bank_name": { + "example": "Bank of America", + "type": [ + "string", + "null" + ] + }, + "sender_name": { + "example": "John Doe Smith", + "type": [ + "string", + "null" + ] + }, + "sender_tax_id": { + "example": "123.456.789-10", + "type": [ + "string", + "null" + ] + }, + "status": { + "description": "Payin transaction status", + "enum": [ + "failed", + "completed" + ], + "example": "failed", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Payin transaction step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "processing", + "type": "string" + }, + "ted_instruction": { + "properties": { + "account_number": { + "example": "01011707084-8", + "type": "string" + }, + "account_type": { + "example": "checking", + "type": "string" + }, + "bank_code": { + "example": "665", + "type": "string" + }, + "bank_name": { + "example": "STARK BANK S.A.", + "type": "string" + }, + "beneficiary_name": { + "example": "Blind Pay, Inc.", + "type": "string" + }, + "branch_code": { + "example": "5340", + "type": "string" + }, + "tax_id": { + "example": "57.599.376/0001-81", + "type": "string" + } + }, + "required": [ + "beneficiary_name", + "tax_id", + "bank_code", + "bank_name", + "branch_code", + "account_number", + "account_type" + ], + "type": [ + "object", + "null" + ] + }, + "trace_number": { + "example": "1234567890", + "type": [ + "string", + "null" + ] + }, + "transaction_hash": { + "description": "Blockchain transaction hash", + "example": "0x123...890", + "type": [ + "string", + "null" + ] + }, + "transaction_reference": { + "example": "1234567890", + "type": [ + "string", + "null" + ] + }, + "transfers_instruction": { + "properties": { + "account": { + "description": "CVU/CBU/Alias account number", + "example": "0000003100012389237485", + "type": "string" + }, + "tax_id": { + "description": "CUIT/CUIL (normalized, digits only)", + "example": "20123456783", + "type": [ + "string", + "null" + ] + }, + "type": { + "description": "Account type (CVU, CBU, or ALIAS)", + "enum": [ + "CVU", + "CBU", + "ALIAS" + ], + "example": "CVU", + "type": "string" + } + }, + "required": [ + "account", + "type" + ], + "type": [ + "object", + "null" + ] + } + }, + "required": [ + "step" + ], + "type": "object" + }, + "transaction_fee_amount": { + "description": "Transaction fee in cents (percentage-based fee)", + "example": 100, + "type": [ + "number", + "null" + ] + }, + "webhook_event": { + "enum": [ + "payin.update" + ], + "type": "string" + } + }, + "required": [ + "webhook_event", + "id", + "status", + "tracking_complete", + "tracking_payment", + "tracking_transaction", + "blindpay_bank_details" + ], + "type": "object" + }, + "PaymentMethodSchemaOut": { + "properties": { + "account_type": { + "description": "Bank account type: checking or savings", + "example": "checking", + "type": [ + "string", + "null" + ] + }, + "bank_name": { + "description": "Bank name for us_bank_account type", + "example": "Chase", + "type": [ + "string", + "null" + ] + }, + "brand": { + "description": "Card brand (visa, mastercard, amex, etc)", + "example": "visa", + "type": [ + "string", + "null" + ] + }, + "created_at": { + "description": "ISO timestamp when payment method was added", + "example": "2024-12-27T00:00:00.000Z", + "type": [ + "string", + "null" + ] + }, + "exp_month": { + "description": "Card expiration month (1-12)", + "example": 12, + "type": [ + "number", + "null" + ] + }, + "exp_year": { + "description": "Card expiration year", + "example": 2025, + "type": [ + "number", + "null" + ] + }, + "last4": { + "description": "Last 4 digits of card number or bank account", + "example": "4242", + "type": [ + "string", + "null" + ] + }, + "type": { + "description": "Payment method type: card or us_bank_account", + "enum": [ + "card", + "us_bank_account" + ], + "example": "card", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "type", + "brand", + "last4", + "exp_month", + "exp_year", + "bank_name", + "account_type", + "created_at" + ], + "type": "object" + }, + "PaymentRoute": { + "description": "Per-instance USD payout rail override. Maps a bank rail to a PSP (zenus | veem | infinitus) or to \"blocked\" to disable the rail. Absent rails fall back to default routing.", + "example": { + "ach": "zenus", + "international_swift": "zenus", + "rtp": "blocked", + "wire": "zenus" + }, + "properties": { + "ach": { + "enum": [ + "zenus", + "veem", + "infinitus_portage", + "blocked" + ], + "type": "string" + }, + "international_swift": { + "enum": [ + "zenus", + "veem", + "infinitus_portage", + "blocked" + ], + "type": "string" + }, + "rtp": { + "enum": [ + "zenus", + "veem", + "infinitus_portage", + "blocked" + ], + "type": "string" + }, + "wire": { + "enum": [ + "zenus", + "veem", + "infinitus_portage", + "blocked" + ], + "type": "string" + } + }, + "type": [ + "object", + "null" + ] + }, + "PayoutCompleteWebhookOut": { + "properties": { + "bank_account_id": { + "example": "ba_000000000000", + "maxLength": 15, + "minLength": 15, + "type": [ + "string", + "null" + ] + }, + "billing_fee_amount": { + "description": "Billing fee in cents (charged via invoice at the end of the month)", + "example": 50, + "type": [ + "number", + "null" + ] + }, + "customer_id": { + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": [ + "string", + "null" + ] + }, + "id": { + "example": "pa_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "offramp_wallet_id": { + "example": "ow_000000000000", + "maxLength": 15, + "minLength": 15, + "type": [ + "string", + "null" + ] + }, + "partner_fee": { + "default": 0, + "description": "Payout partner fee amount in cents (can be negative for rebates)", + "example": -25000, + "minimum": 0, + "type": "integer" + }, + "sender_wallet_address": { + "description": "Payout wallet address", + "example": "0x123...890", + "type": "string" + }, + "status": { + "description": "Payout general status", + "enum": [ + "processing", + "failed", + "refunded", + "completed", + "on_hold" + ], + "example": "processing", + "type": "string" + }, + "tracking_complete": { + "properties": { + "completed_at": { + "description": "Complete completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "provider_transaction_id": { + "description": "Provider-side handle for the refund transaction (e.g. Circle transaction id)", + "example": "67c12eae-b7bc-31cc-a5ef-623dcea82346", + "type": [ + "string", + "null" + ] + }, + "refund_reason": { + "description": "Reason for refund when tokens are returned to sender", + "example": "fiat_payment_failed", + "type": [ + "string", + "null" + ] + }, + "status": { + "description": "Complete status", + "enum": [ + "tokens_refunded", + "paid" + ], + "example": "tokens_refunded", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Complete step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "on_hold", + "type": "string" + }, + "transaction_hash": { + "description": "Complete transaction hash", + "example": "0x123...890", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "step" + ], + "type": "object" + }, + "tracking_documents": { + "properties": { + "completed_at": { + "description": "Documents completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "reviewed_by": { + "description": "Reviewer email/name", + "example": "compliance@example.com", + "type": [ + "string", + "null" + ] + }, + "status": { + "description": "Documents status", + "enum": [ + "waiting_documents", + "compliance_reviewing" + ], + "example": "waiting_documents", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Documents step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "processing", + "type": "string" + } + }, + "required": [ + "step" + ], + "type": [ + "object", + "null" + ] + }, + "tracking_liquidity": { + "properties": { + "completed_at": { + "description": "Payout transaction completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "estimated_time_of_arrival": { + "description": "Estimated time of arrival", + "enum": [ + "5_min", + "5_30_min", + "30_min", + "2_hours", + "1_business_day", + "2_business_days", + "5_business_days" + ], + "example": "1_business_day", + "type": [ + "string", + "null" + ] + }, + "provider_status": { + "description": "Payment provider status", + "enum": [ + "deposited", + "converted", + "withdrawn" + ], + "example": "deposited", + "type": [ + "string", + "null" + ] + }, + "provider_transaction_id": { + "description": "Payment provider transaction id", + "example": "0x123...890", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Payout liquidity step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "processing", + "type": "string" + } + }, + "required": [ + "step" + ], + "type": [ + "object", + "null" + ] + }, + "tracking_payment": { + "properties": { + "coelsa_id": { + "description": "COELSA transaction reference ID for ARS transfers (Argentine national banking system)", + "example": "1LMP68NKV46DRDYK2R7OEV", + "type": [ + "string", + "null" + ] + }, + "completed_at": { + "description": "Payment completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "end_to_end_id": { + "description": "BACEN Pix end-to-end transaction ID (govt Pix ID)", + "example": "E20018183202603311320vm6ALFpJpsS", + "type": [ + "string", + "null" + ] + }, + "estimated_time_of_arrival": { + "description": "Estimated time of arrival", + "enum": [ + "5_min", + "5_30_min", + "30_min", + "2_hours", + "1_business_day", + "2_business_days", + "5_business_days" + ], + "example": "5_min", + "type": [ + "string", + "null" + ] + }, + "provider_clearing_system": { + "description": "Clearing system that processed the payment (e.g. FED, CHIPS, ACH, SWIFT).", + "example": "FED", + "maxLength": 40, + "type": [ + "string", + "null" + ] + }, + "provider_error_reason": { + "description": "Provider error reason when payment fails (e.g. invalid_key, wrong_parameters)", + "example": "invalid_key", + "type": [ + "string", + "null" + ] + }, + "provider_imad": { + "description": "Fed Input Message Accountability Data (IMAD). Domestic Fedwire payments only; null on ACH and SWIFT.", + "example": "20260526MMQFMP2M008120", + "maxLength": 120, + "type": [ + "string", + "null" + ] + }, + "provider_integration": { + "description": "Machine-readable integration that executed the fiat leg. Unlike provider_name (a client-facing bank label), this uniquely identifies the integration \u2014 e.g. zenus vs checkbook, which share the \"JPMorgan Chase\" label.", + "enum": [ + "veem", + "zenus", + "checkbook", + "onemoney", + "bitso", + "starkbank", + "triplea", + "infinitus" + ], + "example": "zenus", + "type": [ + "string", + "null" + ] + }, + "provider_name": { + "description": "Payment provider name", + "enum": [ + "Nvio Pagos", + "Brex", + "Stark Bank", + "JPMorgan Chase", + "HSBC", + "Inter", + "JP Morgan Chase", + "Bitso", + "Citi", + "CFSB", + "Triple A Technologies", + "Portage Bank" + ], + "example": "HSBC", + "type": [ + "string", + "null" + ] + }, + "provider_reference": { + "description": "Provider (JPMorgan/Zenus) payment reference captured from the ACCOUNT.ACCOUNT booking webhook (Zenus contractSource.sourceRef). Present for some ACH/wire payouts; a bank-side reference, not the formal ACH network trace number.", + "example": "2084734238TC", + "maxLength": 120, + "type": [ + "string", + "null" + ] + }, + "provider_status": { + "description": "Payment provider status", + "enum": [ + "canceled", + "failed", + "returned", + "sent" + ], + "example": "canceled", + "type": [ + "string", + "null" + ] + }, + "provider_transaction_id": { + "description": "Payment provider transaction id", + "example": "0x123...890", + "type": [ + "string", + "null" + ] + }, + "provider_uetr": { + "description": "Unique end-to-end transaction reference (UETR). Populated once the wire is confirmed by the network; null while the payment is in flight or when the rail does not expose it (e.g. ACH).", + "example": "37d10eff-d450-4aba-a5d4-e3978f5a3343", + "maxLength": 120, + "type": [ + "string", + "null" + ] + }, + "recipient_account_number": { + "description": "Recipient account number", + "example": "1234567890", + "type": [ + "string", + "null" + ] + }, + "recipient_account_type": { + "description": "Recipient account type", + "example": "checking", + "type": [ + "string", + "null" + ] + }, + "recipient_bank_code": { + "description": "Recipient bank code", + "example": "00416968", + "type": [ + "string", + "null" + ] + }, + "recipient_branch_code": { + "description": "Recipient branch code", + "example": "0001", + "type": [ + "string", + "null" + ] + }, + "recipient_name": { + "description": "Recipient name", + "example": "John Doe", + "type": [ + "string", + "null" + ] + }, + "recipient_tax_id": { + "description": "Recipient tax id", + "example": "123.456.789-10", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Payment step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "on_hold", + "type": "string" + } + }, + "required": [ + "step" + ], + "type": "object" + }, + "tracking_transaction": { + "properties": { + "completed_at": { + "description": "Payout transaction completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "ledger_in_transaction_id": { + "description": "Ledger transaction ID for the IN (crypto deposit) transaction", + "type": [ + "string", + "null" + ] + }, + "ledger_out_transaction_id": { + "description": "Ledger transaction ID for the OUT (fiat withdrawal) transaction", + "type": [ + "string", + "null" + ] + }, + "provider_error_reason": { + "description": "Provider error reason when the crypto collection fails (e.g. erc20_allowance_insufficient, ESTIMATION_ERROR: execution reverted)", + "example": "erc20_allowance_insufficient", + "type": [ + "string", + "null" + ] + }, + "provider_transaction_id": { + "description": "Provider-side handle for the on-chain leg (e.g. Circle CPN payment id).", + "example": "67c12eae-b7bc-31cc-a5ef-623dcea82346", + "type": [ + "string", + "null" + ] + }, + "status": { + "description": "Payout transaction status", + "enum": [ + "failed", + "found" + ], + "example": "failed", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Payout transaction step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "processing", + "type": "string" + }, + "transaction_hash": { + "description": "Blockchain transaction hash", + "example": "0x123...890", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "step" + ], + "type": "object" + }, + "transaction_fee_amount": { + "description": "Transaction fee in cents (percentage-based fee)", + "example": 100, + "type": [ + "number", + "null" + ] + }, + "webhook_event": { + "enum": [ + "payout.complete" + ], + "type": "string" + } + }, + "required": [ + "webhook_event", + "id", + "status", + "sender_wallet_address", + "tracking_complete", + "tracking_payment", + "tracking_transaction" + ], + "type": "object" + }, + "PayoutNewWebhookOut": { + "properties": { + "bank_account_id": { + "example": "ba_000000000000", + "maxLength": 15, + "minLength": 15, + "type": [ + "string", + "null" + ] + }, + "billing_fee_amount": { + "description": "Billing fee in cents (charged via invoice at the end of the month)", + "example": 50, + "type": [ + "number", + "null" + ] + }, + "customer_id": { + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": [ + "string", + "null" + ] + }, + "id": { + "example": "pa_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "offramp_wallet_id": { + "example": "ow_000000000000", + "maxLength": 15, + "minLength": 15, + "type": [ + "string", + "null" + ] + }, + "partner_fee": { + "default": 0, + "description": "Payout partner fee amount in cents (can be negative for rebates)", + "example": -25000, + "minimum": 0, + "type": "integer" + }, + "sender_wallet_address": { + "description": "Payout wallet address", + "example": "0x123...890", + "type": "string" + }, + "status": { + "description": "Payout general status", + "enum": [ + "processing", + "failed", + "refunded", + "completed", + "on_hold" + ], + "example": "processing", + "type": "string" + }, + "tracking_complete": { + "properties": { + "completed_at": { + "description": "Complete completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "provider_transaction_id": { + "description": "Provider-side handle for the refund transaction (e.g. Circle transaction id)", + "example": "67c12eae-b7bc-31cc-a5ef-623dcea82346", + "type": [ + "string", + "null" + ] + }, + "refund_reason": { + "description": "Reason for refund when tokens are returned to sender", + "example": "fiat_payment_failed", + "type": [ + "string", + "null" + ] + }, + "status": { + "description": "Complete status", + "enum": [ + "tokens_refunded", + "paid" + ], + "example": "tokens_refunded", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Complete step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "on_hold", + "type": "string" + }, + "transaction_hash": { + "description": "Complete transaction hash", + "example": "0x123...890", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "step" + ], + "type": "object" + }, + "tracking_documents": { + "properties": { + "completed_at": { + "description": "Documents completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "reviewed_by": { + "description": "Reviewer email/name", + "example": "compliance@example.com", + "type": [ + "string", + "null" + ] + }, + "status": { + "description": "Documents status", + "enum": [ + "waiting_documents", + "compliance_reviewing" + ], + "example": "waiting_documents", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Documents step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "processing", + "type": "string" + } + }, + "required": [ + "step" + ], + "type": [ + "object", + "null" + ] + }, + "tracking_liquidity": { + "properties": { + "completed_at": { + "description": "Payout transaction completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "estimated_time_of_arrival": { + "description": "Estimated time of arrival", + "enum": [ + "5_min", + "5_30_min", + "30_min", + "2_hours", + "1_business_day", + "2_business_days", + "5_business_days" + ], + "example": "1_business_day", + "type": [ + "string", + "null" + ] + }, + "provider_status": { + "description": "Payment provider status", + "enum": [ + "deposited", + "converted", + "withdrawn" + ], + "example": "deposited", + "type": [ + "string", + "null" + ] + }, + "provider_transaction_id": { + "description": "Payment provider transaction id", + "example": "0x123...890", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Payout liquidity step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "processing", + "type": "string" + } + }, + "required": [ + "step" + ], + "type": [ + "object", + "null" + ] + }, + "tracking_payment": { + "properties": { + "coelsa_id": { + "description": "COELSA transaction reference ID for ARS transfers (Argentine national banking system)", + "example": "1LMP68NKV46DRDYK2R7OEV", + "type": [ + "string", + "null" + ] + }, + "completed_at": { + "description": "Payment completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "end_to_end_id": { + "description": "BACEN Pix end-to-end transaction ID (govt Pix ID)", + "example": "E20018183202603311320vm6ALFpJpsS", + "type": [ + "string", + "null" + ] + }, + "estimated_time_of_arrival": { + "description": "Estimated time of arrival", + "enum": [ + "5_min", + "5_30_min", + "30_min", + "2_hours", + "1_business_day", + "2_business_days", + "5_business_days" + ], + "example": "5_min", + "type": [ + "string", + "null" + ] + }, + "provider_clearing_system": { + "description": "Clearing system that processed the payment (e.g. FED, CHIPS, ACH, SWIFT).", + "example": "FED", + "maxLength": 40, + "type": [ + "string", + "null" + ] + }, + "provider_error_reason": { + "description": "Provider error reason when payment fails (e.g. invalid_key, wrong_parameters)", + "example": "invalid_key", + "type": [ + "string", + "null" + ] + }, + "provider_imad": { + "description": "Fed Input Message Accountability Data (IMAD). Domestic Fedwire payments only; null on ACH and SWIFT.", + "example": "20260526MMQFMP2M008120", + "maxLength": 120, + "type": [ + "string", + "null" + ] + }, + "provider_integration": { + "description": "Machine-readable integration that executed the fiat leg. Unlike provider_name (a client-facing bank label), this uniquely identifies the integration \u2014 e.g. zenus vs checkbook, which share the \"JPMorgan Chase\" label.", + "enum": [ + "veem", + "zenus", + "checkbook", + "onemoney", + "bitso", + "starkbank", + "triplea", + "infinitus" + ], + "example": "zenus", + "type": [ + "string", + "null" + ] + }, + "provider_name": { + "description": "Payment provider name", + "enum": [ + "Nvio Pagos", + "Brex", + "Stark Bank", + "JPMorgan Chase", + "HSBC", + "Inter", + "JP Morgan Chase", + "Bitso", + "Citi", + "CFSB", + "Triple A Technologies", + "Portage Bank" + ], + "example": "HSBC", + "type": [ + "string", + "null" + ] + }, + "provider_reference": { + "description": "Provider (JPMorgan/Zenus) payment reference captured from the ACCOUNT.ACCOUNT booking webhook (Zenus contractSource.sourceRef). Present for some ACH/wire payouts; a bank-side reference, not the formal ACH network trace number.", + "example": "2084734238TC", + "maxLength": 120, + "type": [ + "string", + "null" + ] + }, + "provider_status": { + "description": "Payment provider status", + "enum": [ + "canceled", + "failed", + "returned", + "sent" + ], + "example": "canceled", + "type": [ + "string", + "null" + ] + }, + "provider_transaction_id": { + "description": "Payment provider transaction id", + "example": "0x123...890", + "type": [ + "string", + "null" + ] + }, + "provider_uetr": { + "description": "Unique end-to-end transaction reference (UETR). Populated once the wire is confirmed by the network; null while the payment is in flight or when the rail does not expose it (e.g. ACH).", + "example": "37d10eff-d450-4aba-a5d4-e3978f5a3343", + "maxLength": 120, + "type": [ + "string", + "null" + ] + }, + "recipient_account_number": { + "description": "Recipient account number", + "example": "1234567890", + "type": [ + "string", + "null" + ] + }, + "recipient_account_type": { + "description": "Recipient account type", + "example": "checking", + "type": [ + "string", + "null" + ] + }, + "recipient_bank_code": { + "description": "Recipient bank code", + "example": "00416968", + "type": [ + "string", + "null" + ] + }, + "recipient_branch_code": { + "description": "Recipient branch code", + "example": "0001", + "type": [ + "string", + "null" + ] + }, + "recipient_name": { + "description": "Recipient name", + "example": "John Doe", + "type": [ + "string", + "null" + ] + }, + "recipient_tax_id": { + "description": "Recipient tax id", + "example": "123.456.789-10", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Payment step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "on_hold", + "type": "string" + } + }, + "required": [ + "step" + ], + "type": "object" + }, + "tracking_transaction": { + "properties": { + "completed_at": { + "description": "Payout transaction completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "ledger_in_transaction_id": { + "description": "Ledger transaction ID for the IN (crypto deposit) transaction", + "type": [ + "string", + "null" + ] + }, + "ledger_out_transaction_id": { + "description": "Ledger transaction ID for the OUT (fiat withdrawal) transaction", + "type": [ + "string", + "null" + ] + }, + "provider_error_reason": { + "description": "Provider error reason when the crypto collection fails (e.g. erc20_allowance_insufficient, ESTIMATION_ERROR: execution reverted)", + "example": "erc20_allowance_insufficient", + "type": [ + "string", + "null" + ] + }, + "provider_transaction_id": { + "description": "Provider-side handle for the on-chain leg (e.g. Circle CPN payment id).", + "example": "67c12eae-b7bc-31cc-a5ef-623dcea82346", + "type": [ + "string", + "null" + ] + }, + "status": { + "description": "Payout transaction status", + "enum": [ + "failed", + "found" + ], + "example": "failed", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Payout transaction step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "processing", + "type": "string" + }, + "transaction_hash": { + "description": "Blockchain transaction hash", + "example": "0x123...890", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "step" + ], + "type": "object" + }, + "transaction_fee_amount": { + "description": "Transaction fee in cents (percentage-based fee)", + "example": 100, + "type": [ + "number", + "null" + ] + }, + "webhook_event": { + "enum": [ + "payout.new" + ], + "type": "string" + } + }, + "required": [ + "webhook_event", + "id", + "status", + "sender_wallet_address", + "tracking_complete", + "tracking_payment", + "tracking_transaction" + ], + "type": "object" + }, + "PayoutOnEvmIn": { + "properties": { + "quote_id": { + "example": "qu_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "sender_wallet_address": { + "description": "Payout wallet address", + "example": "0x123...890", + "type": "string" + } + }, + "required": [ + "quote_id", + "sender_wallet_address" + ], + "type": "object" + }, + "PayoutOnEvmOut": { + "properties": { + "bank_account_id": { + "example": "ba_000000000000", + "maxLength": 15, + "minLength": 15, + "type": [ + "string", + "null" + ] + }, + "billing_fee_amount": { + "description": "Billing fee in cents (charged via invoice at the end of the month)", + "example": 50, + "type": [ + "number", + "null" + ] + }, + "customer_id": { + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": [ + "string", + "null" + ] + }, + "id": { + "example": "pa_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "offramp_wallet_id": { + "example": "ow_000000000000", + "maxLength": 15, + "minLength": 15, + "type": [ + "string", + "null" + ] + }, + "partner_fee": { + "default": 0, + "description": "Payout partner fee amount in cents (can be negative for rebates)", + "example": -25000, + "minimum": 0, + "type": "integer" + }, + "sender_wallet_address": { + "description": "Payout wallet address", + "example": "0x123...890", + "type": "string" + }, + "status": { + "description": "Payout general status", + "enum": [ + "processing", + "failed", + "refunded", + "completed", + "on_hold" + ], + "example": "processing", + "type": "string" + }, + "tracking_complete": { + "properties": { + "completed_at": { + "description": "Complete completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "provider_transaction_id": { + "description": "Provider-side handle for the refund transaction (e.g. Circle transaction id)", + "example": "67c12eae-b7bc-31cc-a5ef-623dcea82346", + "type": [ + "string", + "null" + ] + }, + "refund_reason": { + "description": "Reason for refund when tokens are returned to sender", + "example": "fiat_payment_failed", + "type": [ + "string", + "null" + ] + }, + "status": { + "description": "Complete status", + "enum": [ + "tokens_refunded", + "paid" + ], + "example": "tokens_refunded", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Complete step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "on_hold", + "type": "string" + }, + "transaction_hash": { + "description": "Complete transaction hash", + "example": "0x123...890", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "step" + ], + "type": "object" + }, + "tracking_documents": { + "properties": { + "completed_at": { + "description": "Documents completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "reviewed_by": { + "description": "Reviewer email/name", + "example": "compliance@example.com", + "type": [ + "string", + "null" + ] + }, + "status": { + "description": "Documents status", + "enum": [ + "waiting_documents", + "compliance_reviewing" + ], + "example": "waiting_documents", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Documents step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "processing", + "type": "string" + } + }, + "required": [ + "step" + ], + "type": [ + "object", + "null" + ] + }, + "tracking_liquidity": { + "properties": { + "completed_at": { + "description": "Payout transaction completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "estimated_time_of_arrival": { + "description": "Estimated time of arrival", + "enum": [ + "5_min", + "5_30_min", + "30_min", + "2_hours", + "1_business_day", + "2_business_days", + "5_business_days" + ], + "example": "1_business_day", + "type": [ + "string", + "null" + ] + }, + "provider_status": { + "description": "Payment provider status", + "enum": [ + "deposited", + "converted", + "withdrawn" + ], + "example": "deposited", + "type": [ + "string", + "null" + ] + }, + "provider_transaction_id": { + "description": "Payment provider transaction id", + "example": "0x123...890", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Payout liquidity step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "processing", + "type": "string" + } + }, + "required": [ + "step" + ], + "type": [ + "object", + "null" + ] + }, + "tracking_payment": { + "properties": { + "coelsa_id": { + "description": "COELSA transaction reference ID for ARS transfers (Argentine national banking system)", + "example": "1LMP68NKV46DRDYK2R7OEV", + "type": [ + "string", + "null" + ] + }, + "completed_at": { + "description": "Payment completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "end_to_end_id": { + "description": "BACEN Pix end-to-end transaction ID (govt Pix ID)", + "example": "E20018183202603311320vm6ALFpJpsS", + "type": [ + "string", + "null" + ] + }, + "estimated_time_of_arrival": { + "description": "Estimated time of arrival", + "enum": [ + "5_min", + "5_30_min", + "30_min", + "2_hours", + "1_business_day", + "2_business_days", + "5_business_days" + ], + "example": "5_min", + "type": [ + "string", + "null" + ] + }, + "provider_clearing_system": { + "description": "Clearing system that processed the payment (e.g. FED, CHIPS, ACH, SWIFT).", + "example": "FED", + "maxLength": 40, + "type": [ + "string", + "null" + ] + }, + "provider_error_reason": { + "description": "Provider error reason when payment fails (e.g. invalid_key, wrong_parameters)", + "example": "invalid_key", + "type": [ + "string", + "null" + ] + }, + "provider_imad": { + "description": "Fed Input Message Accountability Data (IMAD). Domestic Fedwire payments only; null on ACH and SWIFT.", + "example": "20260526MMQFMP2M008120", + "maxLength": 120, + "type": [ + "string", + "null" + ] + }, + "provider_integration": { + "description": "Machine-readable integration that executed the fiat leg. Unlike provider_name (a client-facing bank label), this uniquely identifies the integration \u2014 e.g. zenus vs checkbook, which share the \"JPMorgan Chase\" label.", + "enum": [ + "veem", + "zenus", + "checkbook", + "onemoney", + "bitso", + "starkbank", + "triplea", + "infinitus" + ], + "example": "zenus", + "type": [ + "string", + "null" + ] + }, + "provider_name": { + "description": "Payment provider name", + "enum": [ + "Nvio Pagos", + "Brex", + "Stark Bank", + "JPMorgan Chase", + "HSBC", + "Inter", + "JP Morgan Chase", + "Bitso", + "Citi", + "CFSB", + "Triple A Technologies", + "Portage Bank" + ], + "example": "HSBC", + "type": [ + "string", + "null" + ] + }, + "provider_reference": { + "description": "Provider (JPMorgan/Zenus) payment reference captured from the ACCOUNT.ACCOUNT booking webhook (Zenus contractSource.sourceRef). Present for some ACH/wire payouts; a bank-side reference, not the formal ACH network trace number.", + "example": "2084734238TC", + "maxLength": 120, + "type": [ + "string", + "null" + ] + }, + "provider_status": { + "description": "Payment provider status", + "enum": [ + "canceled", + "failed", + "returned", + "sent" + ], + "example": "canceled", + "type": [ + "string", + "null" + ] + }, + "provider_transaction_id": { + "description": "Payment provider transaction id", + "example": "0x123...890", + "type": [ + "string", + "null" + ] + }, + "provider_uetr": { + "description": "Unique end-to-end transaction reference (UETR). Populated once the wire is confirmed by the network; null while the payment is in flight or when the rail does not expose it (e.g. ACH).", + "example": "37d10eff-d450-4aba-a5d4-e3978f5a3343", + "maxLength": 120, + "type": [ + "string", + "null" + ] + }, + "recipient_account_number": { + "description": "Recipient account number", + "example": "1234567890", + "type": [ + "string", + "null" + ] + }, + "recipient_account_type": { + "description": "Recipient account type", + "example": "checking", + "type": [ + "string", + "null" + ] + }, + "recipient_bank_code": { + "description": "Recipient bank code", + "example": "00416968", + "type": [ + "string", + "null" + ] + }, + "recipient_branch_code": { + "description": "Recipient branch code", + "example": "0001", + "type": [ + "string", + "null" + ] + }, + "recipient_name": { + "description": "Recipient name", + "example": "John Doe", + "type": [ + "string", + "null" + ] + }, + "recipient_tax_id": { + "description": "Recipient tax id", + "example": "123.456.789-10", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Payment step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "on_hold", + "type": "string" + } + }, + "required": [ + "step" + ], + "type": "object" + }, + "tracking_transaction": { + "properties": { + "completed_at": { + "description": "Payout transaction completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "ledger_in_transaction_id": { + "description": "Ledger transaction ID for the IN (crypto deposit) transaction", + "type": [ + "string", + "null" + ] + }, + "ledger_out_transaction_id": { + "description": "Ledger transaction ID for the OUT (fiat withdrawal) transaction", + "type": [ + "string", + "null" + ] + }, + "provider_error_reason": { + "description": "Provider error reason when the crypto collection fails (e.g. erc20_allowance_insufficient, ESTIMATION_ERROR: execution reverted)", + "example": "erc20_allowance_insufficient", + "type": [ + "string", + "null" + ] + }, + "provider_transaction_id": { + "description": "Provider-side handle for the on-chain leg (e.g. Circle CPN payment id).", + "example": "67c12eae-b7bc-31cc-a5ef-623dcea82346", + "type": [ + "string", + "null" + ] + }, + "status": { + "description": "Payout transaction status", + "enum": [ + "failed", + "found" + ], + "example": "failed", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Payout transaction step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "processing", + "type": "string" + }, + "transaction_hash": { + "description": "Blockchain transaction hash", + "example": "0x123...890", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "step" + ], + "type": "object" + }, + "transaction_fee_amount": { + "description": "Transaction fee in cents (percentage-based fee)", + "example": 100, + "type": [ + "number", + "null" + ] + } + }, + "required": [ + "id", + "status", + "sender_wallet_address", + "tracking_complete", + "tracking_payment", + "tracking_transaction" + ], + "type": "object" + }, + "PayoutOnSolanaIn": { + "properties": { + "quote_id": { + "example": "qu_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "sender_wallet_address": { + "description": "Payout wallet address", + "example": "0x123...890", + "type": "string" + }, + "signed_transaction": { + "description": "Signed transaction", + "example": "AAA...Zey8y0A", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "quote_id", + "sender_wallet_address" + ], + "type": "object" + }, + "PayoutOnStellarAuthorizeIn": { + "properties": { + "quote_id": { + "example": "qu_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "sender_wallet_address": { + "description": "Payout wallet address", + "example": "0x123...890", + "type": "string" + } + }, + "required": [ + "quote_id", + "sender_wallet_address" + ], + "type": "object" + }, + "PayoutOnStellarIn": { + "properties": { + "quote_id": { + "example": "qu_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "sender_wallet_address": { + "description": "Payout wallet address", + "example": "0x123...890", + "type": "string" + }, + "signed_transaction": { + "description": "Signed transaction", + "example": "AAA...Zey8y0A", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "quote_id", + "sender_wallet_address" + ], + "type": "object" + }, + "PayoutOut": { + "properties": { + "account_class": { + "enum": [ + "individual", + "business" + ], + "example": "individual", + "type": [ + "string", + "null" + ] + }, + "account_number": { + "example": "1001001234", + "type": [ + "string", + "null" + ] + }, + "account_type": { + "enum": [ + "checking", + "saving" + ], + "example": "checking", + "type": [ + "string", + "null" + ] + }, + "ach_cop_bank_account": { + "example": "12345678", + "type": [ + "string", + "null" + ] + }, + "ach_cop_bank_code": { + "example": "051", + "type": [ + "string", + "null" + ] + }, + "ach_cop_beneficiary_first_name": { + "example": "Fernando", + "type": [ + "string", + "null" + ] + }, + "ach_cop_beneficiary_last_name": { + "example": "Guzman Alarc\u00f3n", + "type": [ + "string", + "null" + ] + }, + "ach_cop_document_id": { + "example": "1661105408", + "type": [ + "string", + "null" + ] + }, + "ach_cop_document_type": { + "description": "CC - C\u00e9dula de Ciudadan\u00eda; CE - C\u00e9dula de Extranjer\u00eda; NIT - N\u00famero de Identificaci\u00f3n Tributaria; PASS - Passport; PEP - Permiso Especial de Permanencia", + "enum": [ + "CC", + "CE", + "NIT", + "PASS", + "PEP" + ], + "example": "CC", + "type": [ + "string", + "null" + ] + }, + "ach_cop_email": { + "example": "fernando.guzman@gmail.com", + "type": [ + "string", + "null" + ] + }, + "address_line_1": { + "example": "Address line 1", + "type": [ + "string", + "null" + ] + }, + "address_line_2": { + "example": "Address line 2", + "type": [ + "string", + "null" + ] + }, + "beneficiary_name": { + "example": "Individual full name or business name", + "maxLength": 128, + "type": [ + "string", + "null" + ] + }, + "billing_fee_amount": { + "description": "Billing fee in cents (charged via invoice at the end of the month)", + "example": 50, + "type": [ + "number", + "null" + ] + }, + "blindpay_quotation": { + "description": "1 USD = 4.85 BRL (commercial quotation - (blindpay taxes))", + "example": 485, + "type": [ + "number", + "null" + ] + }, + "city": { + "example": "City", + "type": [ + "string", + "null" + ] + }, + "commercial_quotation": { + "description": "1 USD = 4.95 BRL", + "example": 495, + "type": [ + "number", + "null" + ] + }, + "country": { + "enum": [ + "AF", + "AL", + "DZ", + "AS", + "AD", + "AO", + "AI", + "AQ", + "AG", + "AR", + "AM", + "AW", + "AU", + "AT", + "AZ", + "BS", + "BH", + "BD", + "BB", + "BY", + "BE", + "BZ", + "BJ", + "BM", + "BT", + "BO", + "BQ", + "BA", + "BW", + "BV", + "BR", + "IO", + "BN", + "BG", + "BF", + "BI", + "CV", + "KH", + "CM", + "CA", + "KY", + "CF", + "TD", + "CL", + "CN", + "CX", + "CC", + "CO", + "KM", + "CD", + "CG", + "CK", + "CR", + "HR", + "CU", + "CW", + "CY", + "CZ", + "CI", + "DK", + "DJ", + "DM", + "DO", + "EC", + "EG", + "SV", + "GQ", + "ER", + "EE", + "SZ", + "ET", + "FK", + "FO", + "FJ", + "FI", + "FR", + "GF", + "PF", + "TF", + "GA", + "GM", + "GE", + "DE", + "GH", + "GI", + "GR", + "GL", + "GD", + "GP", + "GU", + "GT", + "GG", + "GN", + "GW", + "GY", + "HT", + "HM", + "VA", + "HN", + "HK", + "HU", + "IS", + "IN", + "ID", + "IR", + "IQ", + "IE", + "IM", + "IL", + "IT", + "JM", + "JP", + "JE", + "JO", + "KZ", + "KE", + "KI", + "KP", + "KR", + "KW", + "KG", + "LA", + "LV", + "LB", + "LS", + "LR", + "LY", + "LI", + "LT", + "LU", + "MO", + "MG", + "MW", + "MY", + "MV", + "ML", + "MT", + "MH", + "MQ", + "MR", + "MU", + "YT", + "MX", + "FM", + "MD", + "MC", + "MN", + "ME", + "MS", + "MA", + "MZ", + "MM", + "NA", + "NR", + "NP", + "NL", + "NC", + "NZ", + "NI", + "NE", + "NG", + "NU", + "NF", + "MP", + "NO", + "OM", + "PK", + "PW", + "PS", + "PA", + "PG", + "PY", + "PE", + "PH", + "PN", + "PL", + "PT", + "PR", + "QA", + "MK", + "RO", + "RU", + "RW", + "RE", + "BL", + "SH", + "KN", + "LC", + "MF", + "PM", + "VC", + "WS", + "SM", + "ST", + "SA", + "SN", + "RS", + "SC", + "SL", + "SG", + "SX", + "SK", + "SI", + "SB", + "SO", + "ZA", + "GS", + "SS", + "ES", + "LK", + "SD", + "SR", + "SJ", + "SE", + "CH", + "SY", + "TW", + "TJ", + "TZ", + "TH", + "TL", + "TG", + "TK", + "TO", + "TT", + "TN", + "TR", + "TM", + "TC", + "TV", + "UG", + "UA", + "AE", + "GB", + "UM", + "US", + "UY", + "UZ", + "VU", + "VE", + "VN", + "VG", + "VI", + "WF", + "EH", + "YE", + "ZM", + "ZW", + "AX" + ], + "example": "US", + "type": [ + "string", + "null" + ] + }, + "cpn_payment_id": { + "description": "Circle CPN payment id", + "example": "f06dbc45-58a4-389f-beb8-581c3fafff3c", + "type": [ + "string", + "null" + ] + }, + "created_at": { + "example": "2021-01-01T00:00:00Z", + "format": "date-time", + "type": [ + "string", + "null" + ] + }, + "currency": { + "description": "ISO 4271 currency code", + "enum": [ + "BRL", + "USD", + "MXN", + "COP", + "ARS", + "EUR" + ], + "example": "BRL", + "type": "string" + }, + "customer_id": { + "description": "Customer id", + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "customer_local_amount": { + "description": "Estimated amount in the currency of recipient bank account", + "example": 1000, + "type": [ + "number", + "null" + ] + }, + "description": { + "example": "Memo code or description, only works with USD and BRL", + "maxLength": 128, + "type": [ + "string", + "null" + ] + }, + "first_name": { + "example": "John", + "type": [ + "string", + "null" + ] + }, + "has_virtual_account": { + "description": "Has virtual account", + "example": true, + "type": [ + "boolean", + "null" + ] + }, + "id": { + "example": "pa_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "image_url": { + "example": "https://example.com/image.png", + "format": "uri", + "type": [ + "string", + "null" + ] + }, + "instance_id": { + "example": "in_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "jpm_track_data": { + "properties": { + "extended_tracking_status": { + "description": "Extended tracking status from JPM", + "example": "Delivered to next bank", + "type": [ + "string", + "null" + ] + }, + "fed_imad": { + "description": "Fed IMAD number (Wire payments only)", + "example": "1230MMQFMP2L034796", + "type": [ + "string", + "null" + ] + }, + "jpm_processing_status": { + "description": "JPM processing status", + "example": "Completed", + "type": [ + "string", + "null" + ] + }, + "jpm_reference_number": { + "description": "JPM reference number", + "example": "9483400364JO", + "type": [ + "string", + "null" + ] + }, + "jpm_trace_number": { + "description": "JPM trace number", + "example": "317802200000565", + "type": [ + "string", + "null" + ] + }, + "payment_amount": { + "description": "Payment amount", + "example": "3,914.00", + "type": [ + "string", + "null" + ] + }, + "payment_currency": { + "description": "Payment currency", + "example": "USD", + "type": [ + "string", + "null" + ] + }, + "payment_date": { + "description": "Payment date", + "example": "Dec 30 2025", + "type": [ + "string", + "null" + ] + }, + "uetr": { + "description": "Unique end-to-end transaction reference", + "example": "4ad5f98a-5279-410a-99a2-39a729aceb35", + "type": [ + "string", + "null" + ] + } + }, + "type": [ + "object", + "null" + ] + }, + "last_name": { + "example": "Doe", + "type": [ + "string", + "null" + ] + }, + "legal_name": { + "example": "Company Name Inc.", + "type": [ + "string", + "null" + ] + }, + "name": { + "example": "Bank Account Name", + "type": "string" + }, + "network": { + "description": "Check blindpay available networks", + "enum": [ + "base", + "sepolia", + "arbitrum_sepolia", + "base_sepolia", + "arbitrum", + "polygon", + "polygon_amoy", + "ethereum", + "stellar", + "stellar_testnet", + "tron", + "solana", + "solana_devnet" + ], + "example": "sepolia", + "type": "string" + }, + "partner_fee": { + "default": 0, + "description": "Payout partner fee amount in cents (can be negative for rebates)", + "example": -25000, + "minimum": 0, + "type": "integer" + }, + "partner_fee_amount": { + "default": 0, + "description": "1.5 USDC", + "example": 150, + "type": [ + "number", + "null" + ] + }, + "partner_fee_id": { + "example": "pf_000000000000", + "maxLength": 15, + "minLength": 15, + "type": [ + "string", + "null" + ] + }, + "pix_key": { + "example": "14947677768", + "type": [ + "string", + "null" + ] + }, + "pix_safe_bank_code": { + "example": "00416968", + "pattern": "^\\d{4,8}$", + "type": [ + "string", + "null" + ] + }, + "pix_safe_branch_code": { + "example": "0001", + "pattern": "^\\d{4}(-\\d)?$", + "type": [ + "string", + "null" + ] + }, + "pix_safe_cpf_cnpj": { + "example": "12345678901", + "type": [ + "string", + "null" + ] + }, + "postal_code": { + "example": "Postal code", + "type": [ + "string", + "null" + ] + }, + "quote_id": { + "example": "qu_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "receiver_amount": { + "description": "52.40 BRL", + "example": 5240, + "type": [ + "number", + "null" + ] + }, + "routing_number": { + "example": "012345678", + "type": [ + "string", + "null" + ] + }, + "sender_amount": { + "description": "10.10 USDC needs to be sent to bank account blockchain address", + "example": 1010, + "type": [ + "number", + "null" + ] + }, + "sender_legal_name": { + "description": "Legal name of the sending instance (originator), shown on the receipt", + "example": "LRB TRADING INVESTMENT L.L.C", + "type": [ + "string", + "null" + ] + }, + "sender_wallet_address": { + "description": "Payout wallet address", + "example": "0x123...890", + "type": "string" + }, + "signed_transaction": { + "description": "Signed transaction", + "example": "AAA...Zey8y0A", + "type": [ + "string", + "null" + ] + }, + "spei_clabe": { + "example": "5482347403740546", + "type": [ + "string", + "null" + ] + }, + "spei_institution_code": { + "example": "40002", + "maxLength": 5, + "minLength": 5, + "type": [ + "string", + "null" + ] + }, + "spei_protocol": { + "description": "For debitcard and phonenum the spei_institution_code is required", + "enum": [ + "clabe", + "debitcard", + "phonenum" + ], + "example": "clabe", + "type": [ + "string", + "null" + ] + }, + "state_province_region": { + "example": "State/Province/Region", + "type": [ + "string", + "null" + ] + }, + "status": { + "description": "Payout general status", + "enum": [ + "processing", + "failed", + "refunded", + "completed", + "on_hold" + ], + "example": "processing", + "type": "string" + }, + "swift_account_holder_name": { + "example": "John Doe", + "maxLength": 50, + "type": [ + "string", + "null" + ] + }, + "swift_account_number_iban": { + "example": "123456789", + "type": [ + "string", + "null" + ] + }, + "swift_beneficiary_country": { + "enum": [ + "AF", + "AL", + "DZ", + "AS", + "AD", + "AO", + "AI", + "AQ", + "AG", + "AR", + "AM", + "AW", + "AU", + "AT", + "AZ", + "BS", + "BH", + "BD", + "BB", + "BY", + "BE", + "BZ", + "BJ", + "BM", + "BT", + "BO", + "BQ", + "BA", + "BW", + "BV", + "BR", + "IO", + "BN", + "BG", + "BF", + "BI", + "CV", + "KH", + "CM", + "CA", + "KY", + "CF", + "TD", + "CL", + "CN", + "CX", + "CC", + "CO", + "KM", + "CD", + "CG", + "CK", + "CR", + "HR", + "CU", + "CW", + "CY", + "CZ", + "CI", + "DK", + "DJ", + "DM", + "DO", + "EC", + "EG", + "SV", + "GQ", + "ER", + "EE", + "SZ", + "ET", + "FK", + "FO", + "FJ", + "FI", + "FR", + "GF", + "PF", + "TF", + "GA", + "GM", + "GE", + "DE", + "GH", + "GI", + "GR", + "GL", + "GD", + "GP", + "GU", + "GT", + "GG", + "GN", + "GW", + "GY", + "HT", + "HM", + "VA", + "HN", + "HK", + "HU", + "IS", + "IN", + "ID", + "IR", + "IQ", + "IE", + "IM", + "IL", + "IT", + "JM", + "JP", + "JE", + "JO", + "KZ", + "KE", + "KI", + "KP", + "KR", + "KW", + "KG", + "LA", + "LV", + "LB", + "LS", + "LR", + "LY", + "LI", + "LT", + "LU", + "MO", + "MG", + "MW", + "MY", + "MV", + "ML", + "MT", + "MH", + "MQ", + "MR", + "MU", + "YT", + "MX", + "FM", + "MD", + "MC", + "MN", + "ME", + "MS", + "MA", + "MZ", + "MM", + "NA", + "NR", + "NP", + "NL", + "NC", + "NZ", + "NI", + "NE", + "NG", + "NU", + "NF", + "MP", + "NO", + "OM", + "PK", + "PW", + "PS", + "PA", + "PG", + "PY", + "PE", + "PH", + "PN", + "PL", + "PT", + "PR", + "QA", + "MK", + "RO", + "RU", + "RW", + "RE", + "BL", + "SH", + "KN", + "LC", + "MF", + "PM", + "VC", + "WS", + "SM", + "ST", + "SA", + "SN", + "RS", + "SC", + "SL", + "SG", + "SX", + "SK", + "SI", + "SB", + "SO", + "ZA", + "GS", + "SS", + "ES", + "LK", + "SD", + "SR", + "SJ", + "SE", + "CH", + "SY", + "TW", + "TJ", + "TZ", + "TH", + "TL", + "TG", + "TK", + "TO", + "TT", + "TN", + "TR", + "TM", + "TC", + "TV", + "UG", + "UA", + "AE", + "GB", + "UM", + "US", + "UY", + "UZ", + "VU", + "VE", + "VN", + "VG", + "VI", + "WF", + "EH", + "YE", + "ZM", + "ZW", + "AX" + ], + "example": "MX", + "type": [ + "string", + "null" + ] + }, + "swift_code_bic": { + "example": "123456789", + "type": [ + "string", + "null" + ] + }, + "ted_bank_code": { + "example": "033", + "pattern": "^\\d{3,5}$", + "type": [ + "string", + "null" + ] + }, + "ted_branch_code": { + "example": "0001", + "pattern": "^\\d{4}(-\\d)?$", + "type": [ + "string", + "null" + ] + }, + "ted_cpf_cnpj": { + "example": "12345678901", + "type": [ + "string", + "null" + ] + }, + "token": { + "description": "Check blindpay available tokens", + "enum": [ + "USDC", + "USDT", + "USDB" + ], + "example": "USDC", + "type": "string" + }, + "total_fee_amount": { + "default": 0, + "description": "1.5 USDC", + "example": 1.5, + "type": [ + "number", + "null" + ] + }, + "tracking_complete": { + "properties": { + "completed_at": { + "description": "Complete completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "provider_transaction_id": { + "description": "Provider-side handle for the refund transaction (e.g. Circle transaction id)", + "example": "67c12eae-b7bc-31cc-a5ef-623dcea82346", + "type": [ + "string", + "null" + ] + }, + "refund_reason": { + "description": "Reason for refund when tokens are returned to sender", + "example": "fiat_payment_failed", + "type": [ + "string", + "null" + ] + }, + "status": { + "description": "Complete status", + "enum": [ + "tokens_refunded", + "paid" + ], + "example": "tokens_refunded", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Complete step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "on_hold", + "type": "string" + }, + "transaction_hash": { + "description": "Complete transaction hash", + "example": "0x123...890", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "step" + ], + "type": "object" + }, + "tracking_documents": { + "properties": { + "completed_at": { + "description": "Documents completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "reviewed_by": { + "description": "Reviewer email/name", + "example": "compliance@example.com", + "type": [ + "string", + "null" + ] + }, + "status": { + "description": "Documents status", + "enum": [ + "waiting_documents", + "compliance_reviewing" + ], + "example": "waiting_documents", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Documents step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "processing", + "type": "string" + } + }, + "required": [ + "step" + ], + "type": [ + "object", + "null" + ] + }, + "tracking_liquidity": { + "properties": { + "completed_at": { + "description": "Payout transaction completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "estimated_time_of_arrival": { + "description": "Estimated time of arrival", + "enum": [ + "5_min", + "5_30_min", + "30_min", + "2_hours", + "1_business_day", + "2_business_days", + "5_business_days" + ], + "example": "1_business_day", + "type": [ + "string", + "null" + ] + }, + "provider_status": { + "description": "Payment provider status", + "enum": [ + "deposited", + "converted", + "withdrawn" + ], + "example": "deposited", + "type": [ + "string", + "null" + ] + }, + "provider_transaction_id": { + "description": "Payment provider transaction id", + "example": "0x123...890", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Payout liquidity step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "processing", + "type": "string" + } + }, + "required": [ + "step" + ], + "type": [ + "object", + "null" + ] + }, + "tracking_payment": { + "properties": { + "coelsa_id": { + "description": "COELSA transaction reference ID for ARS transfers (Argentine national banking system)", + "example": "1LMP68NKV46DRDYK2R7OEV", + "type": [ + "string", + "null" + ] + }, + "completed_at": { + "description": "Payment completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "end_to_end_id": { + "description": "BACEN Pix end-to-end transaction ID (govt Pix ID)", + "example": "E20018183202603311320vm6ALFpJpsS", + "type": [ + "string", + "null" + ] + }, + "estimated_time_of_arrival": { + "description": "Estimated time of arrival", + "enum": [ + "5_min", + "5_30_min", + "30_min", + "2_hours", + "1_business_day", + "2_business_days", + "5_business_days" + ], + "example": "5_min", + "type": [ + "string", + "null" + ] + }, + "provider_clearing_system": { + "description": "Clearing system that processed the payment (e.g. FED, CHIPS, ACH, SWIFT).", + "example": "FED", + "maxLength": 40, + "type": [ + "string", + "null" + ] + }, + "provider_error_reason": { + "description": "Provider error reason when payment fails (e.g. invalid_key, wrong_parameters)", + "example": "invalid_key", + "type": [ + "string", + "null" + ] + }, + "provider_imad": { + "description": "Fed Input Message Accountability Data (IMAD). Domestic Fedwire payments only; null on ACH and SWIFT.", + "example": "20260526MMQFMP2M008120", + "maxLength": 120, + "type": [ + "string", + "null" + ] + }, + "provider_integration": { + "description": "Machine-readable integration that executed the fiat leg. Unlike provider_name (a client-facing bank label), this uniquely identifies the integration \u2014 e.g. zenus vs checkbook, which share the \"JPMorgan Chase\" label.", + "enum": [ + "veem", + "zenus", + "checkbook", + "onemoney", + "bitso", + "starkbank", + "triplea", + "infinitus" + ], + "example": "zenus", + "type": [ + "string", + "null" + ] + }, + "provider_name": { + "description": "Payment provider name", + "enum": [ + "Nvio Pagos", + "Brex", + "Stark Bank", + "JPMorgan Chase", + "HSBC", + "Inter", + "JP Morgan Chase", + "Bitso", + "Citi", + "CFSB", + "Triple A Technologies", + "Portage Bank" + ], + "example": "HSBC", + "type": [ + "string", + "null" + ] + }, + "provider_reference": { + "description": "Provider (JPMorgan/Zenus) payment reference captured from the ACCOUNT.ACCOUNT booking webhook (Zenus contractSource.sourceRef). Present for some ACH/wire payouts; a bank-side reference, not the formal ACH network trace number.", + "example": "2084734238TC", + "maxLength": 120, + "type": [ + "string", + "null" + ] + }, + "provider_status": { + "description": "Payment provider status", + "enum": [ + "canceled", + "failed", + "returned", + "sent" + ], + "example": "canceled", + "type": [ + "string", + "null" + ] + }, + "provider_transaction_id": { + "description": "Payment provider transaction id", + "example": "0x123...890", + "type": [ + "string", + "null" + ] + }, + "provider_uetr": { + "description": "Unique end-to-end transaction reference (UETR). Populated once the wire is confirmed by the network; null while the payment is in flight or when the rail does not expose it (e.g. ACH).", + "example": "37d10eff-d450-4aba-a5d4-e3978f5a3343", + "maxLength": 120, + "type": [ + "string", + "null" + ] + }, + "recipient_account_number": { + "description": "Recipient account number", + "example": "1234567890", + "type": [ + "string", + "null" + ] + }, + "recipient_account_type": { + "description": "Recipient account type", + "example": "checking", + "type": [ + "string", + "null" + ] + }, + "recipient_bank_code": { + "description": "Recipient bank code", + "example": "00416968", + "type": [ + "string", + "null" + ] + }, + "recipient_branch_code": { + "description": "Recipient branch code", + "example": "0001", + "type": [ + "string", + "null" + ] + }, + "recipient_name": { + "description": "Recipient name", + "example": "John Doe", + "type": [ + "string", + "null" + ] + }, + "recipient_tax_id": { + "description": "Recipient tax id", + "example": "123.456.789-10", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Payment step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "on_hold", + "type": "string" + } + }, + "required": [ + "step" + ], + "type": "object" + }, + "tracking_transaction": { + "properties": { + "completed_at": { + "description": "Payout transaction completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "ledger_in_transaction_id": { + "description": "Ledger transaction ID for the IN (crypto deposit) transaction", + "type": [ + "string", + "null" + ] + }, + "ledger_out_transaction_id": { + "description": "Ledger transaction ID for the OUT (fiat withdrawal) transaction", + "type": [ + "string", + "null" + ] + }, + "provider_error_reason": { + "description": "Provider error reason when the crypto collection fails (e.g. erc20_allowance_insufficient, ESTIMATION_ERROR: execution reverted)", + "example": "erc20_allowance_insufficient", + "type": [ + "string", + "null" + ] + }, + "provider_transaction_id": { + "description": "Provider-side handle for the on-chain leg (e.g. Circle CPN payment id).", + "example": "67c12eae-b7bc-31cc-a5ef-623dcea82346", + "type": [ + "string", + "null" + ] + }, + "status": { + "description": "Payout transaction status", + "enum": [ + "failed", + "found" + ], + "example": "failed", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Payout transaction step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "processing", + "type": "string" + }, + "transaction_hash": { + "description": "Blockchain transaction hash", + "example": "0x123...890", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "step" + ], + "type": "object" + }, + "transaction_document_file": { + "example": "https://example.com/image.png", + "format": "uri", + "type": [ + "string", + "null" + ] + }, + "transaction_document_id": { + "example": "1234567890", + "maxLength": 512, + "type": [ + "string", + "null" + ] + }, + "transaction_document_type": { + "enum": [ + "invoice", + "purchase_order", + "delivery_slip", + "contract", + "customs_declaration", + "bill_of_lading", + "others" + ], + "example": "invoice", + "type": [ + "string", + "null" + ] + }, + "transaction_fee_amount": { + "description": "Transaction fee in cents (percentage-based fee)", + "example": 100, + "type": [ + "number", + "null" + ] + }, + "transfers_account": { + "example": "BM123123123123", + "type": [ + "string", + "null" + ] + }, + "transfers_type": { + "enum": [ + "CVU", + "CBU", + "ALIAS" + ], + "example": "CVU", + "type": [ + "string", + "null" + ] + }, + "type": { + "enum": [ + "wire", + "ach", + "pix", + "pix_safe", + "ted", + "spei_bitso", + "transfers_bitso", + "ach_cop_bitso", + "international_swift", + "rtp", + "sepa" + ], + "example": "wire", + "type": "string" + }, + "updated_at": { + "example": "2021-01-01T00:00:00Z", + "format": "date-time", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "customer_id", + "id", + "status", + "sender_wallet_address", + "quote_id", + "instance_id", + "tracking_transaction", + "tracking_payment", + "tracking_complete", + "network", + "token", + "sender_amount", + "receiver_amount", + "commercial_quotation", + "blindpay_quotation", + "currency", + "name", + "type" + ], + "type": "object" + }, + "PayoutPartnerFeeWebhookOut": { + "properties": { + "bank_account_id": { + "example": "ba_000000000000", + "maxLength": 15, + "minLength": 15, + "type": [ + "string", + "null" + ] + }, + "billing_fee_amount": { + "description": "Billing fee in cents (charged via invoice at the end of the month)", + "example": 50, + "type": [ + "number", + "null" + ] + }, + "customer_id": { + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": [ + "string", + "null" + ] + }, + "id": { + "example": "pa_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "offramp_wallet_id": { + "example": "ow_000000000000", + "maxLength": 15, + "minLength": 15, + "type": [ + "string", + "null" + ] + }, + "partner_fee": { + "default": 0, + "description": "Payout partner fee amount in cents (can be negative for rebates)", + "example": -25000, + "minimum": 0, + "type": "integer" + }, + "sender_wallet_address": { + "description": "Payout wallet address", + "example": "0x123...890", + "type": "string" + }, + "status": { + "description": "Payout general status", + "enum": [ + "processing", + "failed", + "refunded", + "completed", + "on_hold" + ], + "example": "processing", + "type": "string" + }, + "tracking_complete": { + "properties": { + "completed_at": { + "description": "Complete completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "provider_transaction_id": { + "description": "Provider-side handle for the refund transaction (e.g. Circle transaction id)", + "example": "67c12eae-b7bc-31cc-a5ef-623dcea82346", + "type": [ + "string", + "null" + ] + }, + "refund_reason": { + "description": "Reason for refund when tokens are returned to sender", + "example": "fiat_payment_failed", + "type": [ + "string", + "null" + ] + }, + "status": { + "description": "Complete status", + "enum": [ + "tokens_refunded", + "paid" + ], + "example": "tokens_refunded", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Complete step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "on_hold", + "type": "string" + }, + "transaction_hash": { + "description": "Complete transaction hash", + "example": "0x123...890", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "step" + ], + "type": "object" + }, + "tracking_documents": { + "properties": { + "completed_at": { + "description": "Documents completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "reviewed_by": { + "description": "Reviewer email/name", + "example": "compliance@example.com", + "type": [ + "string", + "null" + ] + }, + "status": { + "description": "Documents status", + "enum": [ + "waiting_documents", + "compliance_reviewing" + ], + "example": "waiting_documents", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Documents step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "processing", + "type": "string" + } + }, + "required": [ + "step" + ], + "type": [ + "object", + "null" + ] + }, + "tracking_liquidity": { + "properties": { + "completed_at": { + "description": "Payout transaction completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "estimated_time_of_arrival": { + "description": "Estimated time of arrival", + "enum": [ + "5_min", + "5_30_min", + "30_min", + "2_hours", + "1_business_day", + "2_business_days", + "5_business_days" + ], + "example": "1_business_day", + "type": [ + "string", + "null" + ] + }, + "provider_status": { + "description": "Payment provider status", + "enum": [ + "deposited", + "converted", + "withdrawn" + ], + "example": "deposited", + "type": [ + "string", + "null" + ] + }, + "provider_transaction_id": { + "description": "Payment provider transaction id", + "example": "0x123...890", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Payout liquidity step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "processing", + "type": "string" + } + }, + "required": [ + "step" + ], + "type": [ + "object", + "null" + ] + }, + "tracking_payment": { + "properties": { + "coelsa_id": { + "description": "COELSA transaction reference ID for ARS transfers (Argentine national banking system)", + "example": "1LMP68NKV46DRDYK2R7OEV", + "type": [ + "string", + "null" + ] + }, + "completed_at": { + "description": "Payment completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "end_to_end_id": { + "description": "BACEN Pix end-to-end transaction ID (govt Pix ID)", + "example": "E20018183202603311320vm6ALFpJpsS", + "type": [ + "string", + "null" + ] + }, + "estimated_time_of_arrival": { + "description": "Estimated time of arrival", + "enum": [ + "5_min", + "5_30_min", + "30_min", + "2_hours", + "1_business_day", + "2_business_days", + "5_business_days" + ], + "example": "5_min", + "type": [ + "string", + "null" + ] + }, + "provider_clearing_system": { + "description": "Clearing system that processed the payment (e.g. FED, CHIPS, ACH, SWIFT).", + "example": "FED", + "maxLength": 40, + "type": [ + "string", + "null" + ] + }, + "provider_error_reason": { + "description": "Provider error reason when payment fails (e.g. invalid_key, wrong_parameters)", + "example": "invalid_key", + "type": [ + "string", + "null" + ] + }, + "provider_imad": { + "description": "Fed Input Message Accountability Data (IMAD). Domestic Fedwire payments only; null on ACH and SWIFT.", + "example": "20260526MMQFMP2M008120", + "maxLength": 120, + "type": [ + "string", + "null" + ] + }, + "provider_integration": { + "description": "Machine-readable integration that executed the fiat leg. Unlike provider_name (a client-facing bank label), this uniquely identifies the integration \u2014 e.g. zenus vs checkbook, which share the \"JPMorgan Chase\" label.", + "enum": [ + "veem", + "zenus", + "checkbook", + "onemoney", + "bitso", + "starkbank", + "triplea", + "infinitus" + ], + "example": "zenus", + "type": [ + "string", + "null" + ] + }, + "provider_name": { + "description": "Payment provider name", + "enum": [ + "Nvio Pagos", + "Brex", + "Stark Bank", + "JPMorgan Chase", + "HSBC", + "Inter", + "JP Morgan Chase", + "Bitso", + "Citi", + "CFSB", + "Triple A Technologies", + "Portage Bank" + ], + "example": "HSBC", + "type": [ + "string", + "null" + ] + }, + "provider_reference": { + "description": "Provider (JPMorgan/Zenus) payment reference captured from the ACCOUNT.ACCOUNT booking webhook (Zenus contractSource.sourceRef). Present for some ACH/wire payouts; a bank-side reference, not the formal ACH network trace number.", + "example": "2084734238TC", + "maxLength": 120, + "type": [ + "string", + "null" + ] + }, + "provider_status": { + "description": "Payment provider status", + "enum": [ + "canceled", + "failed", + "returned", + "sent" + ], + "example": "canceled", + "type": [ + "string", + "null" + ] + }, + "provider_transaction_id": { + "description": "Payment provider transaction id", + "example": "0x123...890", + "type": [ + "string", + "null" + ] + }, + "provider_uetr": { + "description": "Unique end-to-end transaction reference (UETR). Populated once the wire is confirmed by the network; null while the payment is in flight or when the rail does not expose it (e.g. ACH).", + "example": "37d10eff-d450-4aba-a5d4-e3978f5a3343", + "maxLength": 120, + "type": [ + "string", + "null" + ] + }, + "recipient_account_number": { + "description": "Recipient account number", + "example": "1234567890", + "type": [ + "string", + "null" + ] + }, + "recipient_account_type": { + "description": "Recipient account type", + "example": "checking", + "type": [ + "string", + "null" + ] + }, + "recipient_bank_code": { + "description": "Recipient bank code", + "example": "00416968", + "type": [ + "string", + "null" + ] + }, + "recipient_branch_code": { + "description": "Recipient branch code", + "example": "0001", + "type": [ + "string", + "null" + ] + }, + "recipient_name": { + "description": "Recipient name", + "example": "John Doe", + "type": [ + "string", + "null" + ] + }, + "recipient_tax_id": { + "description": "Recipient tax id", + "example": "123.456.789-10", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Payment step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "on_hold", + "type": "string" + } + }, + "required": [ + "step" + ], + "type": "object" + }, + "tracking_transaction": { + "properties": { + "completed_at": { + "description": "Payout transaction completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "ledger_in_transaction_id": { + "description": "Ledger transaction ID for the IN (crypto deposit) transaction", + "type": [ + "string", + "null" + ] + }, + "ledger_out_transaction_id": { + "description": "Ledger transaction ID for the OUT (fiat withdrawal) transaction", + "type": [ + "string", + "null" + ] + }, + "provider_error_reason": { + "description": "Provider error reason when the crypto collection fails (e.g. erc20_allowance_insufficient, ESTIMATION_ERROR: execution reverted)", + "example": "erc20_allowance_insufficient", + "type": [ + "string", + "null" + ] + }, + "provider_transaction_id": { + "description": "Provider-side handle for the on-chain leg (e.g. Circle CPN payment id).", + "example": "67c12eae-b7bc-31cc-a5ef-623dcea82346", + "type": [ + "string", + "null" + ] + }, + "status": { + "description": "Payout transaction status", + "enum": [ + "failed", + "found" + ], + "example": "failed", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Payout transaction step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "processing", + "type": "string" + }, + "transaction_hash": { + "description": "Blockchain transaction hash", + "example": "0x123...890", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "step" + ], + "type": "object" + }, + "transaction_fee_amount": { + "description": "Transaction fee in cents (percentage-based fee)", + "example": 100, + "type": [ + "number", + "null" + ] + }, + "webhook_event": { + "enum": [ + "payout.partnerFee" + ], + "type": "string" + } + }, + "required": [ + "webhook_event", + "id", + "status", + "sender_wallet_address", + "tracking_complete", + "tracking_payment", + "tracking_transaction" + ], + "type": "object" + }, + "PayoutUpdateWebhookOut": { + "properties": { + "bank_account_id": { + "example": "ba_000000000000", + "maxLength": 15, + "minLength": 15, + "type": [ + "string", + "null" + ] + }, + "billing_fee_amount": { + "description": "Billing fee in cents (charged via invoice at the end of the month)", + "example": 50, + "type": [ + "number", + "null" + ] + }, + "customer_id": { + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": [ + "string", + "null" + ] + }, + "id": { + "example": "pa_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "offramp_wallet_id": { + "example": "ow_000000000000", + "maxLength": 15, + "minLength": 15, + "type": [ + "string", + "null" + ] + }, + "partner_fee": { + "default": 0, + "description": "Payout partner fee amount in cents (can be negative for rebates)", + "example": -25000, + "minimum": 0, + "type": "integer" + }, + "sender_wallet_address": { + "description": "Payout wallet address", + "example": "0x123...890", + "type": "string" + }, + "status": { + "description": "Payout general status", + "enum": [ + "processing", + "failed", + "refunded", + "completed", + "on_hold" + ], + "example": "processing", + "type": "string" + }, + "tracking_complete": { + "properties": { + "completed_at": { + "description": "Complete completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "provider_transaction_id": { + "description": "Provider-side handle for the refund transaction (e.g. Circle transaction id)", + "example": "67c12eae-b7bc-31cc-a5ef-623dcea82346", + "type": [ + "string", + "null" + ] + }, + "refund_reason": { + "description": "Reason for refund when tokens are returned to sender", + "example": "fiat_payment_failed", + "type": [ + "string", + "null" + ] + }, + "status": { + "description": "Complete status", + "enum": [ + "tokens_refunded", + "paid" + ], + "example": "tokens_refunded", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Complete step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "on_hold", + "type": "string" + }, + "transaction_hash": { + "description": "Complete transaction hash", + "example": "0x123...890", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "step" + ], + "type": "object" + }, + "tracking_documents": { + "properties": { + "completed_at": { + "description": "Documents completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "reviewed_by": { + "description": "Reviewer email/name", + "example": "compliance@example.com", + "type": [ + "string", + "null" + ] + }, + "status": { + "description": "Documents status", + "enum": [ + "waiting_documents", + "compliance_reviewing" + ], + "example": "waiting_documents", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Documents step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "processing", + "type": "string" + } + }, + "required": [ + "step" + ], + "type": [ + "object", + "null" + ] + }, + "tracking_liquidity": { + "properties": { + "completed_at": { + "description": "Payout transaction completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "estimated_time_of_arrival": { + "description": "Estimated time of arrival", + "enum": [ + "5_min", + "5_30_min", + "30_min", + "2_hours", + "1_business_day", + "2_business_days", + "5_business_days" + ], + "example": "1_business_day", + "type": [ + "string", + "null" + ] + }, + "provider_status": { + "description": "Payment provider status", + "enum": [ + "deposited", + "converted", + "withdrawn" + ], + "example": "deposited", + "type": [ + "string", + "null" + ] + }, + "provider_transaction_id": { + "description": "Payment provider transaction id", + "example": "0x123...890", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Payout liquidity step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "processing", + "type": "string" + } + }, + "required": [ + "step" + ], + "type": [ + "object", + "null" + ] + }, + "tracking_payment": { + "properties": { + "coelsa_id": { + "description": "COELSA transaction reference ID for ARS transfers (Argentine national banking system)", + "example": "1LMP68NKV46DRDYK2R7OEV", + "type": [ + "string", + "null" + ] + }, + "completed_at": { + "description": "Payment completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "end_to_end_id": { + "description": "BACEN Pix end-to-end transaction ID (govt Pix ID)", + "example": "E20018183202603311320vm6ALFpJpsS", + "type": [ + "string", + "null" + ] + }, + "estimated_time_of_arrival": { + "description": "Estimated time of arrival", + "enum": [ + "5_min", + "5_30_min", + "30_min", + "2_hours", + "1_business_day", + "2_business_days", + "5_business_days" + ], + "example": "5_min", + "type": [ + "string", + "null" + ] + }, + "provider_clearing_system": { + "description": "Clearing system that processed the payment (e.g. FED, CHIPS, ACH, SWIFT).", + "example": "FED", + "maxLength": 40, + "type": [ + "string", + "null" + ] + }, + "provider_error_reason": { + "description": "Provider error reason when payment fails (e.g. invalid_key, wrong_parameters)", + "example": "invalid_key", + "type": [ + "string", + "null" + ] + }, + "provider_imad": { + "description": "Fed Input Message Accountability Data (IMAD). Domestic Fedwire payments only; null on ACH and SWIFT.", + "example": "20260526MMQFMP2M008120", + "maxLength": 120, + "type": [ + "string", + "null" + ] + }, + "provider_integration": { + "description": "Machine-readable integration that executed the fiat leg. Unlike provider_name (a client-facing bank label), this uniquely identifies the integration \u2014 e.g. zenus vs checkbook, which share the \"JPMorgan Chase\" label.", + "enum": [ + "veem", + "zenus", + "checkbook", + "onemoney", + "bitso", + "starkbank", + "triplea", + "infinitus" + ], + "example": "zenus", + "type": [ + "string", + "null" + ] + }, + "provider_name": { + "description": "Payment provider name", + "enum": [ + "Nvio Pagos", + "Brex", + "Stark Bank", + "JPMorgan Chase", + "HSBC", + "Inter", + "JP Morgan Chase", + "Bitso", + "Citi", + "CFSB", + "Triple A Technologies", + "Portage Bank" + ], + "example": "HSBC", + "type": [ + "string", + "null" + ] + }, + "provider_reference": { + "description": "Provider (JPMorgan/Zenus) payment reference captured from the ACCOUNT.ACCOUNT booking webhook (Zenus contractSource.sourceRef). Present for some ACH/wire payouts; a bank-side reference, not the formal ACH network trace number.", + "example": "2084734238TC", + "maxLength": 120, + "type": [ + "string", + "null" + ] + }, + "provider_status": { + "description": "Payment provider status", + "enum": [ + "canceled", + "failed", + "returned", + "sent" + ], + "example": "canceled", + "type": [ + "string", + "null" + ] + }, + "provider_transaction_id": { + "description": "Payment provider transaction id", + "example": "0x123...890", + "type": [ + "string", + "null" + ] + }, + "provider_uetr": { + "description": "Unique end-to-end transaction reference (UETR). Populated once the wire is confirmed by the network; null while the payment is in flight or when the rail does not expose it (e.g. ACH).", + "example": "37d10eff-d450-4aba-a5d4-e3978f5a3343", + "maxLength": 120, + "type": [ + "string", + "null" + ] + }, + "recipient_account_number": { + "description": "Recipient account number", + "example": "1234567890", + "type": [ + "string", + "null" + ] + }, + "recipient_account_type": { + "description": "Recipient account type", + "example": "checking", + "type": [ + "string", + "null" + ] + }, + "recipient_bank_code": { + "description": "Recipient bank code", + "example": "00416968", + "type": [ + "string", + "null" + ] + }, + "recipient_branch_code": { + "description": "Recipient branch code", + "example": "0001", + "type": [ + "string", + "null" + ] + }, + "recipient_name": { + "description": "Recipient name", + "example": "John Doe", + "type": [ + "string", + "null" + ] + }, + "recipient_tax_id": { + "description": "Recipient tax id", + "example": "123.456.789-10", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Payment step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "on_hold", + "type": "string" + } + }, + "required": [ + "step" + ], + "type": "object" + }, + "tracking_transaction": { + "properties": { + "completed_at": { + "description": "Payout transaction completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "ledger_in_transaction_id": { + "description": "Ledger transaction ID for the IN (crypto deposit) transaction", + "type": [ + "string", + "null" + ] + }, + "ledger_out_transaction_id": { + "description": "Ledger transaction ID for the OUT (fiat withdrawal) transaction", + "type": [ + "string", + "null" + ] + }, + "provider_error_reason": { + "description": "Provider error reason when the crypto collection fails (e.g. erc20_allowance_insufficient, ESTIMATION_ERROR: execution reverted)", + "example": "erc20_allowance_insufficient", + "type": [ + "string", + "null" + ] + }, + "provider_transaction_id": { + "description": "Provider-side handle for the on-chain leg (e.g. Circle CPN payment id).", + "example": "67c12eae-b7bc-31cc-a5ef-623dcea82346", + "type": [ + "string", + "null" + ] + }, + "status": { + "description": "Payout transaction status", + "enum": [ + "failed", + "found" + ], + "example": "failed", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Payout transaction step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "processing", + "type": "string" + }, + "transaction_hash": { + "description": "Blockchain transaction hash", + "example": "0x123...890", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "step" + ], + "type": "object" + }, + "transaction_fee_amount": { + "description": "Transaction fee in cents (percentage-based fee)", + "example": 100, + "type": [ + "number", + "null" + ] + }, + "webhook_event": { + "enum": [ + "payout.update" + ], + "type": "string" + } + }, + "required": [ + "webhook_event", + "id", + "status", + "sender_wallet_address", + "tracking_complete", + "tracking_payment", + "tracking_transaction" + ], + "type": "object" + }, + "PortalAccessOut": { + "properties": { + "url": { + "example": "https://example.com/webhook", + "format": "uri", + "type": "string" + } + }, + "required": [ + "url" + ], + "type": "object" + }, + "QuoteIn": { + "properties": { + "bank_account_id": { + "example": "ba_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "cover_fees": { + "description": "If true, the sender will cover the fees. If false, the customer will cover the fees.", + "example": true, + "type": [ + "boolean", + "null" + ] + }, + "currency_type": { + "description": "", + "enum": [ + "sender", + "receiver" + ], + "example": "sender", + "type": "string" + }, + "description": { + "example": "Memo code or description, only works with USD and BRL", + "maxLength": 128, + "type": [ + "string", + "null" + ] + }, + "network": { + "description": "Check blindpay available networks", + "enum": [ + "base", + "sepolia", + "arbitrum_sepolia", + "base_sepolia", + "arbitrum", + "polygon", + "polygon_amoy", + "ethereum", + "stellar", + "stellar_testnet", + "tron", + "solana", + "solana_devnet" + ], + "example": "sepolia", + "type": "string" + }, + "partner_fee_id": { + "example": "pf_000000000000", + "maxLength": 15, + "minLength": 15, + "type": [ + "string", + "null" + ] + }, + "refund_wallet_address": { + "description": "Optional wallet address to receive the refund if this payout fails or is refunded. Must be a valid address on the quote network. When omitted, refunds are sent back to the sender wallet address.", + "example": "0xDD6a3aD0949396e57C7738ba8FC1A46A5a1C372C", + "type": [ + "string", + "null" + ] + }, + "request_amount": { + "description": "1000 represents 10.00, 2050 represents 20.50", + "example": 1000, + "minimum": 500, + "type": "integer" + }, + "token": { + "description": "Check blindpay available tokens", + "enum": [ + "USDC", + "USDT", + "USDB" + ], + "example": "USDC", + "type": "string" + } + }, + "required": [ + "bank_account_id", + "currency_type", + "request_amount", + "network", + "token" + ], + "type": "object" + }, + "QuoteOut": { + "properties": { + "billing_fee_amount": { + "description": "Billing fee in cents (charged via invoice at the end of the month)", + "example": 50, + "type": [ + "number", + "null" + ] + }, + "blindpay_quotation": { + "description": "1 USD = 4.85 BRL (commercial quotation - (blindpay taxes))", + "example": 485, + "type": [ + "number", + "null" + ] + }, + "commercial_quotation": { + "description": "1 USD = 4.95 BRL", + "example": 495, + "type": [ + "number", + "null" + ] + }, + "contract": { + "properties": { + "abi": { + "items": { + "description": "Contract abi related to the network you send in request params", + "example": {}, + "properties": {}, + "type": "object" }, - "proof_of_address_doc_file": { - "type": [ - "string", - "null" - ], - "description": "Please upload one document that serve as proof of address, this needs to be the same address as the one provided above. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB." + "type": "array" + }, + "address": { + "description": "Token address related to the network you send in request params", + "example": "0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238", + "type": "string" + }, + "amount": { + "description": "Amount to approve with correct decimal places", + "example": "1000000000000000000", + "type": "string" + }, + "blindpayContractAddress": { + "description": "Blindpay contract address", + "example": "0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238", + "type": "string" + }, + "functionName": { + "description": "Function name from ERC20 smart contract", + "enum": [ + "approve" + ], + "example": "approve", + "type": "string" + }, + "network": { + "properties": { + "chainId": { + "example": 1, + "type": "number" + }, + "name": { + "example": "Ethereum", + "type": "string" + } }, - "ownership_percentage": { - "type": [ - "integer", - "null" - ], - "minimum": 0, - "maximum": 100, - "description": "Ownership percentage of the beneficial owner (0-100)", - "example": 25 + "required": [ + "name", + "chainId" + ], + "type": "object" + } + }, + "required": [ + "abi", + "address", + "functionName", + "blindpayContractAddress", + "amount", + "network" + ], + "type": [ + "object", + "null" + ] + }, + "customer_local_amount": { + "description": "Estimated amount in the currency of recipient bank account", + "example": 1000, + "type": [ + "number", + "null" + ] + }, + "description": { + "example": "Memo code or description, only works with USD and BRL", + "maxLength": 128, + "type": [ + "string", + "null" + ] + }, + "expires_at": { + "description": "Epoch unix timestamp that represents the final datetime to transaction be received on blockchain. For SEPA payouts this may be shorter than the default 5 minute window if Circle CPN returns an earlier expiry.", + "example": 1712958191, + "type": [ + "number", + "null" + ] + }, + "flat_fee": { + "description": "0.5 USDC", + "example": 50, + "type": [ + "number", + "null" + ] + }, + "id": { + "example": "qu_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "partner_fee_amount": { + "default": 0, + "description": "1.5 USDC", + "example": 150, + "type": [ + "number", + "null" + ] + }, + "receiver_amount": { + "description": "52.40 BRL", + "example": 5240, + "type": [ + "number", + "null" + ] + }, + "sender_amount": { + "description": "10.10 USDC needs to be sent to bank account blockchain address", + "example": 1010, + "type": [ + "number", + "null" + ] + } + }, + "required": [ + "id", + "expires_at", + "commercial_quotation", + "blindpay_quotation", + "receiver_amount", + "sender_amount" + ], + "type": "object" + }, + "RecurringItem": { + "properties": { + "amount": { + "description": "Amount in cents for fixed billing", + "example": 5000, + "type": "integer" + }, + "billing_scheme": { + "enum": [ + "fixed", + "metered" + ], + "example": "fixed", + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "description": { + "example": "Premium Support", + "type": "string" + }, + "first_invoice_sequence": { + "description": "Invoice sequence number when this item first becomes due", + "example": 1, + "exclusiveMinimum": 0, + "type": "integer" + }, + "frequency_months": { + "description": "Billing frequency in months (1=monthly, 3=quarterly, etc)", + "example": 1, + "exclusiveMinimum": 0, + "type": "integer" + }, + "id": { + "example": "rc_000000000000", + "type": "string" + }, + "instance_id": { + "example": "in_000000000000", + "type": "string" + }, + "metric_id": { + "example": "approved_individual_customers", + "type": [ + "string", + "null" + ] + }, + "per_unit_amount": { + "description": "Override default rate in cents for metered billing", + "example": 20, + "type": [ + "integer", + "null" + ] + }, + "product_id": { + "example": "pr_000000000000", + "type": [ + "string", + "null" + ] + }, + "product_name": { + "description": "Product name when product_id is set (from stripe product catalog)", + "example": "Swift Addon", + "type": [ + "string", + "null" + ] + }, + "updated_at": { + "format": "date-time", + "type": "string" + } + }, + "required": [ + "id", + "instance_id", + "description", + "amount", + "frequency_months", + "first_invoice_sequence", + "billing_scheme", + "metric_id", + "per_unit_amount", + "product_id" + ], + "type": "object" + }, + "Rfi": { + "properties": { + "created_at": { + "format": "date-time", + "type": "string" + }, + "customer_aiprise_session_id": { + "type": [ + "string", + "null" + ] + }, + "customer_aiprise_user_profile_id": { + "type": [ + "string", + "null" + ] + }, + "customer_id": { + "type": "string" + }, + "customer_kyc_status": { + "type": "string" + }, + "customer_type": { + "enum": [ + "individual", + "business" + ], + "type": "string" + }, + "expires_at": { + "format": "date-time", + "type": "string" + }, + "id": { + "type": "string" + }, + "instance_id": { + "type": "string" + }, + "request": { + "items": { + "$ref": "#/components/schemas/RfiSection" + }, + "maxItems": 20, + "minItems": 1, + "type": "array" + }, + "response": { + "additionalProperties": { + "anyOf": [ + { + "maxLength": 4096, + "type": "string" }, - "title": { - "type": [ - "string", - "null" - ], - "maxLength": 128, - "description": "Job title of the owner", - "example": "CEO" + { + "items": { + "format": "uri", + "type": "string" + }, + "maxItems": 20, + "type": "array" + } + ] + }, + "type": "object" + }, + "status": { + "enum": [ + "pending", + "submitted", + "expired", + "cancelled" + ], + "type": "string" + }, + "submitted_at": { + "format": "date-time", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id", + "customer_id", + "instance_id", + "status", + "request", + "response", + "expires_at", + "submitted_at", + "created_at" + ], + "type": [ + "object", + "null" + ] + }, + "RfiField": { + "properties": { + "aiprise_document_type": { + "enum": [ + "ADDRESS_PROOF_DOCUMENT", + "SOURCE_OF_FUNDS_DOCUMENT", + "BANK_STATEMENT_DOCUMENT", + "USER_SELFIE", + "TAX_CERTIFICATE", + "VISA_DOCUMENT", + "OTHER" + ], + "type": "string" + }, + "items": { + "items": { + "properties": { + "label": { + "type": "string" }, - "tax_type": { - "type": [ - "string", - "null" - ], - "enum": [ - "SSN", - "ITIN" - ], - "description": "Tax identifier type. Mandatory when country is US; must be SSN or ITIN.", - "example": "SSN" + "value": { + "type": "string" } + }, + "required": [ + "label", + "value" + ], + "type": "object" + }, + "type": "array" + }, + "key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "label": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "multiple": { + "type": "boolean" + }, + "regex": { + "maxLength": 512, + "type": "string" + }, + "required": { + "type": "boolean" + } + }, + "required": [ + "key", + "label", + "required" + ], + "type": "object" + }, + "RfiSection": { + "properties": { + "description": { + "maxLength": 4096, + "type": "string" + }, + "fields": { + "items": { + "$ref": "#/components/schemas/RfiField" + }, + "maxItems": 20, + "minItems": 1, + "type": "array" + }, + "supporting_document": { + "format": "uri", + "type": "string" + }, + "title": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "title", + "description", + "fields" + ], + "type": "object" + }, + "SubmitPayoutDocumentsIn": { + "properties": { + "description": { + "description": "Optional payment description/memo (max 128 chars)", + "example": "Payment for services - Invoice #12345", + "maxLength": 128, + "type": "string" + }, + "transaction_document_file": { + "description": "URL to the uploaded document", + "example": "https://example.com/document.pdf", + "format": "uri", + "type": "string" + }, + "transaction_document_id": { + "description": "Document identifier (invoice number, contract ID, etc.)", + "example": "INV-12345", + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "transaction_document_type": { + "description": "Document type", + "enum": [ + "invoice", + "purchase_order", + "delivery_slip", + "contract", + "customs_declaration", + "bill_of_lading", + "others" + ], + "example": "invoice", + "type": "string" + } + }, + "required": [ + "transaction_document_type", + "transaction_document_id", + "transaction_document_file" + ], + "type": "object" + }, + "Success": { + "properties": { + "success": { + "example": true, + "type": "boolean" + } + }, + "required": [ + "success" + ], + "type": "object" + }, + "SwiftCodeItem": { + "properties": { + "bank": { + "example": "BANK OF AMERICA, N.A.", + "type": "string" + }, + "branch": { + "example": "LENDING SERVICES AND OPERATIONS (LSOP)", + "type": "string" + }, + "city": { + "example": "NEW JERSEY", + "type": "string" + }, + "country": { + "example": "United States", + "type": "string" + }, + "countrySlug": { + "example": "united-states", + "type": "string" + }, + "id": { + "example": "416", + "type": "string" + }, + "swiftCode": { + "example": "BOFAUS3NLMA", + "type": "string" + }, + "swiftCodeLink": { + "example": "https://bank.codes/swift-code/united-states/bofaus3nlma/", + "type": "string" + } + }, + "required": [ + "id", + "bank", + "city", + "branch", + "swiftCode", + "swiftCodeLink", + "country", + "countrySlug" + ], + "type": "object" + }, + "SwiftCodeResponse": { + "items": { + "$ref": "#/components/schemas/SwiftCodeItem" + }, + "type": "array" + }, + "TosAcceptWebhookOut": { + "properties": { + "customer_id": { + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": [ + "string", + "null" + ] + }, + "idempotency_key": { + "example": "123e4567-e89b-12d3-a456-426614174000", + "format": "uuid", + "type": "string" + }, + "tos_id": { + "example": "to_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "version": { + "enum": [ + "1.0.0", + "1.0.1" + ], + "example": "1.0.0", + "type": [ + "string", + "null" + ] + }, + "webhook_event": { + "enum": [ + "tos.accept" + ], + "type": "string" + } + }, + "required": [ + "webhook_event", + "tos_id", + "idempotency_key" + ], + "type": "object" + }, + "TransferOut": { + "properties": { + "address": { + "example": "0xDD6a3aD0949396e57C7738ba8FC1A46A5a1C372C", + "maxLength": 64, + "type": [ + "string", + "null" + ] + }, + "created_at": { + "example": "2021-01-01T00:00:00Z", + "format": "date-time", + "type": [ + "string", + "null" + ] + }, + "customer_id": { + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "customer_network": { + "enum": [ + "base", + "sepolia", + "arbitrum_sepolia", + "base_sepolia", + "arbitrum", + "polygon", + "polygon_amoy", + "ethereum", + "stellar", + "stellar_testnet", + "tron", + "solana", + "solana_devnet" + ], + "example": "polygon", + "type": "string" + }, + "customer_token": { + "enum": [ + "USDC", + "USDT", + "USDB" + ], + "example": "USDC", + "type": "string" + }, + "customer_wallet_address": { + "example": "0xDD6a3aD0949396e57C7738ba8FC1A46A5a1C372C", + "maxLength": 64, + "minLength": 32, + "type": "string" + }, + "external_id": { + "example": "your-database-id", + "maxLength": 255, + "type": [ + "string", + "null" + ] + }, + "first_name": { + "example": "John", + "type": [ + "string", + "null" + ] + }, + "id": { + "example": "bl_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "image_url": { + "example": "https://example.com/image.png", + "format": "uri", + "type": [ + "string", + "null" + ] + }, + "instance_id": { + "example": "in_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "last_name": { + "example": "Doe", + "type": [ + "string", + "null" + ] + }, + "legal_name": { + "example": "Company Name Inc.", + "type": [ + "string", + "null" + ] + }, + "network": { + "enum": [ + "base", + "sepolia", + "arbitrum_sepolia", + "base_sepolia", + "arbitrum", + "polygon", + "polygon_amoy", + "ethereum", + "stellar", + "stellar_testnet", + "tron", + "solana", + "solana_devnet" + ], + "example": "polygon", + "type": "string" + }, + "partner_fee_amount": { + "default": 0, + "description": "1.5 USDC", + "example": 150, + "type": [ + "number", + "null" + ] + }, + "receiver_amount": { + "description": "10.10 USDC", + "example": 1010, + "type": "number" + }, + "sender_amount": { + "description": "52.40 BRL needs to be sent in a pix transfer", + "example": 5240, + "type": "number" + }, + "sender_token": { + "enum": [ + "USDC", + "USDT", + "USDB" + ], + "example": "USDC", + "type": "string" + }, + "status": { + "description": "Transfer general status", + "enum": [ + "processing", + "failed", + "refunded", + "completed" + ], + "example": "processing", + "type": "string" + }, + "tracking_bridge_swap": { + "properties": { + "completed_at": { + "description": "Complete completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "error_message": { + "example": "Gas fee is too low", + "type": [ + "string", + "null" + ] + }, + "gas_fee": { + "description": "Gas fee related to transaction", + "example": "100", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Complete step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "on_hold", + "type": "string" + }, + "transaction_hash": { + "description": "Complete transaction hash", + "example": "0x123...890", + "type": [ + "string", + "null" + ] } }, - "description": "Customer owners", - "example": [ - { - "id": "ub_000000000000", - "first_name": "John", - "last_name": "Doe", - "address_line_1": "738 Plain St", - "address_line_2": "Building 22", - "city": "Marshfield", - "state_province_region": "MA", - "country": "US", - "postal_code": "02050", - "id_doc_country": "BR", - "id_doc_type": "PASSPORT", - "id_doc_front_file": "https://example.com/image.png", - "id_doc_back_file": "https://example.com/image.png" - } - ] - }, - "incorporation_doc_file": { - "type": [ - "string", - "null" - ], - "description": "Please upload your articles of incorporation below. The articles of incorporation or a certificate of incorporation usually includes information like the company name, business purpose, number of shares offered, value of shares, etc. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", - "example": "https://example.com/image.png" - }, - "proof_of_ownership_doc_file": { - "type": [ - "string", - "null" + "required": [ + "step" ], - "description": "Please upload your proof of ownership below. This document usually includes information like the shareholders names and percentages. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", - "example": "https://example.com/image.png" + "type": "object" }, - "source_of_funds_doc_type": { - "type": [ - "string", - "null" - ], - "enum": [ - "business_income", - "gambling_proceeds", - "gifts", - "government_benefits", - "inheritance", - "investment_loans", - "pension_retirement", - "salary", - "sale_of_assets_real_estate", - "savings", - "esops", - "investment_proceeds", - "someone_else_funds" + "tracking_complete": { + "properties": { + "completed_at": { + "description": "Complete completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "error_message": { + "example": "Gas fee is too low", + "type": [ + "string", + "null" + ] + }, + "gas_fee": { + "description": "Gas fee related to transaction", + "example": "100", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Complete step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "on_hold", + "type": "string" + }, + "transaction_hash": { + "description": "Complete transaction hash", + "example": "0x123...890", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "step" ], - "example": "business_income" + "type": "object" }, - "source_of_funds_doc_file": { - "type": [ - "string", - "null" + "tracking_paymaster": { + "properties": { + "completed_at": { + "description": "Complete completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "error_message": { + "example": "Gas fee is too low", + "type": [ + "string", + "null" + ] + }, + "gas_fee": { + "description": "Gas fee related to transaction", + "example": "100", + "type": [ + "string", + "null" + ] + }, + "step": { + "description": "Complete step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "on_hold", + "type": "string" + }, + "transaction_hash": { + "description": "Complete transaction hash", + "example": "0x123...890", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "step" ], - "example": "https://example.com/image.png" + "type": "object" }, - "selfie_file": { - "type": [ - "string", - "null" + "tracking_transaction_monitoring": { + "properties": { + "blockchain_screening": { + "description": "Blindpay screening step", + "example": 1, + "maximum": 100, + "minimum": 0, + "type": [ + "number", + "null" + ] + }, + "completed_at": { + "description": "Transfer transaction completed date", + "example": "2011-10-05T14:48:00.000Z", + "type": [ + "string", + "null" + ] + }, + "risk_score": { + "description": "Risk score", + "example": 1, + "maximum": 100, + "minimum": 0, + "type": [ + "number", + "null" + ] + }, + "step": { + "description": "Transaction monitoring step", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "example": "processing", + "type": "string" + } + }, + "required": [ + "step" ], - "description": "Only image files are accepted (.jpg, .jpeg, .png)", - "example": "https://example.com/image.png" + "type": "object" }, - "purpose_of_transactions": { - "type": [ - "string", - "null" - ], - "enum": [ - "business_transactions", - "charitable_donations", - "investment_purposes", - "payments_to_friends_or_family_abroad", - "personal_or_living_expenses", - "protect_wealth", - "purchase_good_and_services", - "receive_payment_for_freelancing", - "receive_salary", - "other" - ], - "example": "business_transactions" + "transfer_quote_id": { + "example": "pq_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" }, - "purpose_of_transactions_explanation": { + "updated_at": { + "example": "2021-01-01T00:00:00Z", + "format": "date-time", "type": [ "string", "null" - ], - "example": "I am a business owner and I want to receive payments from my customers" - }, - "is_fbo": { - "type": [ - "boolean", - "null" - ], - "example": false + ] }, + "wallet_id": { + "example": "bl_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + } + }, + "required": [ + "id", + "status", + "transfer_quote_id", + "instance_id", + "tracking_transaction_monitoring", + "tracking_paymaster", + "tracking_bridge_swap", + "tracking_complete", + "wallet_id", + "sender_token", + "sender_amount", + "receiver_amount", + "customer_network", + "customer_token", + "customer_wallet_address", + "customer_id", + "network" + ], + "type": "object" + }, + "UpdateCustomerIn": { + "properties": { "account_purpose": { - "type": [ - "string", - "null" - ], "enum": [ "charitable_donations", "ecommerce_retail_payments", @@ -32255,45 +32671,71 @@ "treasury_management", "other" ], - "example": "treasury_management" + "example": "treasury_management", + "type": [ + "string", + "null" + ] }, "account_purpose_other": { + "description": "Required when account_purpose is \"other\". Max 512 characters.", + "example": "Custom account purpose description", + "maxLength": 512, "type": [ "string", "null" + ] + }, + "additional_info": { + "description": "Optional extra documents or notes for this customer. `label` is a known category, `value` is either a URL to upload or a free-text description. Any URLs are downloaded and re-hosted on Blindpay storage before being stored.", + "example": [ + { + "label": "EIN_LETTER", + "value": "https://example.com/ein.pdf" + }, + { + "label": "FLOW_OF_FUNDS", + "value": "Funds originate from US payroll deposits, forwarded weekly to customer." + } ], - "maxLength": 512, - "description": "Required when account_purpose is \"other\". Max 512 characters.", - "example": "Custom account purpose description" + "items": { + "$ref": "#/components/schemas/AdditionalInfoItem" + }, + "type": [ + "array", + "null" + ] }, - "business_type": { + "address_line_1": { + "example": "738 Plain St", "type": [ "string", "null" - ], - "enum": [ - "corporation", - "llc", - "partnership", - "sole_proprietorship", - "trust", - "non_profit" - ], - "example": "llc" + ] }, - "business_description": { + "address_line_2": { + "example": "Building 22", "type": [ "string", "null" - ], - "maxLength": 1000, - "example": "Software development company" + ] }, - "business_industry": { + "alternate_name": { + "example": "Company Name Inc.", "type": [ "string", "null" - ], + ] + }, + "business_description": { + "example": "Software development company", + "maxLength": 1000, + "type": [ + "string", + "null" + ] + }, + "business_industry": { "enum": [ "111998", "112120", @@ -32440,247 +32882,35 @@ "541214", "561499" ], - "example": "541511" - }, - "estimated_annual_revenue": { + "example": "541511", "type": [ "string", "null" - ], - "enum": [ - "0_99999", - "100000_999999", - "1000000_9999999", - "10000000_49999999", - "50000000_249999999", - "250000000_plus" - ], - "example": "1000000_9999999" + ] }, - "source_of_wealth": { - "type": [ - "string", - "null" - ], + "business_type": { "enum": [ - "business_dividends_or_profits", - "investments", - "asset_sales", - "client_investor_contributions", - "gambling", - "charitable_contributions", - "inheritance", - "affiliate_or_royalty_income" - ], - "example": "affiliate_or_royalty_income" - }, - "publicly_traded": { - "type": [ - "boolean", - "null" - ], - "example": false - }, - "occupation": { - "type": [ - "string", - "null" - ], - "maxLength": 255, - "example": "Software Engineer" - }, - "external_id": { - "type": [ - "string", - "null" - ], - "example": "your_company_external_id" - }, - "instance_id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "in_000000000000" - }, - "tos_id": { - "type": [ - "string", - "null" + "corporation", + "llc", + "partnership", + "sole_proprietorship", + "trust", + "non_profit" ], - "minLength": 15, - "maxLength": 15, - "example": "to_000000000000" - }, - "aml_status": { + "example": "llc", "type": [ "string", "null" - ], - "enum": [ - "clear", - "hit", - "error" - ], - "description": "AML screening status from SEON. null = not yet screened.", - "example": "clear" - }, - "aml_hits": { - "type": [ - "object", - "null" - ], - "properties": { - "has_sanction_match": { - "type": "boolean", - "default": false - }, - "has_pep_match": { - "type": "boolean", - "default": false - }, - "has_watchlist_match": { - "type": "boolean", - "default": false - }, - "has_crimelist_match": { - "type": "boolean", - "default": false - }, - "has_adversemedia_match": { - "type": "boolean", - "default": false - } - }, - "description": "AML screening match details from SEON.", - "example": { - "has_sanction_match": false, - "has_pep_match": false, - "has_watchlist_match": false, - "has_crimelist_match": false, - "has_adversemedia_match": false - } - }, - "created_at": { - "example": "2021-01-01T00:00:00Z" - }, - "updated_at": { - "example": "2021-01-01T00:00:00Z" - }, - "limit": { - "type": "object", - "properties": { - "per_transaction": { - "type": [ - "number", - "null" - ], - "example": 100000 - }, - "daily": { - "type": [ - "number", - "null" - ], - "example": 200000 - }, - "monthly": { - "type": [ - "number", - "null" - ], - "example": 1000000 - } - }, - "required": [ - "per_transaction", - "daily", - "monthly" - ] - }, - "is_tos_accepted": { - "type": [ - "boolean", - "null" ] }, - "additional_info": { - "type": [ - "array", - "null" - ], - "items": { - "$ref": "#/components/schemas/AdditionalInfoItem" - }, - "description": "Optional extra documents or notes for this customer. `label` is a known category, `value` is either a URL to upload or a free-text description. Any URLs are downloaded and re-hosted on Blindpay storage before being stored.", - "example": [ - { - "label": "EIN_LETTER", - "value": "https://example.com/ein.pdf" - }, - { - "label": "FLOW_OF_FUNDS", - "value": "Funds originate from US payroll deposits, forwarded weekly to customer." - } - ] - } - }, - "required": [ - "id", - "customer_id", - "type", - "kyc_type", - "kyc_status", - "email", - "country", - "instance_id", - "limit" - ] - }, - "UpdateCustomerIn": { - "type": "object", - "properties": { - "email": { - "type": "string", - "format": "email", - "example": "email@example.com" - }, - "tax_id": { - "type": [ - "string", - "null" - ], - "example": "536804398" - }, - "address_line_1": { - "type": [ - "string", - "null" - ], - "example": "738 Plain St" - }, - "address_line_2": { - "type": [ - "string", - "null" - ], - "example": "Building 22" - }, "city": { + "example": "Marshfield", "type": [ "string", "null" - ], - "example": "Marshfield" - }, - "state_province_region": { - "type": [ - "string", - "null" - ], - "example": "MA" + ] }, "country": { - "type": "string", "enum": [ "AF", "AL", @@ -32932,100 +33162,63 @@ "ZW", "AX" ], - "example": "US" - }, - "postal_code": { - "type": [ - "string", - "null" - ], - "example": "02050" - }, - "ip_address": { - "type": [ - "string", - "null" - ], - "format": "ip", - "example": "127.0.0.1" - }, - "latitude": { - "type": [ - "number", - "null" - ], - "minimum": -90, - "maximum": 90, - "description": "Optional geolocation latitude collected from the customer. Forwarded to AiPrise and SEON for fraud analysis.", - "example": 37.7749 - }, - "longitude": { - "type": [ - "number", - "null" - ], - "minimum": -180, - "maximum": 180, - "description": "Optional geolocation longitude collected from the customer. Forwarded to AiPrise and SEON for fraud analysis.", - "example": -122.4194 + "example": "US", + "type": "string" }, - "image_url": { - "type": [ - "string", - "null" + "date_of_birth": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "string" + }, + { + "type": "null" + } ], - "format": "uri", - "example": "https://example.com/image.png" + "example": "1998-01-01T00:00:00Z" }, - "phone_number": { - "type": [ - "string", - "null" - ], - "example": "+13055555555" + "email": { + "example": "email@example.com", + "format": "email", + "type": "string" }, - "proof_of_address_doc_type": { - "type": [ - "string", - "null" - ], + "estimated_annual_revenue": { "enum": [ - "UTILITY_BILL", - "BANK_STATEMENT", - "RENTAL_AGREEMENT", - "TAX_DOCUMENT", - "GOVERNMENT_CORRESPONDENCE" + "0_99999", + "100000_999999", + "1000000_9999999", + "10000000_49999999", + "50000000_249999999", + "250000000_plus" ], - "example": "UTILITY_BILL" - }, - "proof_of_address_doc_file": { + "example": "1000000_9999999", "type": [ "string", "null" - ], - "format": "uri", - "description": "Please upload one document that serve as proof of address, this needs to be the same physical address as the one provided above. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", - "example": "https://example.com/image.png" + ] }, - "first_name": { + "external_id": { + "example": "your_company_external_id", "type": [ "string", "null" - ], - "example": "John" + ] }, - "last_name": { + "first_name": { + "example": "John", "type": [ "string", "null" - ], - "example": "Doe" + ] }, - "date_of_birth": { + "formation_date": { "anyOf": [ { - "type": "string", - "format": "date-time" + "format": "date-time", + "type": "string" }, { "type": "string" @@ -33034,13 +33227,19 @@ "type": "null" } ], - "example": "1998-01-01T00:00:00Z" + "example": "1998-01-01T00:00:00Z", + "format": "date-time" }, - "id_doc_country": { + "id_doc_back_file": { + "description": "Only image files are accepted (.jpg, .jpeg, .png)", + "example": "https://example.com/image.png", + "format": "uri", "type": [ "string", "null" - ], + ] + }, + "id_doc_country": { "enum": [ "AF", "AL", @@ -33292,141 +33491,119 @@ "ZW", "AX" ], - "example": "BR" + "example": "BR", + "type": [ + "string", + "null" + ] }, - "id_doc_type": { + "id_doc_front_file": { + "description": "Only image files are accepted (.jpg, .jpeg, .png)", + "example": "https://example.com/image.png", + "format": "uri", "type": [ "string", "null" - ], + ] + }, + "id_doc_type": { "enum": [ "PASSPORT", "ID_CARD", "DRIVERS" ], - "example": "PASSPORT" - }, - "id_doc_front_file": { + "example": "PASSPORT", "type": [ "string", "null" - ], - "format": "uri", - "description": "Only image files are accepted (.jpg, .jpeg, .png)", - "example": "https://example.com/image.png" + ] }, - "id_doc_back_file": { + "image_url": { + "example": "https://example.com/image.png", + "format": "uri", "type": [ "string", "null" - ], + ] + }, + "incorporation_doc_file": { + "description": "Please upload your articles of incorporation below. The articles of incorporation or a certificate of incorporation usually includes information like the company name, business purpose, number of shares offered, value of shares, etc. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", + "example": "https://example.com/image.png", "format": "uri", - "description": "Only image files are accepted (.jpg, .jpeg, .png)", - "example": "https://example.com/image.png" + "type": [ + "string", + "null" + ] }, - "legal_name": { + "ip_address": { + "example": "127.0.0.1", + "format": "ip", "type": [ "string", "null" - ], - "example": "Company Name Inc." + ] }, - "alternate_name": { + "last_name": { + "example": "Doe", "type": [ "string", "null" - ], - "example": "Company Name Inc." + ] }, - "formation_date": { - "anyOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "type": "string" - }, - { - "type": "null" - } - ], - "example": "1998-01-01T00:00:00Z", - "format": "date-time" + "latitude": { + "description": "Optional geolocation latitude collected from the customer. Forwarded to AiPrise and SEON for fraud analysis.", + "example": 37.7749, + "maximum": 90, + "minimum": -90, + "type": [ + "number", + "null" + ] }, - "website": { + "legal_name": { + "example": "Company Name Inc.", "type": [ "string", "null" - ], - "format": "uri", - "example": "https://example.com" + ] }, - "owners": { + "longitude": { + "description": "Optional geolocation longitude collected from the customer. Forwarded to AiPrise and SEON for fraud analysis.", + "example": -122.4194, + "maximum": 180, + "minimum": -180, "type": [ - "array", + "number", "null" - ], + ] + }, + "occupation": { + "example": "Software Engineer", + "maxLength": 255, + "type": [ + "string", + "null" + ] + }, + "owners": { "items": { - "type": "object", "properties": { - "role": { - "type": "string", - "enum": [ - "beneficial_controlling", - "beneficial_owner", - "controlling_person" - ], - "description": "A beneficial owner is someone who directly or indirectly owns 25% or more of your business. A controlling person is someone with significant responsibility to control, manage or direct your business (typically a CEO, senior executive officer or equivalent).", - "example": "beneficial_owner" - }, - "first_name": { - "type": "string", - "minLength": 1, - "example": "John" - }, - "last_name": { - "type": "string", - "minLength": 1, - "example": "Doe" - }, - "date_of_birth": { - "anyOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "type": "string" - } - ], - "example": "1998-01-01T00:00:00Z" - }, - "tax_id": { - "type": "string", - "example": "536804398" - }, "address_line_1": { - "type": "string", - "example": "738 Plain St" + "example": "738 Plain St", + "type": "string" }, "address_line_2": { + "example": "Building 22", "type": [ "string", "null" - ], - "example": "Building 22" + ] }, "city": { - "type": "string", - "example": "Marshfield" - }, - "state_province_region": { - "type": "string", - "example": "MA" + "example": "Marshfield", + "type": "string" }, "country": { - "type": "string", "enum": [ "AF", "AL", @@ -33678,14 +33855,40 @@ "ZW", "AX" ], - "example": "US" + "example": "US", + "type": "string" }, - "postal_code": { - "type": "string", - "example": "02050" + "date_of_birth": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "string" + } + ], + "example": "1998-01-01T00:00:00Z" + }, + "first_name": { + "example": "John", + "minLength": 1, + "type": "string" + }, + "id": { + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "id_doc_back_file": { + "description": "Only image files are accepted (.jpg, .jpeg, .png)", + "format": "uri", + "type": [ + "string", + "null" + ] }, "id_doc_country": { - "type": "string", "enum": [ "AF", "AL", @@ -33937,34 +34140,50 @@ "ZW", "AX" ], - "example": "BR" + "example": "BR", + "type": "string" + }, + "id_doc_front_file": { + "format": "uri", + "type": "string" }, "id_doc_type": { - "type": "string", "enum": [ "PASSPORT", "ID_CARD", "DRIVERS" ], - "example": "PASSPORT" + "example": "PASSPORT", + "type": "string" }, - "id_doc_front_file": { - "type": "string", - "format": "uri" + "last_name": { + "example": "Doe", + "minLength": 1, + "type": "string" }, - "id_doc_back_file": { + "ownership_percentage": { + "description": "Ownership percentage of the beneficial owner (0-100)", + "example": 25, + "maximum": 100, + "minimum": 0, "type": [ - "string", + "integer", "null" - ], - "format": "uri", - "description": "Only image files are accepted (.jpg, .jpeg, .png)" + ] }, - "proof_of_address_doc_type": { + "postal_code": { + "example": "02050", + "type": "string" + }, + "proof_of_address_doc_file": { + "description": "Please upload one document that serve as proof of address, this needs to be the same address as the one provided above. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", + "format": "uri", "type": [ "string", "null" - ], + ] + }, + "proof_of_address_doc_type": { "enum": [ "UTILITY_BILL", "BANK_STATEMENT", @@ -33972,912 +34191,341 @@ "TAX_DOCUMENT", "GOVERNMENT_CORRESPONDENCE" ], - "example": "UTILITY_BILL" - }, - "proof_of_address_doc_file": { + "example": "UTILITY_BILL", "type": [ "string", "null" - ], - "format": "uri", - "description": "Please upload one document that serve as proof of address, this needs to be the same address as the one provided above. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB." + ] }, - "ownership_percentage": { - "type": [ - "integer", - "null" + "role": { + "description": "A beneficial owner is someone who directly or indirectly owns 25% or more of your business. A controlling person is someone with significant responsibility to control, manage or direct your business (typically a CEO, senior executive officer or equivalent).", + "enum": [ + "beneficial_controlling", + "beneficial_owner", + "controlling_person" ], - "minimum": 0, - "maximum": 100, - "description": "Ownership percentage of the beneficial owner (0-100)", - "example": 25 + "example": "beneficial_owner", + "type": "string" }, - "title": { - "type": [ - "string", - "null" - ], - "maxLength": 128, - "description": "Job title of the owner", - "example": "CEO" + "state_province_region": { + "example": "MA", + "type": "string" + }, + "tax_id": { + "example": "536804398", + "type": "string" }, "tax_type": { - "type": [ - "string", - "null" - ], + "description": "Tax identifier type. Mandatory when country is US; must be SSN or ITIN.", "enum": [ "SSN", "ITIN" ], - "description": "Tax identifier type. Mandatory when country is US; must be SSN or ITIN.", - "example": "SSN" + "example": "SSN", + "type": [ + "string", + "null" + ] }, - "id": { - "type": "string", - "minLength": 15, - "maxLength": 15 + "title": { + "description": "Job title of the owner", + "example": "CEO", + "maxLength": 128, + "type": [ + "string", + "null" + ] } }, "required": [ "id" - ] - } - }, - "incorporation_doc_file": { - "type": [ - "string", - "null" - ], - "format": "uri", - "description": "Please upload your articles of incorporation below. The articles of incorporation or a certificate of incorporation usually includes information like the company name, business purpose, number of shares offered, value of shares, etc. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", - "example": "https://example.com/image.png" - }, - "proof_of_ownership_doc_file": { - "type": [ - "string", - "null" - ], - "format": "uri", - "description": "Please upload your proof of ownership below. This document usually includes information like the shareholders names and percentages. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", - "example": "https://example.com/image.png" - }, - "source_of_funds_doc_type": { - "type": [ - "string", - "null" - ], - "enum": [ - "business_income", - "gambling_proceeds", - "gifts", - "government_benefits", - "inheritance", - "investment_loans", - "pension_retirement", - "salary", - "sale_of_assets_real_estate", - "savings", - "esops", - "investment_proceeds", - "someone_else_funds" - ], - "example": "business_income" - }, - "source_of_funds_doc_file": { - "type": [ - "string", - "null" - ], - "format": "uri", - "example": "https://example.com/image.png" - }, - "selfie_file": { - "type": [ - "string", - "null" - ], - "format": "uri", - "description": "Only image files are accepted (.jpg, .jpeg, .png)", - "example": "https://example.com/image.png" - }, - "purpose_of_transactions": { - "type": [ - "string", - "null" - ], - "enum": [ - "business_transactions", - "charitable_donations", - "investment_purposes", - "payments_to_friends_or_family_abroad", - "personal_or_living_expenses", - "protect_wealth", - "purchase_good_and_services", - "receive_payment_for_freelancing", - "receive_salary", - "other" - ], - "example": "business_transactions" - }, - "purpose_of_transactions_explanation": { - "type": [ - "string", - "null" - ], - "example": "I am a business owner and I want to receive payments from my customers" - }, - "account_purpose": { - "type": [ - "string", - "null" - ], - "enum": [ - "charitable_donations", - "ecommerce_retail_payments", - "investment_purposes", - "business_expenses", - "payments_to_friends_or_family_abroad", - "personal_or_living_expenses", - "protect_wealth", - "purchase_goods_and_services", - "receive_payments_for_goods_and_services", - "tax_optimization", - "third_party_money_transmission", - "payroll", - "treasury_management", - "other" - ], - "example": "treasury_management" - }, - "account_purpose_other": { - "type": [ - "string", - "null" - ], - "maxLength": 512, - "description": "Required when account_purpose is \"other\". Max 512 characters.", - "example": "Custom account purpose description" - }, - "business_type": { - "type": [ - "string", - "null" - ], - "enum": [ - "corporation", - "llc", - "partnership", - "sole_proprietorship", - "trust", - "non_profit" - ], - "example": "llc" - }, - "business_description": { - "type": [ - "string", - "null" - ], - "maxLength": 1000, - "example": "Software development company" - }, - "business_industry": { - "type": [ - "string", - "null" - ], - "enum": [ - "111998", - "112120", - "113310", - "115114", - "541211", - "541810", - "541430", - "541715", - "541930", - "561422", - "561311", - "561612", - "561740", - "561730", - "236115", - "236220", - "237310", - "238210", - "811111", - "812111", - "812112", - "532111", - "624410", - "541922", - "811210", - "812199", - "611110", - "611310", - "611410", - "611710", - "211120", - "212114", - "221310", - "562111", - "562920", - "213112", - "522110", - "522210", - "522320", - "523150", - "523940", - "523999", - "524113", - "813110", - "813211", - "813219", - "551112", - "721110", - "722511", - "722513", - "561510", - "713110", - "713210", - "712110", - "711110", - "711211", - "621111", - "621210", - "622110", - "623110", - "621511", - "623220", - "541940", - "621399", - "621910", - "541110", - "311421", - "337121", - "322220", - "339920", - "334210", - "339930", - "312130", - "334111", - "334118", - "325412", - "339112", - "336110", - "336390", - "315990", - "313110", - "339910", - "516120", - "513130", - "512250", - "519130", - "711410", - "711510", - "531110", - "531120", - "531130", - "531190", - "531210", - "531311", - "531312", - "531320", - "531390", - "454110", - "445110", - "455110", - "457110", - "449210", - "444110", - "459210", - "459120", - "445320", - "458110", - "458210", - "458310", - "455219", - "424210", - "456110", - "446120", - "541511", - "541512", - "541519", - "518210", - "511210", - "517111", - "517112", - "517410", - "481111", - "483111", - "485210", - "488510", - "484121", - "493110", - "423430", - "423690", - "423110", - "423830", - "423840", - "423510", - "424690", - "424990", - "424410", - "424480", - "423940", - "541611", - "541618", - "541330", - "541990", - "541214", - "561499" - ], - "example": "541511" - }, - "estimated_annual_revenue": { - "type": [ - "string", - "null" - ], - "enum": [ - "0_99999", - "100000_999999", - "1000000_9999999", - "10000000_49999999", - "50000000_249999999", - "250000000_plus" - ], - "example": "1000000_9999999" - }, - "source_of_wealth": { - "type": [ - "string", - "null" - ], - "enum": [ - "business_dividends_or_profits", - "investments", - "asset_sales", - "client_investor_contributions", - "gambling", - "charitable_contributions", - "inheritance", - "affiliate_or_royalty_income" - ], - "example": "affiliate_or_royalty_income" - }, - "publicly_traded": { - "type": [ - "boolean", - "null" - ], - "example": false - }, - "occupation": { - "type": [ - "string", - "null" - ], - "maxLength": 255, - "example": "Software Engineer" - }, - "external_id": { - "type": [ - "string", - "null" - ], - "example": "your_company_external_id" - }, - "tos_id": { - "type": [ - "string", - "null" - ], - "minLength": 15, - "maxLength": 15, - "example": "to_000000000000" - }, - "additional_info": { - "type": [ - "array", - "null" - ], - "items": { - "$ref": "#/components/schemas/AdditionalInfoItem" - }, - "description": "Optional extra documents or notes for this customer. `label` is a known category, `value` is either a URL to upload or a free-text description. Any URLs are downloaded and re-hosted on Blindpay storage before being stored.", - "example": [ - { - "label": "EIN_LETTER", - "value": "https://example.com/ein.pdf" - }, - { - "label": "FLOW_OF_FUNDS", - "value": "Funds originate from US payroll deposits, forwarded weekly to customer." - } - ] - } - }, - "required": [ - "email", - "country" - ] - }, - "GetCustomerLimitsOut": { - "type": "object", - "properties": { - "limits": { - "type": "object", - "properties": { - "payin": { - "type": "object", - "properties": { - "daily": { - "type": "number" - }, - "monthly": { - "type": "number" - } - }, - "required": [ - "daily", - "monthly" - ] - }, - "payout": { - "type": "object", - "properties": { - "daily": { - "type": "number" - }, - "monthly": { - "type": "number" - } - }, - "required": [ - "daily", - "monthly" - ] - } - }, - "required": [ - "payin", - "payout" - ] - } - }, - "required": [ - "limits" - ], - "example": { - "limits": { - "payin": { - "daily": 500000, - "monthly": 2000000 + ], + "type": "object" }, - "payout": { - "daily": 300000, - "monthly": 1000000 - } - } - } - }, - "RfiField": { - "type": "object", - "properties": { - "key": { - "type": "string", - "minLength": 1, - "maxLength": 128 - }, - "label": { - "type": "string", - "minLength": 1, - "maxLength": 256 - }, - "regex": { - "type": "string", - "maxLength": 512 - }, - "required": { - "type": "boolean" - }, - "items": { - "type": "array", - "items": { - "type": "object", - "properties": { - "label": { - "type": "string" - }, - "value": { - "type": "string" - } - }, - "required": [ - "label", - "value" - ] - } - }, - "multiple": { - "type": "boolean" - }, - "aiprise_document_type": { - "type": "string", - "enum": [ - "ADDRESS_PROOF_DOCUMENT", - "SOURCE_OF_FUNDS_DOCUMENT", - "BANK_STATEMENT_DOCUMENT", - "USER_SELFIE", - "TAX_CERTIFICATE", - "VISA_DOCUMENT", - "OTHER" + "type": [ + "array", + "null" ] - } - }, - "required": [ - "key", - "label", - "required" - ] - }, - "RfiSection": { - "type": "object", - "properties": { - "title": { - "type": "string", - "minLength": 1, - "maxLength": 256 - }, - "description": { - "type": "string", - "maxLength": 4096 }, - "supporting_document": { - "type": "string", - "format": "uri" - }, - "fields": { - "type": "array", - "items": { - "$ref": "#/components/schemas/RfiField" - }, - "minItems": 1, - "maxItems": 20 - } - }, - "required": [ - "title", - "description", - "fields" - ] - }, - "Rfi": { - "type": [ - "object", - "null" - ], - "properties": { - "id": { - "type": "string" + "phone_number": { + "example": "+13055555555", + "type": [ + "string", + "null" + ] }, - "customer_id": { - "type": "string" + "postal_code": { + "example": "02050", + "type": [ + "string", + "null" + ] }, - "instance_id": { - "type": "string" + "proof_of_address_doc_file": { + "description": "Please upload one document that serve as proof of address, this needs to be the same physical address as the one provided above. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", + "example": "https://example.com/image.png", + "format": "uri", + "type": [ + "string", + "null" + ] }, - "status": { - "type": "string", + "proof_of_address_doc_type": { "enum": [ - "pending", - "submitted", - "expired", - "cancelled" + "UTILITY_BILL", + "BANK_STATEMENT", + "RENTAL_AGREEMENT", + "TAX_DOCUMENT", + "GOVERNMENT_CORRESPONDENCE" + ], + "example": "UTILITY_BILL", + "type": [ + "string", + "null" ] }, - "request": { - "type": "array", - "items": { - "$ref": "#/components/schemas/RfiSection" - }, - "minItems": 1, - "maxItems": 20 - }, - "response": { - "type": "object", - "additionalProperties": { - "anyOf": [ - { - "type": "string", - "maxLength": 4096 - }, - { - "type": "array", - "items": { - "type": "string", - "format": "uri" - }, - "maxItems": 20 - } - ] - } - }, - "expires_at": { - "type": "string", - "format": "date-time" - }, - "submitted_at": { + "proof_of_ownership_doc_file": { + "description": "Please upload your proof of ownership below. This document usually includes information like the shareholders names and percentages. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", + "example": "https://example.com/image.png", + "format": "uri", "type": [ "string", "null" - ], - "format": "date-time" + ] }, - "created_at": { - "type": "string", - "format": "date-time" + "publicly_traded": { + "example": false, + "type": [ + "boolean", + "null" + ] }, - "customer_type": { - "type": "string", + "purpose_of_transactions": { "enum": [ - "individual", - "business" + "business_transactions", + "charitable_donations", + "investment_purposes", + "payments_to_friends_or_family_abroad", + "personal_or_living_expenses", + "protect_wealth", + "purchase_good_and_services", + "receive_payment_for_freelancing", + "receive_salary", + "other" + ], + "example": "business_transactions", + "type": [ + "string", + "null" ] }, - "customer_aiprise_session_id": { + "purpose_of_transactions_explanation": { + "example": "I am a business owner and I want to receive payments from my customers", "type": [ "string", "null" ] }, - "customer_aiprise_user_profile_id": { + "selfie_file": { + "description": "Only image files are accepted (.jpg, .jpeg, .png)", + "example": "https://example.com/image.png", + "format": "uri", "type": [ "string", "null" ] }, - "customer_kyc_status": { - "type": "string" - } - }, - "required": [ - "id", - "customer_id", - "instance_id", - "status", - "request", - "response", - "expires_at", - "submitted_at", - "created_at" - ] - }, - "InstanceRfi": { - "type": [ - "object", - "null" - ], - "properties": { - "id": { - "type": "string" - }, - "instance_id": { - "type": "string" - }, - "status": { - "type": "string", - "enum": [ - "pending", - "submitted", - "expired", - "cancelled" + "source_of_funds_doc_file": { + "example": "https://example.com/image.png", + "format": "uri", + "type": [ + "string", + "null" ] }, - "request": { - "type": "array", - "items": { - "$ref": "#/components/schemas/RfiSection" - }, - "minItems": 1, - "maxItems": 20 - }, - "response": { - "type": "object", - "additionalProperties": { - "anyOf": [ - { - "type": "string", - "maxLength": 4096 - }, - { - "type": "array", - "items": { - "type": "string", - "format": "uri" - }, - "maxItems": 20 - } - ] - } - }, - "expires_at": { - "type": "string", - "format": "date-time" - }, - "submitted_at": { + "source_of_funds_doc_type": { + "enum": [ + "business_income", + "gambling_proceeds", + "gifts", + "government_benefits", + "inheritance", + "investment_loans", + "pension_retirement", + "salary", + "sale_of_assets_real_estate", + "savings", + "esops", + "investment_proceeds", + "someone_else_funds" + ], + "example": "business_income", "type": [ "string", "null" - ], - "format": "date-time" - }, - "created_at": { - "type": "string", - "format": "date-time" - } - }, - "required": [ - "id", - "instance_id", - "status", - "request", - "response", - "expires_at", - "submitted_at", - "created_at" - ] - }, - "RecurringItem": { - "type": "object", - "properties": { - "id": { - "type": "string", - "example": "rc_000000000000" - }, - "instance_id": { - "type": "string", - "example": "in_000000000000" - }, - "description": { - "type": "string", - "example": "Premium Support" - }, - "amount": { - "type": "integer", - "description": "Amount in cents for fixed billing", - "example": 5000 - }, - "frequency_months": { - "type": "integer", - "exclusiveMinimum": 0, - "description": "Billing frequency in months (1=monthly, 3=quarterly, etc)", - "example": 1 - }, - "first_invoice_sequence": { - "type": "integer", - "exclusiveMinimum": 0, - "description": "Invoice sequence number when this item first becomes due", - "example": 1 + ] }, - "billing_scheme": { - "type": "string", + "source_of_wealth": { "enum": [ - "fixed", - "metered" + "business_dividends_or_profits", + "investments", + "asset_sales", + "client_investor_contributions", + "gambling", + "charitable_contributions", + "inheritance", + "affiliate_or_royalty_income" ], - "example": "fixed" - }, - "metric_id": { + "example": "affiliate_or_royalty_income", "type": [ "string", "null" - ], - "example": "approved_individual_customers" + ] }, - "per_unit_amount": { + "state_province_region": { + "example": "MA", "type": [ - "integer", + "string", "null" - ], - "description": "Override default rate in cents for metered billing", - "example": 20 + ] }, - "product_id": { + "tax_id": { + "example": "536804398", "type": [ "string", "null" - ], - "example": "pr_000000000000" + ] }, - "product_name": { + "tos_id": { + "example": "to_000000000000", + "maxLength": 15, + "minLength": 15, "type": [ "string", "null" - ], - "description": "Product name when product_id is set (from stripe product catalog)", - "example": "Swift Addon" - }, - "created_at": { - "type": "string", - "format": "date-time" + ] }, - "updated_at": { - "type": "string", - "format": "date-time" + "website": { + "example": "https://example.com", + "format": "uri", + "type": [ + "string", + "null" + ] } }, "required": [ - "id", - "instance_id", - "description", - "amount", - "frequency_months", - "first_invoice_sequence", - "billing_scheme", - "metric_id", - "per_unit_amount", - "product_id" - ] + "email", + "country" + ], + "type": "object" }, - "CreateRecurringItemSchemaIn": { - "type": "object", + "UpdateDynamicRateOtcIn": { "properties": { - "description": { - "type": "string", - "minLength": 1, - "example": "Swift Addon" - }, - "amount": { - "type": "integer", + "dynamic_rate_otc": { + "description": "Dynamic OTC rate markup in basis points (e.g. 5 = 0.05%)", + "example": 5, "minimum": 0, - "description": "Amount in cents", - "example": 5000 - }, - "frequency_months": { - "type": "integer", - "exclusiveMinimum": 0, - "example": 1 - }, - "first_invoice_sequence": { - "type": "integer", - "exclusiveMinimum": 0, - "example": 1 + "type": "integer" + } + }, + "required": [ + "dynamic_rate_otc" + ], + "type": "object" + }, + "UpdateInstanceIn": { + "properties": { + "compliance_emails": { + "description": "When non-empty, compliance Request for Information emails are sent only to these addresses instead of all instance members", + "example": [ + "compliance@example.com" + ], + "items": { + "format": "email", + "type": "string" + }, + "maxItems": 20, + "type": [ + "array", + "null" + ] }, - "product_id": { + "customer_invite_redirect_url": { + "example": "https://blindpay.com", + "format": "uri", "type": [ "string", "null" ] + }, + "customer_rfi_emails_enabled": { + "description": "Whether customer (customer) Request for Information notification emails are sent for this instance. Omit to leave unchanged.", + "example": true, + "type": "boolean" + }, + "email_notifications": { + "default": true, + "description": "Whether email notifications are enabled for this instance", + "example": true, + "type": "boolean" + }, + "name": { + "example": "My Instance", + "maxLength": 100, + "minLength": 3, + "type": "string" + }, + "require_passkey": { + "default": false, + "description": "Whether passkey verification is required for protected actions", + "example": false, + "type": "boolean" } }, "required": [ - "description", - "amount", - "frequency_months", - "first_invoice_sequence" - ] + "name" + ], + "type": "object" + }, + "UpdateInstanceMemberIn": { + "properties": { + "user_role": { + "enum": [ + "owner", + "admin", + "finance", + "checker", + "operations", + "developer", + "viewer" + ], + "example": "admin", + "type": "string" + } + }, + "required": [ + "user_role" + ], + "type": "object" }, "UpdateRecurringItemSchemaIn": { - "type": "object", "properties": { - "description": { - "type": "string", - "minLength": 1 - }, "amount": { - "type": "integer", - "minimum": 0 + "minimum": 0, + "type": "integer" }, - "frequency_months": { - "type": "integer", - "exclusiveMinimum": 0 + "description": { + "minLength": 1, + "type": "string" }, "first_invoice_sequence": { - "type": "integer", - "exclusiveMinimum": 0 + "exclusiveMinimum": 0, + "type": "integer" + }, + "frequency_months": { + "exclusiveMinimum": 0, + "type": "integer" }, "product_id": { "type": [ @@ -34885,4620 +34533,4140 @@ "null" ] } - } + }, + "type": "object" }, - "CreateComplaintIn": { - "type": "object", + "UpdateVirtualAccountIn": { "properties": { - "first_name": { - "type": "string", - "minLength": 1 - }, - "last_name": { - "type": "string", - "minLength": 1 - }, - "email": { - "type": "string", - "format": "email" - }, - "complaint_type": { - "type": "string", - "minLength": 1 + "blockchain_wallet_id": { + "maxLength": 15, + "minLength": 15, + "type": "string" }, - "description": { - "type": "string", - "minLength": 20, - "maxLength": 5000 + "token": { + "enum": [ + "USDC", + "USDT", + "USDB" + ], + "example": "USDC", + "type": "string" } }, "required": [ - "first_name", - "last_name", - "email", - "complaint_type", - "description" - ] - }, - "FeedbackActor": { - "type": [ - "object", - "null" + "token", + "blockchain_wallet_id" ], + "type": "object" + }, + "UploadAnalyzeIn": { "properties": { - "id": { - "type": "string" + "file": { + "description": "The document to analyze (PDF, JPG, or PNG).", + "example": {} }, - "name": { - "type": [ - "string", - "null" - ] + "metadata": { + "description": "Optional JSON object of expected values to verify against the document (e.g. {\"full_name\":\"Jane Doe\",\"date_of_birth\":\"1990-01-01\"}). When provided, a clear mismatch caps the rating at low.", + "example": "{\"full_name\":\"Jane Doe\"}", + "type": "string" }, - "email": { - "type": [ - "string", - "null" - ] + "type": { + "description": "The kind of document being analyzed. Selects the rule set used for the analysis.", + "enum": [ + "proof_of_address", + "identity_document", + "incorporation_document", + "proof_of_ownership", + "source_of_funds", + "selfie", + "bank_statement", + "tax_return", + "proof_of_income", + "financial_statement", + "invoice", + "transaction_document", + "passport", + "pay_stub", + "employment_letter", + "investment", + "crypto_exchange", + "blockchain_wallet", + "contract", + "accounts_receivable", + "merchant_processor", + "shareholder_loan" + ], + "example": "proof_of_address", + "type": "string" } }, "required": [ - "id", - "name", - "email" - ] - }, - "FeedbackWithActorOut": { - "allOf": [ - { - "$ref": "#/components/schemas/FeedbackOut" - }, - { - "type": "object", - "properties": { - "actor": { - "$ref": "#/components/schemas/FeedbackActor" - } - }, - "required": [ - "actor" - ] - } - ] + "file", + "type" + ], + "type": "object" }, - "CreateRfiBody": { - "type": "object", + "UploadAnalyzeOut": { "properties": { - "created_by_email": { - "type": "string", - "format": "email" - }, - "request": { - "type": "array", - "items": { - "$ref": "#/components/schemas/RfiSection" - }, - "minItems": 1, - "maxItems": 20 + "approval_rate": { + "description": "Confidence that the document should be approved.", + "enum": [ + "low", + "medium", + "high" + ], + "example": "high", + "type": "string" }, - "keep_customer_approved": { - "type": "boolean", - "default": false, - "description": "When true, sets the customer to approved_rfi (keeps full access while the RFI is open) instead of compliance_request (blocked).", - "example": false + "description": { + "description": "Short explanation of why the document should or should not be approved.", + "type": "string" } }, "required": [ - "created_by_email", - "request" - ] + "approval_rate", + "description" + ], + "type": "object" }, - "KycDecisionBody": { - "type": "object", + "UploadIn": { "properties": { - "decision": { - "type": "string", + "bucket": { "enum": [ - "approved", - "rejected" - ] - }, - "reviewed_by": { - "type": "string", - "format": "email" + "avatar", + "onboarding", + "limit_increase" + ], + "type": "string" }, - "reason": { - "type": "string", - "maxLength": 2048 - } + "file": {} }, "required": [ - "decision", - "reviewed_by" - ] + "file", + "bucket" + ], + "type": "object" }, - "UpdateDynamicRateOtcIn": { - "type": "object", + "UploadOut": { "properties": { - "dynamic_rate_otc": { - "type": "integer", - "minimum": 0, - "description": "Dynamic OTC rate markup in basis points (e.g. 5 = 0.05%)", - "example": 5 + "file_url": { + "type": "string" } }, "required": [ - "dynamic_rate_otc" - ] + "file_url" + ], + "type": "object" }, - "LedgerOperation": { - "type": "object", + "VirtualAccountOut": { "properties": { - "kind": { - "type": "string", + "banking_partner": { "enum": [ - "payin", - "payout" - ] - }, - "id": { - "type": "string" - }, - "instance_id": { - "type": [ - "string", - "null" - ] - }, - "status": { - "type": [ - "string", - "null" - ] - }, - "provider": { - "type": [ - "string", - "null" - ] - }, - "currency": { - "type": [ - "string", - "null" - ] - }, - "sender_amount": { - "type": [ - "string", - "null" - ] - }, - "receiver_amount": { - "type": [ - "string", - "null" - ] - }, - "network": { - "type": [ - "string", - "null" - ] - }, - "counterparty_address": { - "type": [ - "string", - "null" - ] - }, - "tx_hashes": { - "type": "array", - "items": { - "type": "string" - } - }, - "provider_transaction_ids": { - "type": "array", - "items": { - "type": "string" - } - }, - "external_id": { - "type": [ - "string", - "null" - ] - }, - "bank_external_id": { - "type": [ - "string", - "null" - ] - }, - "memo_code": { - "type": [ - "string", - "null" - ] - }, - "recipient_tax_id": { - "type": [ - "string", - "null" - ] - }, - "veem_customer_id": { - "type": [ - "string", - "null" - ] - }, - "funding_end_to_end_id": { + "jpmorgan", + "citi", + "hsbc", + "cfsb", + "portage" + ], + "example": "jpmorgan", "type": [ "string", "null" ] }, - "payer_tax_id": { + "blockchain_wallet": { + "properties": { + "address": { + "example": "0xDD6a3aD0949396e57C7738ba8FC1A46A5a1C372C", + "type": [ + "string", + "null" + ] + }, + "network": { + "enum": [ + "base", + "sepolia", + "arbitrum_sepolia", + "base_sepolia", + "arbitrum", + "polygon", + "polygon_amoy", + "ethereum", + "stellar", + "stellar_testnet", + "tron", + "solana", + "solana_devnet" + ], + "example": "polygon", + "type": "string" + } + }, + "required": [ + "network" + ], "type": [ - "string", + "object", "null" ] }, - "is_otc": { - "type": "boolean" - }, - "created_at": { + "blockchain_wallet_id": { + "example": "bw_000000000000", + "maxLength": 15, + "minLength": 15, "type": [ "string", "null" ] }, - "updated_at": { + "customer_id": { + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, "type": [ "string", "null" ] - } - }, - "required": [ - "kind", - "id", - "instance_id", - "status", - "provider", - "currency", - "sender_amount", - "receiver_amount", - "network", - "counterparty_address", - "tx_hashes", - "provider_transaction_ids", - "external_id", - "bank_external_id", - "memo_code", - "recipient_tax_id", - "veem_customer_id", - "funding_end_to_end_id", - "payer_tax_id", - "is_otc", - "created_at", - "updated_at" - ] - }, - "MonitoredWallet": { - "type": "object", - "properties": { - "network": { - "type": "string" }, - "address": { + "id": { + "example": "va_000000000000", + "maxLength": 15, + "minLength": 15, "type": "string" }, - "label": { - "type": "string", - "description": "treasury: for the shared treasury wallet, instance: for a `wallet` row, instance::offramp for an `offramp_wallet` row.", - "example": "instance:inst_abc123" - }, - "source": { - "type": "string", + "kyc_status": { "enum": [ - "treasury", - "wallet", - "offramp_wallet" - ] - }, - "instance_id": { + "verifying", + "approved", + "rejected", + "deprecated", + "pending_review", + "awaiting_contract", + "compliance_request", + "approved_rfi" + ], + "example": "approved", "type": [ "string", "null" ] - } - }, - "required": [ - "network", - "address", - "label", - "source", - "instance_id" - ] - }, - "CreateInstanceRfiBody": { - "type": "object", - "properties": { - "created_by_email": { - "type": "string", - "format": "email" - }, - "request": { - "type": "array", - "items": { - "$ref": "#/components/schemas/RfiSection" - }, - "minItems": 1, - "maxItems": 20 - } - }, - "required": [ - "created_by_email", - "request" - ] - } - }, - "parameters": {} - }, - "paths": { - "/v1/instances/{id}": { - "put": { - "x-sdk": true, - "tags": [ - "Instances" - ], - "summary": "Update Instance", - "parameters": [ - { - "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, - "name": "id", - "in": "path" }, - { - "schema": { - "type": "string", - "maxLength": 255, - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" - }, - "required": false, - "name": "Idempotency-Key", - "in": "header" - } - ], - "requestBody": { - "description": "Update instance", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateInstanceIn" - } - } - } - }, - "responses": { - "200": { - "description": "Instance updated", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Success" - } - } - } + "token": { + "enum": [ + "USDC", + "USDT", + "USDB" + ], + "example": "USDC", + "type": "string" }, - "400": { - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" + "us": { + "properties": { + "account_type": { + "default": "Business checking", + "enum": [ + "Personal checking", + "Business checking" + ], + "example": "Business checking", + "type": [ + "string", + "null" + ] + }, + "ach": { + "properties": { + "account_number": { + "example": "123456789", + "type": "string" + }, + "routing_number": { + "example": "123456789", + "type": "string" + } }, - "examples": { - "VALIDATION_FAILED": { - "summary": "VALIDATION_FAILED", - "value": { - "success": false, - "code": "VALIDATION_FAILED", - "message": "validation_failed", - "description": "The request contains invalid fields. Check the errors list for details.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } + "required": [ + "routing_number", + "account_number" + ], + "type": [ + "object", + "null" + ] + }, + "beneficiary": { + "properties": { + "address_line_1": { + "example": "8 The Green, #19364", + "type": "string" + }, + "address_line_2": { + "example": "Dover, DE 19901", + "type": "string" + }, + "name": { + "example": "Customer Name", + "type": "string" } - } - } - } - }, - "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" }, - "examples": { - "AUTH_UNAUTHORIZED": { - "summary": "AUTH_UNAUTHORIZED", - "value": { - "success": false, - "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", - "description": "Authentication failed. Check your API key or session and try again.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } + "required": [ + "name", + "address_line_1", + "address_line_2" + ], + "type": [ + "object", + "null" + ] + }, + "receiving_bank": { + "properties": { + "address_line_1": { + "example": "270 Park Ave", + "type": "string" + }, + "address_line_2": { + "example": "New York, NY, 10017-2070", + "type": [ + "string", + "null" + ] + }, + "name": { + "example": "JPMorgan Chase", + "type": "string" + } + }, + "required": [ + "name", + "address_line_1" + ], + "type": [ + "object", + "null" + ] + }, + "rtp": { + "properties": { + "account_number": { + "example": "123456789", + "type": "string" + }, + "routing_number": { + "example": "123456789", + "type": "string" + } + }, + "required": [ + "routing_number", + "account_number" + ], + "type": [ + "object", + "null" + ] + }, + "swift_account_number": { + "example": "GB50TCCL04140449730892", + "type": [ + "string", + "null" + ] + }, + "swift_bic_code": { + "example": "TCCLGB3L", + "type": [ + "string", + "null" + ] + }, + "swift_intermediary_bank": { + "properties": { + "address_line_1": { + "example": "270 Park Ave", + "type": [ + "string", + "null" + ] + }, + "address_line_2": { + "example": "New York, NY, 10017-2070", + "type": [ + "string", + "null" + ] + }, + "name": { + "example": "JP Morgan Chase NA", + "type": [ + "string", + "null" + ] + }, + "routing_number": { + "example": "021000021", + "type": [ + "string", + "null" + ] + }, + "swift_code_bic": { + "example": "CHASUS33", + "type": [ + "string", + "null" + ] } - } - } - } - }, - "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" }, - "examples": { - "AUTH_FORBIDDEN": { - "summary": "AUTH_FORBIDDEN", - "value": { - "success": false, - "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", - "description": "You do not have permission to perform this action.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } + "type": [ + "object", + "null" + ] + }, + "swift_receiving_bank": { + "properties": { + "address_line_1": { + "example": "270 Park Ave", + "type": [ + "string", + "null" + ] + }, + "address_line_2": { + "example": "New York, NY, 10017-2070", + "type": [ + "string", + "null" + ] + }, + "name": { + "example": "JPMorgan Chase", + "type": [ + "string", + "null" + ] } - } - } - } - }, - "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" }, - "examples": { - "AUTH_RATE_LIMITED": { - "summary": "AUTH_RATE_LIMITED", - "value": { - "success": false, - "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", - "description": "Too many requests. Wait a moment and try again.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } + "type": [ + "object", + "null" + ] + }, + "wire": { + "properties": { + "account_number": { + "example": "123456789", + "type": "string" + }, + "routing_number": { + "example": "123456789", + "type": "string" } - } - } - } - }, - "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" }, - "examples": { - "INTERNAL_ERROR": { - "summary": "INTERNAL_ERROR", - "value": { - "success": false, - "code": "INTERNAL_ERROR", - "message": "internal_error", - "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } - } + "required": [ + "routing_number", + "account_number" + ], + "type": "object" } - } + }, + "required": [ + "wire" + ], + "type": "object" } - } + }, + "required": [ + "id", + "banking_partner", + "kyc_status", + "us", + "token" + ], + "type": "object" }, - "delete": { - "x-sdk": true, - "tags": [ - "Instances" + "VirtualAccountsUsage": { + "properties": { + "count": { + "description": "Number of active virtual accounts", + "example": 100, + "type": "integer" + }, + "total": { + "description": "Total virtual account fees in cents", + "example": 150000, + "type": "integer" + }, + "unit_cost": { + "description": "Cost per virtual account in cents", + "example": 1500, + "type": "integer" + } + }, + "required": [ + "count", + "unit_cost", + "total" ], - "summary": "Delete Instance", - "parameters": [ - { - "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, - "name": "id", - "in": "path" + "type": "object" + }, + "WalletBalanceOut": { + "properties": { + "USDB": { + "$ref": "#/components/schemas/WalletTokenOut" }, - { - "schema": { - "type": "string", - "maxLength": 255, - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" - }, - "required": false, - "name": "Idempotency-Key", - "in": "header" + "USDC": { + "$ref": "#/components/schemas/WalletTokenOut" + }, + "USDT": { + "$ref": "#/components/schemas/WalletTokenOut" } + }, + "required": [ + "USDC", + "USDT", + "USDB" ], - "responses": { - "200": { - "description": "Instance deleted", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Success" - } - } - } + "type": "object" + }, + "WalletInboundSchemaOut": { + "properties": { + "address": { + "type": "string" }, - "400": { - "description": "Possible error codes: `AUTH_FORBIDDEN`, `VALIDATION_FAILED`. See the Error responses section for retry semantics.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, - "examples": { - "AUTH_FORBIDDEN": { - "summary": "AUTH_FORBIDDEN", - "value": { - "success": false, - "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", - "description": "You do not have permission to perform this action.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VALIDATION_FAILED": { - "summary": "VALIDATION_FAILED", - "value": { - "success": false, - "code": "VALIDATION_FAILED", - "message": "validation_failed", - "description": "The request contains invalid fields. Check the errors list for details.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } - } - } - } + "id": { + "type": "string" }, - "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, - "examples": { - "AUTH_UNAUTHORIZED": { - "summary": "AUTH_UNAUTHORIZED", - "value": { - "success": false, - "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", - "description": "Authentication failed. Check your API key or session and try again.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } - } - } - } + "network": { + "enum": [ + "base", + "sepolia", + "arbitrum_sepolia", + "base_sepolia", + "arbitrum", + "polygon", + "polygon_amoy", + "ethereum", + "stellar", + "stellar_testnet", + "tron", + "solana", + "solana_devnet" + ], + "type": "string" }, - "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, - "examples": { - "AUTH_FORBIDDEN": { - "summary": "AUTH_FORBIDDEN", - "value": { - "success": false, - "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", - "description": "You do not have permission to perform this action.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } - } - } - } + "token": { + "$ref": "#/components/schemas/WalletTokenOut" + } + }, + "required": [ + "id", + "address", + "network", + "token" + ], + "type": "object" + }, + "WalletOut": { + "properties": { + "address": { + "example": "0xDD6a3aD0949396e57C7738ba8FC1A46A5a1C372C", + "maxLength": 64, + "type": [ + "string", + "null" + ] }, - "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, - "examples": { - "AUTH_RATE_LIMITED": { - "summary": "AUTH_RATE_LIMITED", - "value": { - "success": false, - "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", - "description": "Too many requests. Wait a moment and try again.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } - } - } - } + "created_at": { + "example": "2021-01-01T00:00:00Z", + "format": "date-time", + "type": [ + "string", + "null" + ] }, - "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, - "examples": { - "INTERNAL_ERROR": { - "summary": "INTERNAL_ERROR", - "value": { - "success": false, - "code": "INTERNAL_ERROR", - "message": "internal_error", - "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } - } - } - } + "external_id": { + "example": "your-database-id", + "maxLength": 255, + "type": [ + "string", + "null" + ] + }, + "id": { + "example": "bl_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "name": { + "example": "Blindpay Wallet", + "maxLength": 255, + "type": "string" + }, + "network": { + "enum": [ + "base", + "sepolia", + "arbitrum_sepolia", + "base_sepolia", + "arbitrum", + "polygon", + "polygon_amoy", + "ethereum", + "stellar", + "stellar_testnet", + "tron", + "solana", + "solana_devnet" + ], + "example": "polygon", + "type": "string" } - } - } - }, - "/v1/instances/{id}/members": { - "get": { - "x-sdk": true, - "tags": [ - "Instances" + }, + "required": [ + "id", + "name", + "network" ], - "summary": "Retrieve Instance Members", - "parameters": [ - { - "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, - "name": "id", - "in": "path" + "type": "object" + }, + "WalletTokenOut": { + "properties": { + "address": { + "type": "string" + }, + "amount": { + "type": "number" + }, + "id": { + "type": "string" + }, + "symbol": { + "enum": [ + "USDC", + "USDT", + "USDB" + ], + "type": "string" } + }, + "required": [ + "address", + "id", + "symbol", + "amount" ], - "responses": { - "200": { - "description": "Retrieve instance members", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "us_000000000000" - }, - "email": { - "type": "string", - "format": "email", - "example": "email@example.com" - }, - "first_name": { - "type": "string", - "minLength": 1, - "maxLength": 100, - "example": "Harry" - }, - "middle_name": { - "type": [ - "string", - "null" - ], - "minLength": 1, - "maxLength": 100, - "example": "James" - }, - "last_name": { - "type": "string", - "minLength": 1, - "maxLength": 100, - "example": "Potter" - }, - "image_url": { - "type": "string", - "format": "uri", - "example": "https://example.com/image.png" - }, - "created_at": { - "example": "2021-01-01T00:00:00Z" - }, - "has_passkey": { - "type": [ - "boolean", - "null" - ], - "example": true - }, - "role": { - "type": "string", - "enum": [ - "owner", - "admin", - "finance", - "checker", - "operations", - "developer", - "viewer" - ], - "example": "admin" - } - }, - "required": [ - "id", - "email", - "first_name", - "last_name", - "image_url", - "role" - ] - } - } - } - } + "type": "object" + }, + "WebhookEndpoint": { + "properties": { + "created_at": { + "example": "2021-01-01T00:00:00Z", + "format": "date-time", + "type": [ + "string", + "null" + ] + }, + "events": { + "example": [ + "customer.new" + ], + "items": { + "enum": [ + "customer.new", + "customer.update", + "customer.delete", + "bankAccount.new", + "payout.new", + "payout.update", + "payout.complete", + "payout.partnerFee", + "blockchainWallet.new", + "payin.new", + "payin.update", + "payin.complete", + "payin.partnerFee", + "tos.accept", + "limitIncrease.new", + "limitIncrease.update", + "virtualAccount.new", + "virtualAccount.complete", + "transfer.new", + "transfer.update", + "transfer.complete", + "wallet.new", + "wallet.inbound" + ], + "type": "string" + }, + "type": "array" }, - "400": { - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, - "examples": { - "VALIDATION_FAILED": { - "summary": "VALIDATION_FAILED", - "value": { - "success": false, - "code": "VALIDATION_FAILED", - "message": "validation_failed", - "description": "The request contains invalid fields. Check the errors list for details.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } - } - } - } + "id": { + "example": "we_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" }, - "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, - "examples": { - "AUTH_UNAUTHORIZED": { - "summary": "AUTH_UNAUTHORIZED", - "value": { - "success": false, - "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", - "description": "Authentication failed. Check your API key or session and try again.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } - } - } - } + "instance_id": { + "example": "in_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" }, - "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, - "examples": { - "AUTH_FORBIDDEN": { - "summary": "AUTH_FORBIDDEN", - "value": { - "success": false, - "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", - "description": "You do not have permission to perform this action.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } - } + "last_event_at": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "string" + }, + { + "type": "null" } - } + ], + "example": "2024-01-01T00:00:00.000Z" }, - "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, - "examples": { - "AUTH_RATE_LIMITED": { - "summary": "AUTH_RATE_LIMITED", - "value": { - "success": false, - "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", - "description": "Too many requests. Wait a moment and try again.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } - } - } - } + "updated_at": { + "example": "2021-01-01T00:00:00Z", + "format": "date-time", + "type": [ + "string", + "null" + ] }, - "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, - "examples": { - "INTERNAL_ERROR": { - "summary": "INTERNAL_ERROR", - "value": { - "success": false, - "code": "INTERNAL_ERROR", - "message": "internal_error", - "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } - } - } - } + "url": { + "example": "https://example.com/webhook", + "format": "uri", + "type": "string" } - } - } - }, - "/v1/instances/{id}/members/{user_id}": { - "delete": { - "x-sdk": true, - "tags": [ - "Instances" + }, + "required": [ + "id", + "url", + "events", + "instance_id" ], - "summary": "Delete Member from Instance", - "parameters": [ - { - "schema": { + "type": "object" + }, + "WebhookEndpointIn": { + "properties": { + "events": { + "example": [ + "customer.new" + ], + "items": { + "enum": [ + "customer.new", + "customer.update", + "customer.delete", + "bankAccount.new", + "payout.new", + "payout.update", + "payout.complete", + "payout.partnerFee", + "blockchainWallet.new", + "payin.new", + "payin.update", + "payin.complete", + "payin.partnerFee", + "tos.accept", + "limitIncrease.new", + "limitIncrease.update", + "virtualAccount.new", + "virtualAccount.complete", + "transfer.new", + "transfer.update", + "transfer.complete", + "wallet.new", + "wallet.inbound" + ], "type": "string" }, - "required": true, - "name": "id", - "in": "path" + "type": "array" }, + "url": { + "example": "https://example.com/webhook", + "format": "uri", + "type": "string" + } + }, + "required": [ + "url", + "events" + ], + "type": "object" + }, + "WebhookEndpointOut": { + "properties": { + "id": { + "example": "we_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + } + }, + "required": [ + "id" + ], + "type": "object" + } + }, + "securitySchemes": { + "Bearer": { + "bearerFormat": "JWT", + "scheme": "bearer", + "type": "http" + } + } + }, + "info": { + "title": "BlindPay API", + "version": "1.0.0" + }, + "openapi": "3.1.0", + "paths": { + "/v1/available/bank-details": { + "get": { + "parameters": [ { - "schema": { - "type": "string" - }, + "in": "query", + "name": "rail", "required": true, - "name": "user_id", - "in": "path" - }, - { "schema": { - "type": "string", - "maxLength": 255, - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" - }, - "required": false, - "name": "Idempotency-Key", - "in": "header" + "enum": [ + "wire", + "ach", + "pix", + "pix_safe", + "ted", + "spei_bitso", + "transfers_bitso", + "ach_cop_bitso", + "international_swift", + "rtp", + "sepa" + ], + "type": "string" + } } ], "responses": { "200": { - "description": "Member deleted from instance successfully", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Success" + "$ref": "#/components/schemas/AvailableBankDetails" } } - } + }, + "description": "Retrieve bank details by rail" }, "400": { - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } - } - } - }, - "put": { - "x-sdk": true, - "tags": [ - "Instances" - ], - "summary": "Update Instance Member Role", - "parameters": [ - { - "schema": { - "type": "string" - }, - "required": true, - "name": "id", - "in": "path" - }, - { - "schema": { - "type": "string" - }, - "required": true, - "name": "user_id", - "in": "path" - }, - { - "schema": { - "type": "string", - "maxLength": 255, - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" }, - "required": false, - "name": "Idempotency-Key", - "in": "header" - } - ], - "requestBody": { - "description": "Update instance member role", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateInstanceMemberIn" - } - } + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." } }, + "security": [], + "summary": "Bank Details", + "tags": [ + "Available" + ], + "x-sdk": true + } + }, + "/v1/available/naics": { + "get": { "responses": { "200": { - "description": "Member role updated successfully", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Success" + "$ref": "#/components/schemas/AvailableNaicsList" } } - } + }, + "description": "Retrieve NAICS (business industry) list" }, "400": { - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } - } - } - } - }, - "/v1/instances/{id}/ownership": { - "post": { - "x-sdk": true, - "tags": [ - "Instances" - ], - "summary": "Migrate Instance Ownership", - "parameters": [ - { - "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, - "name": "id", - "in": "path" - }, - { - "schema": { - "type": "string", - "maxLength": 255, - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" }, - "required": false, - "name": "Idempotency-Key", - "in": "header" - } - ], - "requestBody": { - "description": "Transfer instance ownership to another current member", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/MigrateInstanceOwnershipIn" - } - } + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." } }, + "security": [], + "summary": "NAICS list", + "tags": [ + "Available" + ], + "x-sdk": true + } + }, + "/v1/available/rails": { + "get": { "responses": { "200": { - "description": "Ownership transferred", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Success" + "$ref": "#/components/schemas/AvailableRails" } } - } + }, + "description": "Retrieve available rails" }, "400": { - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } + }, + "security": [], + "summary": "Rails", + "tags": [ + "Available" + ], + "x-sdk": true } }, - "/v1/instances/{instance_id}/rfi": { + "/v1/available/swift/{swift}": { "get": { - "x-sdk": true, - "tags": [ - "Instances" - ], - "summary": "Get Open RFI for Instance", - "description": "Returns the open (pending) RFI for this instance, or null if the instance has no pending RFI.", "parameters": [ { - "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "in_000000000000" - }, + "in": "path", + "name": "swift", "required": true, - "name": "instance_id", - "in": "path" + "schema": { + "anyOf": [ + { + "maxLength": 8, + "minLength": 8, + "pattern": "^[A-Z0-9]+$", + "type": "string" + }, + { + "maxLength": 11, + "minLength": 11, + "pattern": "^[A-Z0-9]+$", + "type": "string" + } + ], + "example": "BOFAUS3NLMA" + } } ], "responses": { "200": { - "description": "Open instance RFI, or null if none", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/InstanceRfi" + "$ref": "#/components/schemas/SwiftCodeResponse" } } - } + }, + "description": "Swift code bank details" }, "400": { - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `COMPLIANCE_RFI_INVALID`, `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "COMPLIANCE_RFI_INVALID": { - "summary": "COMPLIANCE_RFI_INVALID", - "value": { - "success": false, - "code": "COMPLIANCE_RFI_INVALID", - "message": "rfi_request_corrupt", - "description": "The information request could not be processed. Check the submitted fields.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } - }, - "post": { - "x-sdk": true, + }, + "summary": "Swift code bank details", "tags": [ - "Instances" + "Available" ], - "summary": "Submit Instance RFI Response", - "description": "Submit a flat response object for the open instance RFI. Standalone: submitting does not change any instance or onboarding status. Returns `{ success: false, reason }` when no pending RFI exists, callers should refetch the RFI state instead of retrying.", + "x-sdk": true + } + }, + "/v1/e/instances/{instance_id}/tos": { + "post": { "parameters": [ { + "in": "path", + "name": "instance_id", + "required": true, "schema": { - "type": "string", - "minLength": 15, + "example": "in_000000000000", "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, - "name": "instance_id", - "in": "path" + "minLength": 15, + "type": "string" + } } ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "additionalProperties": {} + "$ref": "#/components/schemas/InitiateTosIn" } } - } + }, + "description": "Initiate a new terms of service" }, "responses": { "200": { - "description": "RFI submitted (success: true) or rejected because no pending RFI exists (success: false)", "content": { "application/json": { "schema": { - "anyOf": [ - { - "type": "object", - "properties": { - "success": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "required": [ - "success" - ] - }, - { - "type": "object", - "properties": { - "success": { - "type": "boolean", - "enum": [ - false - ] - }, - "reason": { - "type": "string", - "enum": [ - "no_pending_rfi", - "already_resolved" - ] - } - }, - "required": [ - "success", - "reason" - ] - } - ] + "$ref": "#/components/schemas/InitiateTosOut" } } - } + }, + "description": "Initiate terms of service" }, "400": { - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `COMPLIANCE_RFI_INVALID`, `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "COMPLIANCE_RFI_INVALID": { - "summary": "COMPLIANCE_RFI_INVALID", - "value": { - "success": false, - "code": "COMPLIANCE_RFI_INVALID", - "message": "rfi_request_corrupt", - "description": "The information request could not be processed. Check the submitted fields.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } - } - }, - "/v1/e/instances/{instance_id}/tos": { - "post": { - "x-sdk": true, + }, + "summary": "Initiate Terms of Service", "tags": [ "Terms Of Service" ], - "summary": "Initiate Terms of Service", + "x-sdk": true + } + }, + "/v1/e/payins/{id}": { + "get": { "parameters": [ { + "in": "path", + "name": "id", + "required": true, "schema": { - "type": "string", - "minLength": 15, + "example": "pi_000000000000", "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, - "name": "instance_id", - "in": "path" - } - ], - "requestBody": { - "description": "Initiate a new terms of service", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/InitiateTosIn" - } + "minLength": 15, + "type": "string" } } - }, + ], "responses": { "200": { - "description": "Initiate terms of service", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/InitiateTosOut" + "$ref": "#/components/schemas/PayinOut" } } - } + }, + "description": "List payins" }, "400": { - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, - "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", + "404": { "content": { "application/json": { + "examples": { + "PAYINS_NOT_FOUND": { + "summary": "PAYINS_NOT_FOUND", + "value": { + "code": "PAYINS_NOT_FOUND", + "description": "The requested payin was not found.", + "errors": [], + "message": "payin_not_found", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } + }, "schema": { "$ref": "#/components/schemas/Error" - }, + } + } + }, + "description": "Possible error codes: `PAYINS_NOT_FOUND`. See the Error responses section for retry semantics." + }, + "429": { + "content": { + "application/json": { "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } - } - }, - "/v1/instances/{instance_id}/customers/{customer_id}/limit-increase": { - "post": { - "x-sdk": true, + }, + "summary": "Retrieve Payin Track", "tags": [ - "Customers" + "Payins" ], - "summary": "Request Limit Increase", + "x-sdk": true + } + }, + "/v1/e/payouts/{id}": { + "get": { "parameters": [ { - "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "in_000000000000" - }, + "in": "path", + "name": "id", "required": true, - "name": "instance_id", - "in": "path" - }, - { "schema": { - "type": "string", - "minLength": 15, + "example": "pa_000000000000", "maxLength": 15, - "description": "Customer ID", - "example": "re_000000000000" - }, - "required": true, - "name": "customer_id", - "in": "path" - }, - { - "schema": { - "type": "string", - "maxLength": 255, - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" - }, - "required": false, - "name": "Idempotency-Key", - "in": "header" - } - ], - "requestBody": { - "description": "Request new limit increase", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CustomerLimitIncreaseIn" - } + "minLength": 15, + "type": "string" } } - }, + ], "responses": { "200": { - "description": "Create customer limit increase", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomerLimitIncreaseOut" + "$ref": "#/components/schemas/PayoutOut" } } - } + }, + "description": "List payouts" }, "400": { - "description": "Possible error codes: `CUSTOMERS_KYC_NOT_APPROVED`, `FILES_TOO_LARGE`, `FILES_TYPE_NOT_ALLOWED`, `FILES_UNREADABLE`, `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "CUSTOMERS_KYC_NOT_APPROVED": { - "summary": "CUSTOMERS_KYC_NOT_APPROVED", - "value": { - "success": false, - "code": "CUSTOMERS_KYC_NOT_APPROVED", - "message": "kyc_not_approved", - "description": "This customer has not completed verification yet. Complete the verification before continuing.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "FILES_TOO_LARGE": { - "summary": "FILES_TOO_LARGE", - "value": { - "success": false, - "code": "FILES_TOO_LARGE", - "message": "file_size_exceeded", - "description": "The file is too large. Upload a smaller file.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "FILES_TYPE_NOT_ALLOWED": { - "summary": "FILES_TYPE_NOT_ALLOWED", - "value": { - "success": false, - "code": "FILES_TYPE_NOT_ALLOWED", - "message": "file_type_not_allowed", - "description": "This file type is not allowed. Upload a supported file type.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "FILES_UNREADABLE": { - "summary": "FILES_UNREADABLE", - "value": { - "success": false, - "code": "FILES_UNREADABLE", - "message": "file_download_failed", - "description": "We could not read the uploaded file. Check the file and try again.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "404": { - "description": "Possible error codes: `CUSTOMERS_NOT_FOUND`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "CUSTOMERS_NOT_FOUND": { - "summary": "CUSTOMERS_NOT_FOUND", + "PAYOUTS_NOT_FOUND": { + "summary": "PAYOUTS_NOT_FOUND", "value": { - "success": false, - "code": "CUSTOMERS_NOT_FOUND", - "message": "customer_not_found", - "description": "The requested customer was not found.", + "code": "PAYOUTS_NOT_FOUND", + "description": "The requested payout was not found.", "errors": [], + "message": "payout_not_found", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `PAYOUTS_NOT_FOUND`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `FILES_UNREADABLE`, `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "FILES_UNREADABLE": { - "summary": "FILES_UNREADABLE", - "value": { - "success": false, - "code": "FILES_UNREADABLE", - "message": "file_download_failed", - "description": "We could not read the uploaded file. Check the file and try again.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } - }, - "get": { - "x-sdk": true, + }, + "summary": "Retrieve Payout Track", "tags": [ - "Customers" + "Payouts" ], - "summary": "Retrieve Limit Increase Requests", + "x-sdk": true + } + }, + "/v1/e/transfers/{id}": { + "get": { "parameters": [ { - "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "in_000000000000" - }, + "in": "path", + "name": "id", "required": true, - "name": "instance_id", - "in": "path" - }, - { "schema": { - "type": "string", - "minLength": 15, + "example": "pa_000000000000", "maxLength": 15, - "description": "Customer ID", - "example": "re_000000000000" - }, - "required": true, - "name": "customer_id", - "in": "path" + "minLength": 15, + "type": "string" + } } ], "responses": { "200": { - "description": "List customer limit increase requests", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/GetCustomerLimitIncreaseOut" - } + "$ref": "#/components/schemas/TransferOut" } } - } + }, + "description": "List transfers" }, "400": { - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } - } - }, - "/v1/instances/{instance_id}/customers": { - "post": { - "x-sdk": true, + }, + "summary": "Retrieve Transfer Track", "tags": [ - "Customers" + "Transfers" ], - "summary": "Create Customer", + "x-sdk": true + } + }, + "/v1/instances/{id}": { + "delete": { "parameters": [ { + "in": "path", + "name": "id", + "required": true, "schema": { - "type": "string", - "minLength": 15, + "example": "in_000000000000", "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, - "name": "instance_id", - "in": "path" + "minLength": 15, + "type": "string" + } }, { + "in": "header", + "name": "Idempotency-Key", + "required": false, "schema": { - "type": "string", - "maxLength": 255, "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" - }, - "required": false, - "name": "Idempotency-Key", - "in": "header" - } - ], - "requestBody": { - "description": "Create a new customer", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateCustomerIn" - } + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "maxLength": 255, + "type": "string" } } - }, + ], "responses": { "200": { - "description": "Create customer", "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "customer_id": { - "type": "string" - } - }, - "required": [ - "id", - "customer_id" - ] + "$ref": "#/components/schemas/Success" } } - } + }, + "description": "Instance deleted" }, "400": { - "description": "Possible error codes: `CUSTOMERS_ALREADY_APPROVED`, `CUSTOMERS_BUSINESS_ENHANCED_NOT_AVAILABLE`, `CUSTOMERS_ENHANCED_KYC_REQUIRED`, `CUSTOMERS_INVALID_PHONE`, `CUSTOMERS_INVALID_TAX_ID`, `FILES_TOO_LARGE`, `FILES_TYPE_NOT_ALLOWED`, `FILES_UNREADABLE`, `TOS_ALREADY_ACCEPTED`, `TOS_NOT_ACCEPTED`, `TOS_NOT_FOUND`, `VALIDATION_FAILED`, `VALIDATION_MISSING_REQUIRED_FIELDS`, `VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "CUSTOMERS_ALREADY_APPROVED": { - "summary": "CUSTOMERS_ALREADY_APPROVED", - "value": { - "success": false, - "code": "CUSTOMERS_ALREADY_APPROVED", - "message": "customer_already_approved", - "description": "This customer is already approved.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "CUSTOMERS_BUSINESS_ENHANCED_NOT_AVAILABLE": { - "summary": "CUSTOMERS_BUSINESS_ENHANCED_NOT_AVAILABLE", - "value": { - "success": false, - "code": "CUSTOMERS_BUSINESS_ENHANCED_NOT_AVAILABLE", - "message": "business_enhanced_not_available", - "description": "Enhanced verification is not available for business customers. Use standard verification (kyc_type: standard) for businesses.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "CUSTOMERS_ENHANCED_KYC_REQUIRED": { - "summary": "CUSTOMERS_ENHANCED_KYC_REQUIRED", - "value": { - "success": false, - "code": "CUSTOMERS_ENHANCED_KYC_REQUIRED", - "message": "only_enhanced_kyc_allowed_for_high_risk_countries", - "description": "Individuals from high-risk countries must use enhanced verification (kyc_type: enhanced); standard verification is not available for them. See https://www.blindpay.com/docs/kb/supported-countries for country tiers.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "CUSTOMERS_INVALID_PHONE": { - "summary": "CUSTOMERS_INVALID_PHONE", - "value": { - "success": false, - "code": "CUSTOMERS_INVALID_PHONE", - "message": "invalid_phone_number", - "description": "The phone number provided is not valid. Check the number and try again.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "CUSTOMERS_INVALID_TAX_ID": { - "summary": "CUSTOMERS_INVALID_TAX_ID", - "value": { - "success": false, - "code": "CUSTOMERS_INVALID_TAX_ID", - "message": "invalid_cpf_or_rg_tax_id", - "description": "The tax ID provided is not valid. Check the value and try again.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "FILES_TOO_LARGE": { - "summary": "FILES_TOO_LARGE", - "value": { - "success": false, - "code": "FILES_TOO_LARGE", - "message": "file_size_exceeded", - "description": "The file is too large. Upload a smaller file.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "FILES_TYPE_NOT_ALLOWED": { - "summary": "FILES_TYPE_NOT_ALLOWED", - "value": { - "success": false, - "code": "FILES_TYPE_NOT_ALLOWED", - "message": "file_type_not_allowed", - "description": "This file type is not allowed. Upload a supported file type.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "FILES_UNREADABLE": { - "summary": "FILES_UNREADABLE", - "value": { - "success": false, - "code": "FILES_UNREADABLE", - "message": "file_download_failed", - "description": "We could not read the uploaded file. Check the file and try again.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "TOS_ALREADY_ACCEPTED": { - "summary": "TOS_ALREADY_ACCEPTED", - "value": { - "success": false, - "code": "TOS_ALREADY_ACCEPTED", - "message": "tos_id_already_accepted", - "description": "These terms of service were already accepted.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "TOS_NOT_ACCEPTED": { - "summary": "TOS_NOT_ACCEPTED", + "AUTH_FORBIDDEN": { + "summary": "AUTH_FORBIDDEN", "value": { - "success": false, - "code": "TOS_NOT_ACCEPTED", - "message": "please_accept_terms_of_service", - "description": "The terms of service must be accepted before continuing.", + "code": "AUTH_FORBIDDEN", + "description": "You do not have permission to perform this action.", "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "TOS_NOT_FOUND": { - "summary": "TOS_NOT_FOUND", - "value": { + "message": "user_not_allowed", "success": false, - "code": "TOS_NOT_FOUND", - "message": "tos_not_found", - "description": "The requested terms of service record was not found.", - "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VALIDATION_MISSING_REQUIRED_FIELDS": { - "summary": "VALIDATION_MISSING_REQUIRED_FIELDS", - "value": { - "success": false, - "code": "VALIDATION_MISSING_REQUIRED_FIELDS", - "message": "missing_required_fields", - "description": "Required fields are missing. Provide the missing fields and try again.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED": { - "summary": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", - "value": { + "message": "validation_failed", "success": false, - "code": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", - "message": "id_doc_front_file_required", - "description": "Additional documents are required to create this virtual account. Upload the requested documents.", - "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`, `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `FILES_UNREADABLE`, `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "FILES_UNREADABLE": { - "summary": "FILES_UNREADABLE", - "value": { - "success": false, - "code": "FILES_UNREADABLE", - "message": "file_download_failed", - "description": "We could not read the uploaded file. Check the file and try again.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } - }, - "get": { - "x-sdk": true, + }, + "summary": "Delete Instance", "tags": [ - "Customers" + "Instances" ], - "summary": "Retrieve Customers", - "parameters": [ - { - "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, - "name": "instance_id", - "in": "path" - }, - { - "schema": { - "type": "string", - "enum": [ - "10", - "50", - "100", - "200", - "500", - "1000" - ], - "description": "Number of items to return", - "example": "50" - }, - "required": false, - "name": "limit", - "in": "query" - }, - { - "schema": { - "type": "string", - "enum": [ - "0", - "10", - "50", - "100", - "200", - "500", - "1000" - ], - "description": "Number of items to skip", - "example": "0" - }, - "required": false, - "name": "offset", - "in": "query" - }, - { - "schema": { - "type": "string", - "description": "A cursor for use in pagination. starting_after is an object ID that defines your place in the list.", - "example": "pi_123" - }, - "required": false, - "name": "starting_after", - "in": "query" - }, - { - "schema": { - "type": "string", - "description": "A cursor for use in pagination. ending_before is an object ID that defines your place in the list.", - "example": "pi_123" - }, - "required": false, - "name": "ending_before", - "in": "query" - }, - { - "schema": { - "type": "string" - }, - "required": false, - "name": "full_name", - "in": "query" - }, - { - "schema": { - "type": "string" - }, - "required": false, - "name": "customer_name", - "in": "query" - }, - { - "schema": { - "type": "string", - "enum": [ - "verifying", - "approved", - "rejected", - "deprecated", - "pending_review", - "awaiting_contract", - "compliance_request", - "approved_rfi" - ] - }, - "required": false, - "name": "status", - "in": "query" - }, + "x-sdk": true + }, + "put": { + "parameters": [ { + "in": "path", + "name": "id", + "required": true, "schema": { + "example": "in_000000000000", + "maxLength": 15, + "minLength": 15, "type": "string" - }, - "required": false, - "name": "customer_id", - "in": "query" + } }, { - "schema": { - "type": "string" - }, + "in": "header", + "name": "Idempotency-Key", "required": false, - "name": "bank_account_id", - "in": "query" - }, - { "schema": { + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "maxLength": 255, "type": "string" - }, - "required": false, - "name": "country", - "in": "query" + } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateInstanceIn" + } + } + }, + "description": "Update instance" + }, "responses": { "200": { - "description": "List customers with pagination", "content": { "application/json": { "schema": { - "anyOf": [ - { - "type": "object", - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CustomerOut" - } - }, - "pagination": { - "$ref": "#/components/schemas/PaginationMetadata" - } - }, - "required": [ - "data", - "pagination" - ] - }, - { - "type": "array", - "items": { - "$ref": "#/components/schemas/CustomerOut" - } - } - ] + "$ref": "#/components/schemas/Success" } } - } + }, + "description": "Instance updated" }, "400": { - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } + }, + "summary": "Update Instance", + "tags": [ + "Instances" + ], + "x-sdk": true } }, - "/v1/instances/{instance_id}/customers/{id}": { + "/v1/instances/{id}/members": { "get": { - "x-sdk": true, - "tags": [ - "Customers" - ], - "summary": "Retrieve Customer", "parameters": [ { - "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "in_000000000000" - }, + "in": "path", + "name": "id", "required": true, - "name": "instance_id", - "in": "path" - }, - { "schema": { - "type": "string", - "minLength": 15, + "example": "in_000000000000", "maxLength": 15, - "example": "re_000000000000" - }, - "required": true, - "name": "id", - "in": "path" + "minLength": 15, + "type": "string" + } } ], "responses": { "200": { - "description": "Get customer", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomerOut" + "items": { + "properties": { + "created_at": { + "example": "2021-01-01T00:00:00Z", + "format": "date-time", + "type": [ + "string", + "null" + ] + }, + "email": { + "example": "email@example.com", + "format": "email", + "type": "string" + }, + "first_name": { + "example": "Harry", + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "has_passkey": { + "example": true, + "type": [ + "boolean", + "null" + ] + }, + "id": { + "example": "us_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "image_url": { + "example": "https://example.com/image.png", + "format": "uri", + "type": "string" + }, + "last_name": { + "example": "Potter", + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "middle_name": { + "example": "James", + "maxLength": 100, + "minLength": 1, + "type": [ + "string", + "null" + ] + }, + "role": { + "enum": [ + "owner", + "admin", + "finance", + "checker", + "operations", + "developer", + "viewer" + ], + "example": "admin", + "type": "string" + } + }, + "required": [ + "id", + "email", + "first_name", + "last_name", + "image_url", + "role" + ], + "type": "object" + }, + "type": "array" } } - } + }, + "description": "Retrieve instance members" }, "400": { - "description": "Possible error codes: `CUSTOMERS_NOT_FOUND`, `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "CUSTOMERS_NOT_FOUND": { - "summary": "CUSTOMERS_NOT_FOUND", - "value": { - "success": false, - "code": "CUSTOMERS_NOT_FOUND", - "message": "customer_not_found", - "description": "The requested customer was not found.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - } - } - } - }, - "422": { - "description": "Possible error codes: `DATA_INTEGRITY_ERROR`. See the Error responses section for retry semantics.", - "content": { - "application/json": { + }, "schema": { "$ref": "#/components/schemas/Error" - }, - "examples": { - "DATA_INTEGRITY_ERROR": { - "summary": "DATA_INTEGRITY_ERROR", - "value": { - "success": false, - "code": "DATA_INTEGRITY_ERROR", - "message": "data_integrity_error", - "description": "This record could not be loaded because it contains invalid stored data. Contact support with the ID below.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } - }, - "put": { - "x-sdk": true, + }, + "summary": "Retrieve Instance Members", "tags": [ - "Customers" + "Instances" ], - "summary": "Update Customer", + "x-sdk": true + } + }, + "/v1/instances/{id}/members/{user_id}": { + "delete": { "parameters": [ { - "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "in_000000000000" - }, + "in": "path", + "name": "id", "required": true, - "name": "instance_id", - "in": "path" + "schema": { + "type": "string" + } }, { - "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "re_000000000000" - }, + "in": "path", + "name": "user_id", "required": true, - "name": "id", - "in": "path" + "schema": { + "type": "string" + } }, { + "in": "header", + "name": "Idempotency-Key", + "required": false, "schema": { - "type": "string", - "maxLength": 255, "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" - }, - "required": false, - "name": "Idempotency-Key", - "in": "header" - } - ], - "requestBody": { - "description": "Update a customer", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateCustomerIn" - } + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "maxLength": 255, + "type": "string" } } - }, + ], "responses": { "200": { - "description": "Customer updated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Success" } } - } + }, + "description": "Member deleted from instance successfully" }, "400": { - "description": "Possible error codes: `CUSTOMERS_INVALID_PHONE`, `CUSTOMERS_INVALID_TAX_ID`, `CUSTOMERS_NOT_FOUND`, `FILES_TOO_LARGE`, `FILES_TYPE_NOT_ALLOWED`, `FILES_UNREADABLE`, `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "CUSTOMERS_INVALID_PHONE": { - "summary": "CUSTOMERS_INVALID_PHONE", + "VALIDATION_FAILED": { + "summary": "VALIDATION_FAILED", "value": { - "success": false, - "code": "CUSTOMERS_INVALID_PHONE", - "message": "invalid_phone_number", - "description": "The phone number provided is not valid. Check the number and try again.", + "code": "VALIDATION_FAILED", + "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "CUSTOMERS_INVALID_TAX_ID": { - "summary": "CUSTOMERS_INVALID_TAX_ID", - "value": { + "message": "validation_failed", "success": false, - "code": "CUSTOMERS_INVALID_TAX_ID", - "message": "invalid_cpf_or_rg_tax_id", - "description": "The tax ID provided is not valid. Check the value and try again.", - "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } - }, - "CUSTOMERS_NOT_FOUND": { - "summary": "CUSTOMERS_NOT_FOUND", + } + }, + "schema": { + "$ref": "#/components/schemas/Error" + } + } + }, + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." + }, + "401": { + "content": { + "application/json": { + "examples": { + "AUTH_UNAUTHORIZED": { + "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, - "code": "CUSTOMERS_NOT_FOUND", - "message": "customer_not_found", - "description": "The requested customer was not found.", + "code": "AUTH_UNAUTHORIZED", + "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } - }, - "FILES_TOO_LARGE": { - "summary": "FILES_TOO_LARGE", + } + }, + "schema": { + "$ref": "#/components/schemas/Error" + } + } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + }, + "403": { + "content": { + "application/json": { + "examples": { + "AUTH_FORBIDDEN": { + "summary": "AUTH_FORBIDDEN", "value": { - "success": false, - "code": "FILES_TOO_LARGE", - "message": "file_size_exceeded", - "description": "The file is too large. Upload a smaller file.", + "code": "AUTH_FORBIDDEN", + "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } - }, - "FILES_TYPE_NOT_ALLOWED": { - "summary": "FILES_TYPE_NOT_ALLOWED", + } + }, + "schema": { + "$ref": "#/components/schemas/Error" + } + } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + }, + "429": { + "content": { + "application/json": { + "examples": { + "AUTH_RATE_LIMITED": { + "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, - "code": "FILES_TYPE_NOT_ALLOWED", - "message": "file_type_not_allowed", - "description": "This file type is not allowed. Upload a supported file type.", + "code": "AUTH_RATE_LIMITED", + "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } - }, - "FILES_UNREADABLE": { - "summary": "FILES_UNREADABLE", + } + }, + "schema": { + "$ref": "#/components/schemas/Error" + } + } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + }, + "500": { + "content": { + "application/json": { + "examples": { + "INTERNAL_ERROR": { + "summary": "INTERNAL_ERROR", "value": { - "success": false, - "code": "FILES_UNREADABLE", - "message": "file_download_failed", - "description": "We could not read the uploaded file. Check the file and try again.", + "code": "INTERNAL_ERROR", + "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } - }, + } + }, + "schema": { + "$ref": "#/components/schemas/Error" + } + } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } + }, + "summary": "Delete Member from Instance", + "tags": [ + "Instances" + ], + "x-sdk": true + }, + "put": { + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "user_id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "header", + "name": "Idempotency-Key", + "required": false, + "schema": { + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "maxLength": 255, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateInstanceMemberIn" + } + } + }, + "description": "Update instance member role" + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Success" + } + } + }, + "description": "Member role updated successfully" + }, + "400": { + "content": { + "application/json": { + "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `FILES_UNREADABLE`, `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "FILES_UNREADABLE": { - "summary": "FILES_UNREADABLE", - "value": { - "success": false, - "code": "FILES_UNREADABLE", - "message": "file_download_failed", - "description": "We could not read the uploaded file. Check the file and try again.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } - }, - "delete": { - "x-sdk": true, + }, + "summary": "Update Instance Member Role", "tags": [ - "Customers" + "Instances" ], - "summary": "Delete Customer", + "x-sdk": true + } + }, + "/v1/instances/{id}/ownership": { + "post": { "parameters": [ { - "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "in_000000000000" - }, + "in": "path", + "name": "id", "required": true, - "name": "instance_id", - "in": "path" - }, - { "schema": { - "type": "string", - "minLength": 15, + "example": "in_000000000000", "maxLength": 15, - "example": "re_000000000000" - }, - "required": true, - "name": "id", - "in": "path" + "minLength": 15, + "type": "string" + } }, { + "in": "header", + "name": "Idempotency-Key", + "required": false, "schema": { - "type": "string", - "maxLength": 255, "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" - }, - "required": false, - "name": "Idempotency-Key", - "in": "header" + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "maxLength": 255, + "type": "string" + } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MigrateInstanceOwnershipIn" + } + } + }, + "description": "Transfer instance ownership to another current member" + }, "responses": { "200": { - "description": "Customer deleted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Success" } } - } + }, + "description": "Ownership transferred" }, "400": { - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } + }, + "summary": "Migrate Instance Ownership", + "tags": [ + "Instances" + ], + "x-sdk": true } }, - "/v1/instances/{instance_id}/limits/customers/{id}": { + "/v1/instances/{instance_id}/billing/fees": { "get": { - "x-sdk": true, - "tags": [ - "Customers" - ], - "summary": "Retrieve Customer Limits", + "description": "Get all fees for an instance, sorted by payment method (fiat first, then blockchain)", "parameters": [ { - "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, + "in": "path", "name": "instance_id", - "in": "path" - }, - { + "required": true, "schema": { - "type": "string", - "minLength": 15, + "description": "Instance id", + "example": "in_000000000000", "maxLength": 15, - "example": "re_000000000000" - }, - "required": true, - "name": "id", - "in": "path" + "minLength": 15, + "type": "string" + } } ], "responses": { "200": { - "description": "Get customer limits", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/GetCustomerLimitsOut" + "$ref": "#/components/schemas/GetFeesOut" } } - } + }, + "description": "Instance fees retrieved and sorted" }, "400": { - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Error" - }, - "examples": { - "AUTH_FORBIDDEN": { - "summary": "AUTH_FORBIDDEN", - "value": { - "success": false, - "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", - "description": "You do not have permission to perform this action.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" + "properties": { + "message": { + "type": "string" } - } + }, + "required": [ + "message" + ], + "type": "object" } } - } + }, + "description": "User not allowed" }, "404": { - "description": "Possible error codes: `CUSTOMERS_NOT_FOUND`. See the Error responses section for retry semantics.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Error" - }, - "examples": { - "CUSTOMERS_NOT_FOUND": { - "summary": "CUSTOMERS_NOT_FOUND", - "value": { - "success": false, - "code": "CUSTOMERS_NOT_FOUND", - "message": "customer_not_found", - "description": "The requested customer was not found.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" + "properties": { + "message": { + "type": "string" } - } + }, + "required": [ + "message" + ], + "type": "object" } } - } + }, + "description": "Instance not found" }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } - } - }, - "/v1/instances/{instance_id}/customers/{customer_id}/rfi": { - "get": { - "x-sdk": true, + }, + "summary": "Get Instance Fees", "tags": [ - "Customers" + "Fees" ], - "summary": "Get Open RFI for Customer", - "description": "Returns the open (pending) RFI for this customer, or null if the customer has no pending RFI.", + "x-sdk": true + } + }, + "/v1/instances/{instance_id}/create-asset-trustline": { + "post": { "parameters": [ { + "in": "path", + "name": "instance_id", + "required": true, "schema": { - "type": "string", - "minLength": 15, + "example": "in_000000000000", "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, - "name": "instance_id", - "in": "path" + "minLength": 15, + "type": "string" + } }, { + "in": "header", + "name": "Idempotency-Key", + "required": false, "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "description": "Customer ID", - "example": "re_000000000000" - }, - "required": true, - "name": "customer_id", - "in": "path" + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "maxLength": 255, + "type": "string" + } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "properties": { + "address": { + "type": "string" + } + }, + "required": [ + "address" + ], + "type": "object" + } + } + } + }, "responses": { "200": { - "description": "Open RFI, or null if none", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Rfi" + "properties": { + "xdr": { + "type": "string" + } + }, + "required": [ + "xdr" + ], + "type": "object" } } - } + }, + "description": "Create asset trustline" }, "400": { - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } - }, - "post": { - "x-sdk": true, + }, + "summary": "Create Asset Trustline", "tags": [ - "Customers" + "Stellar" ], - "summary": "Submit RFI Response", - "description": "Submit a flat response object for the open RFI. On success flips kyc_status back to verifying. Returns `{ success: false, reason }` when no pending RFI exists, callers should refetch the RFI state instead of retrying.", + "x-sdk": true + } + }, + "/v1/instances/{instance_id}/customers": { + "get": { "parameters": [ { + "in": "path", + "name": "instance_id", + "required": true, + "schema": { + "example": "in_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + } + }, + { + "in": "query", + "name": "limit", + "required": false, + "schema": { + "description": "Number of items to return", + "enum": [ + "10", + "50", + "100", + "200", + "500", + "1000" + ], + "example": "50", + "type": "string" + } + }, + { + "in": "query", + "name": "offset", + "required": false, + "schema": { + "description": "Number of items to skip", + "enum": [ + "0", + "10", + "50", + "100", + "200", + "500", + "1000" + ], + "example": "0", + "type": "string" + } + }, + { + "in": "query", + "name": "starting_after", + "required": false, + "schema": { + "description": "A cursor for use in pagination. starting_after is an object ID that defines your place in the list.", + "example": "pi_123", + "type": "string" + } + }, + { + "in": "query", + "name": "ending_before", + "required": false, + "schema": { + "description": "A cursor for use in pagination. ending_before is an object ID that defines your place in the list.", + "example": "pi_123", + "type": "string" + } + }, + { + "in": "query", + "name": "full_name", + "required": false, "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, - "name": "instance_id", - "in": "path" + "type": "string" + } }, { + "in": "query", + "name": "customer_name", + "required": false, "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "description": "Customer ID", - "example": "re_000000000000" - }, - "required": true, + "type": "string" + } + }, + { + "in": "query", + "name": "status", + "required": false, + "schema": { + "enum": [ + "verifying", + "approved", + "rejected", + "deprecated", + "pending_review", + "awaiting_contract", + "compliance_request", + "approved_rfi" + ], + "type": "string" + } + }, + { + "in": "query", "name": "customer_id", - "in": "path" + "required": false, + "schema": { + "type": "string" + } }, { + "in": "query", + "name": "bank_account_id", + "required": false, "schema": { - "type": "string", - "maxLength": 255, - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" - }, + "type": "string" + } + }, + { + "in": "query", + "name": "country", "required": false, - "name": "Idempotency-Key", - "in": "header" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": {} - } + "schema": { + "type": "string" } } - }, + ], "responses": { "200": { - "description": "RFI submitted (success: true) or rejected because no pending RFI exists (success: false)", "content": { "application/json": { "schema": { "anyOf": [ { - "type": "object", "properties": { - "success": { - "type": "boolean", - "enum": [ - true - ] + "data": { + "items": { + "$ref": "#/components/schemas/CustomerOut" + }, + "type": "array" + }, + "pagination": { + "$ref": "#/components/schemas/PaginationMetadata" } }, "required": [ - "success" - ] + "data", + "pagination" + ], + "type": "object" }, { - "type": "object", - "properties": { - "success": { - "type": "boolean", - "enum": [ - false - ] - }, - "reason": { - "type": "string", - "enum": [ - "no_pending_rfi", - "already_resolved" - ] - } + "items": { + "$ref": "#/components/schemas/CustomerOut" }, - "required": [ - "success", - "reason" - ] + "type": "array" } ] } } - } + }, + "description": "List customers with pagination" }, "400": { - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `COMPLIANCE_RFI_INVALID`, `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "COMPLIANCE_RFI_INVALID": { - "summary": "COMPLIANCE_RFI_INVALID", - "value": { - "success": false, - "code": "COMPLIANCE_RFI_INVALID", - "message": "rfi_request_corrupt", - "description": "The information request could not be processed. Check the submitted fields.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } - } - }, - "/v1/instances/{instance_id}/customers/{customer_id}/bank-accounts": { - "post": { - "x-sdk": true, + }, + "summary": "Retrieve Customers", "tags": [ - "Bank Accounts" + "Customers" ], - "summary": "Add Bank Account", + "x-sdk": true + }, + "post": { "parameters": [ { - "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, + "in": "path", "name": "instance_id", - "in": "path" - }, - { + "required": true, "schema": { - "type": "string", - "minLength": 15, + "example": "in_000000000000", "maxLength": 15, - "description": "Customer ID", - "example": "re_000000000000" - }, - "required": true, - "name": "customer_id", - "in": "path" + "minLength": 15, + "type": "string" + } }, { + "in": "header", + "name": "Idempotency-Key", + "required": false, "schema": { - "type": "string", - "maxLength": 255, "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" - }, - "required": false, - "name": "Idempotency-Key", - "in": "header" + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "maxLength": 255, + "type": "string" + } } ], "requestBody": { - "description": "Create a new bank account", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateBankAccountIn" + "$ref": "#/components/schemas/CreateCustomerIn" } } - } + }, + "description": "Create a new customer" }, "responses": { "200": { - "description": "Add bank account", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/BankAccountOut" + "properties": { + "customer_id": { + "type": "string" + }, + "id": { + "type": "string" + } + }, + "required": [ + "id", + "customer_id" + ], + "type": "object" } } - } + }, + "description": "Create customer" }, "400": { - "description": "Possible error codes: `BANK_ACCOUNTS_INVALID_BANK_CODE`, `BANK_ACCOUNTS_INVALID_ROUTING`, `BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED`, `BANK_ACCOUNTS_RTP_NOT_SUPPORTED`, `CUSTOMERS_COUNTRY_NOT_SUPPORTED`, `CUSTOMERS_INVALID_PHONE`, `CUSTOMERS_INVALID_TAX_ID`, `FILES_UNREADABLE`, `VALIDATION_FAILED`, `VALIDATION_INVALID_REQUEST`, `VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED`, `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "BANK_ACCOUNTS_INVALID_BANK_CODE": { - "summary": "BANK_ACCOUNTS_INVALID_BANK_CODE", + "CUSTOMERS_ALREADY_APPROVED": { + "summary": "CUSTOMERS_ALREADY_APPROVED", "value": { - "success": false, - "code": "BANK_ACCOUNTS_INVALID_BANK_CODE", - "message": "bank_accounts_invalid_bank_code", - "description": "The bank code provided is not valid for this payment rail. The message lists where to fetch the valid codes.", + "code": "CUSTOMERS_ALREADY_APPROVED", + "description": "This customer is already approved.", "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "BANK_ACCOUNTS_INVALID_ROUTING": { - "summary": "BANK_ACCOUNTS_INVALID_ROUTING", - "value": { + "message": "customer_already_approved", "success": false, - "code": "BANK_ACCOUNTS_INVALID_ROUTING", - "message": "The routing number must be a valid 9-digit ABA routing number.", - "description": "The routing number provided is not valid. Check the number and try again.", - "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED": { - "summary": "BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED", + "CUSTOMERS_BUSINESS_ENHANCED_NOT_AVAILABLE": { + "summary": "CUSTOMERS_BUSINESS_ENHANCED_NOT_AVAILABLE", "value": { - "success": false, - "code": "BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED", - "message": "unsupported_banking_partner", - "description": "This banking option is not supported for this operation.", + "code": "CUSTOMERS_BUSINESS_ENHANCED_NOT_AVAILABLE", + "description": "Enhanced verification is not available for business customers. Use standard verification (kyc_type: standard) for businesses.", "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "BANK_ACCOUNTS_RTP_NOT_SUPPORTED": { - "summary": "BANK_ACCOUNTS_RTP_NOT_SUPPORTED", - "value": { + "message": "business_enhanced_not_available", "success": false, - "code": "BANK_ACCOUNTS_RTP_NOT_SUPPORTED", - "message": "The provided routing number does not support RTP transactions.", - "description": "The provided routing number does not support instant payments.", - "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "CUSTOMERS_COUNTRY_NOT_SUPPORTED": { - "summary": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", + "CUSTOMERS_ENHANCED_KYC_REQUIRED": { + "summary": "CUSTOMERS_ENHANCED_KYC_REQUIRED", "value": { - "success": false, - "code": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", - "message": "country_not_supported", - "description": "This country is not supported for this operation.", + "code": "CUSTOMERS_ENHANCED_KYC_REQUIRED", + "description": "Individuals from high-risk countries must use enhanced verification (kyc_type: enhanced); standard verification is not available for them. See https://www.blindpay.com/docs/kb/supported-countries for country tiers.", "errors": [], + "message": "only_enhanced_kyc_allowed_for_high_risk_countries", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "CUSTOMERS_INVALID_PHONE": { "summary": "CUSTOMERS_INVALID_PHONE", "value": { - "success": false, "code": "CUSTOMERS_INVALID_PHONE", - "message": "invalid_phone_number", "description": "The phone number provided is not valid. Check the number and try again.", "errors": [], + "message": "invalid_phone_number", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "CUSTOMERS_INVALID_TAX_ID": { "summary": "CUSTOMERS_INVALID_TAX_ID", "value": { - "success": false, "code": "CUSTOMERS_INVALID_TAX_ID", - "message": "invalid_cpf_or_rg_tax_id", "description": "The tax ID provided is not valid. Check the value and try again.", "errors": [], + "message": "invalid_cpf_or_rg_tax_id", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "FILES_TOO_LARGE": { + "summary": "FILES_TOO_LARGE", + "value": { + "code": "FILES_TOO_LARGE", + "description": "The file is too large. Upload a smaller file.", + "errors": [], + "message": "file_size_exceeded", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "FILES_TYPE_NOT_ALLOWED": { + "summary": "FILES_TYPE_NOT_ALLOWED", + "value": { + "code": "FILES_TYPE_NOT_ALLOWED", + "description": "This file type is not allowed. Upload a supported file type.", + "errors": [], + "message": "file_type_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "FILES_UNREADABLE": { "summary": "FILES_UNREADABLE", "value": { - "success": false, "code": "FILES_UNREADABLE", - "message": "file_download_failed", "description": "We could not read the uploaded file. Check the file and try again.", "errors": [], + "message": "file_download_failed", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "TOS_ALREADY_ACCEPTED": { + "summary": "TOS_ALREADY_ACCEPTED", + "value": { + "code": "TOS_ALREADY_ACCEPTED", + "description": "These terms of service were already accepted.", + "errors": [], + "message": "tos_id_already_accepted", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "TOS_NOT_ACCEPTED": { + "summary": "TOS_NOT_ACCEPTED", + "value": { + "code": "TOS_NOT_ACCEPTED", + "description": "The terms of service must be accepted before continuing.", + "errors": [], + "message": "please_accept_terms_of_service", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "TOS_NOT_FOUND": { + "summary": "TOS_NOT_FOUND", + "value": { + "code": "TOS_NOT_FOUND", + "description": "The requested terms of service record was not found.", + "errors": [], + "message": "tos_not_found", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "VALIDATION_INVALID_REQUEST": { - "summary": "VALIDATION_INVALID_REQUEST", + "VALIDATION_MISSING_REQUIRED_FIELDS": { + "summary": "VALIDATION_MISSING_REQUIRED_FIELDS", "value": { - "success": false, - "code": "VALIDATION_INVALID_REQUEST", - "message": "invalid_body", - "description": "The request is not valid for this operation. Check the parameters and try again.", + "code": "VALIDATION_MISSING_REQUIRED_FIELDS", + "description": "Required fields are missing. Provide the missing fields and try again.", "errors": [], + "message": "missing_required_fields", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED": { "summary": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", "value": { - "success": false, "code": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", - "message": "id_doc_front_file_required", "description": "Additional documents are required to create this virtual account. Upload the requested documents.", "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { - "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "value": { + "message": "id_doc_front_file_required", "success": false, - "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "message": "virtual_account_provision_failed", - "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", - "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `CUSTOMERS_ALREADY_APPROVED`, `CUSTOMERS_BUSINESS_ENHANCED_NOT_AVAILABLE`, `CUSTOMERS_ENHANCED_KYC_REQUIRED`, `CUSTOMERS_INVALID_PHONE`, `CUSTOMERS_INVALID_TAX_ID`, `FILES_TOO_LARGE`, `FILES_TYPE_NOT_ALLOWED`, `FILES_UNREADABLE`, `TOS_ALREADY_ACCEPTED`, `TOS_NOT_ACCEPTED`, `TOS_NOT_FOUND`, `VALIDATION_FAILED`, `VALIDATION_MISSING_REQUIRED_FIELDS`, `VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - } - } - } - }, - "422": { - "description": "Possible error codes: `CUSTOMERS_INVALID_DATA`. See the Error responses section for retry semantics.", - "content": { - "application/json": { + }, "schema": { "$ref": "#/components/schemas/Error" - }, - "examples": { - "CUSTOMERS_INVALID_DATA": { - "summary": "CUSTOMERS_INVALID_DATA", - "value": { - "success": false, - "code": "CUSTOMERS_INVALID_DATA", - "message": "invalid_customer_data", - "description": "The customer data was rejected by the banking provider. Check the highlighted fields and try again.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `FILES_UNREADABLE`, `INTERNAL_ERROR`, `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "FILES_UNREADABLE": { "summary": "FILES_UNREADABLE", "value": { - "success": false, "code": "FILES_UNREADABLE", - "message": "file_download_failed", "description": "We could not read the uploaded file. Check the file and try again.", "errors": [], + "message": "file_download_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { - "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "value": { + "message": "internal_error", "success": false, - "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "message": "virtual_account_provision_failed", - "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", - "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - } - } - } - }, - "502": { - "description": "Possible error codes: `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics.", - "content": { - "application/json": { + }, "schema": { "$ref": "#/components/schemas/Error" - }, - "examples": { - "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { - "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "value": { - "success": false, - "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "message": "virtual_account_provision_failed", - "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } } } - } + }, + "description": "Possible error codes: `FILES_UNREADABLE`, `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } - }, - "get": { - "x-sdk": true, + }, + "summary": "Create Customer", "tags": [ - "Bank Accounts" + "Customers" ], - "summary": "Retrieve Bank Accounts", + "x-sdk": true + } + }, + "/v1/instances/{instance_id}/customers/{customer_id}/bank-accounts": { + "get": { "parameters": [ { + "in": "path", + "name": "instance_id", + "required": true, "schema": { - "type": "string", - "minLength": 15, + "example": "in_000000000000", "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, - "name": "instance_id", - "in": "path" + "minLength": 15, + "type": "string" + } }, { + "in": "path", + "name": "customer_id", + "required": true, "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, "description": "Customer ID", - "example": "re_000000000000" - }, - "required": true, - "name": "customer_id", - "in": "path" + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + } }, { + "in": "query", + "name": "status", + "required": false, "schema": { - "type": "string", "enum": [ "verifying", "approved", "rejected", "deprecated" - ] - }, - "required": false, - "name": "status", - "in": "query" + ], + "type": "string" + } }, { + "in": "query", + "name": "type", + "required": false, "schema": { - "type": "string", "enum": [ "wire", "ach", @@ -39511,13838 +38679,14830 @@ "international_swift", "rtp", "sepa" - ] - }, - "required": false, - "name": "type", - "in": "query" + ], + "type": "string" + } }, { + "in": "query", + "name": "name", + "required": false, "schema": { "type": "string" - }, - "required": false, - "name": "name", - "in": "query" + } }, { + "in": "query", + "name": "bank_account_id", + "required": false, "schema": { "type": "string" - }, - "required": false, - "name": "bank_account_id", - "in": "query" + } }, { + "in": "query", + "name": "country", + "required": false, "schema": { "type": "string" - }, - "required": false, - "name": "country", - "in": "query" + } } ], "responses": { "200": { - "description": "Get bank accounts", "content": { "application/json": { "schema": { - "type": "array", "items": { "$ref": "#/components/schemas/BankAccountOut" - } + }, + "type": "array" } } - } + }, + "description": "Get bank accounts" }, "400": { - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } - } - }, - "/v1/instances/{instance_id}/customers/{customer_id}/bank-accounts/{id}": { - "get": { - "x-sdk": true, + }, + "summary": "Retrieve Bank Accounts", "tags": [ "Bank Accounts" ], - "summary": "Retrieve Bank Account", + "x-sdk": true + }, + "post": { "parameters": [ { + "in": "path", + "name": "instance_id", + "required": true, "schema": { - "type": "string", - "minLength": 15, + "example": "in_000000000000", "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, - "name": "instance_id", - "in": "path" + "minLength": 15, + "type": "string" + } }, { + "in": "path", + "name": "customer_id", + "required": true, "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, "description": "Customer ID", - "example": "re_000000000000" - }, - "required": true, - "name": "customer_id", - "in": "path" + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + } }, { + "in": "header", + "name": "Idempotency-Key", + "required": false, "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "bk_000000000000" - }, - "required": true, - "name": "id", - "in": "path" + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "maxLength": 255, + "type": "string" + } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateBankAccountIn" + } + } + }, + "description": "Create a new bank account" + }, "responses": { "200": { - "description": "Get bank account", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BankAccountOut" } } - } + }, + "description": "Add bank account" }, "400": { - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { + "BANK_ACCOUNTS_INVALID_BANK_CODE": { + "summary": "BANK_ACCOUNTS_INVALID_BANK_CODE", + "value": { + "code": "BANK_ACCOUNTS_INVALID_BANK_CODE", + "description": "The bank code provided is not valid for this payment rail. The message lists where to fetch the valid codes.", + "errors": [], + "message": "bank_accounts_invalid_bank_code", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "BANK_ACCOUNTS_INVALID_ROUTING": { + "summary": "BANK_ACCOUNTS_INVALID_ROUTING", + "value": { + "code": "BANK_ACCOUNTS_INVALID_ROUTING", + "description": "The routing number provided is not valid. Check the number and try again.", + "errors": [], + "message": "The routing number must be a valid 9-digit ABA routing number.", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED": { + "summary": "BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED", + "value": { + "code": "BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED", + "description": "This banking option is not supported for this operation.", + "errors": [], + "message": "unsupported_banking_partner", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "BANK_ACCOUNTS_RTP_NOT_SUPPORTED": { + "summary": "BANK_ACCOUNTS_RTP_NOT_SUPPORTED", + "value": { + "code": "BANK_ACCOUNTS_RTP_NOT_SUPPORTED", + "description": "The provided routing number does not support instant payments.", + "errors": [], + "message": "The provided routing number does not support RTP transactions.", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "CUSTOMERS_COUNTRY_NOT_SUPPORTED": { + "summary": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", + "value": { + "code": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", + "description": "This country is not supported for this operation.", + "errors": [], + "message": "country_not_supported", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "CUSTOMERS_INVALID_PHONE": { + "summary": "CUSTOMERS_INVALID_PHONE", + "value": { + "code": "CUSTOMERS_INVALID_PHONE", + "description": "The phone number provided is not valid. Check the number and try again.", + "errors": [], + "message": "invalid_phone_number", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "CUSTOMERS_INVALID_TAX_ID": { + "summary": "CUSTOMERS_INVALID_TAX_ID", + "value": { + "code": "CUSTOMERS_INVALID_TAX_ID", + "description": "The tax ID provided is not valid. Check the value and try again.", + "errors": [], + "message": "invalid_cpf_or_rg_tax_id", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "FILES_UNREADABLE": { + "summary": "FILES_UNREADABLE", + "value": { + "code": "FILES_UNREADABLE", + "description": "We could not read the uploaded file. Check the file and try again.", + "errors": [], + "message": "file_download_failed", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VALIDATION_INVALID_REQUEST": { + "summary": "VALIDATION_INVALID_REQUEST", + "value": { + "code": "VALIDATION_INVALID_REQUEST", + "description": "The request is not valid for this operation. Check the parameters and try again.", + "errors": [], + "message": "invalid_body", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED": { + "summary": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", + "value": { + "code": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", + "description": "Additional documents are required to create this virtual account. Upload the requested documents.", + "errors": [], + "message": "id_doc_front_file_required", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { + "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "value": { + "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", + "errors": [], + "message": "virtual_account_provision_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `BANK_ACCOUNTS_INVALID_BANK_CODE`, `BANK_ACCOUNTS_INVALID_ROUTING`, `BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED`, `BANK_ACCOUNTS_RTP_NOT_SUPPORTED`, `CUSTOMERS_COUNTRY_NOT_SUPPORTED`, `CUSTOMERS_INVALID_PHONE`, `CUSTOMERS_INVALID_TAX_ID`, `FILES_UNREADABLE`, `VALIDATION_FAILED`, `VALIDATION_INVALID_REQUEST`, `VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED`, `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, - "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", + "422": { "content": { "application/json": { + "examples": { + "CUSTOMERS_INVALID_DATA": { + "summary": "CUSTOMERS_INVALID_DATA", + "value": { + "code": "CUSTOMERS_INVALID_DATA", + "description": "The customer data was rejected by the banking provider. Check the highlighted fields and try again.", + "errors": [], + "message": "invalid_customer_data", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } + }, "schema": { "$ref": "#/components/schemas/Error" - }, + } + } + }, + "description": "Possible error codes: `CUSTOMERS_INVALID_DATA`. See the Error responses section for retry semantics." + }, + "429": { + "content": { + "application/json": { "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { + "FILES_UNREADABLE": { + "summary": "FILES_UNREADABLE", + "value": { + "code": "FILES_UNREADABLE", + "description": "We could not read the uploaded file. Check the file and try again.", + "errors": [], + "message": "file_download_failed", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { + "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "value": { + "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", + "errors": [], + "message": "virtual_account_provision_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `FILES_UNREADABLE`, `INTERNAL_ERROR`, `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics." + }, + "502": { + "content": { + "application/json": { + "examples": { + "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { + "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "value": { + "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", + "errors": [], + "message": "virtual_account_provision_failed", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } + }, + "schema": { + "$ref": "#/components/schemas/Error" + } + } + }, + "description": "Possible error codes: `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics." } - } - }, - "delete": { - "x-sdk": true, + }, + "summary": "Add Bank Account", "tags": [ "Bank Accounts" ], - "summary": "Remove Bank Account", + "x-sdk": true + } + }, + "/v1/instances/{instance_id}/customers/{customer_id}/bank-accounts/{bank_account_id}/offramp-wallets": { + "get": { "parameters": [ { - "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, + "in": "path", "name": "instance_id", - "in": "path" - }, - { + "required": true, "schema": { - "type": "string", - "minLength": 15, + "example": "in_000000000000", "maxLength": 15, - "description": "Customer ID", - "example": "re_000000000000" - }, - "required": true, - "name": "customer_id", - "in": "path" + "minLength": 15, + "type": "string" + } }, { + "in": "path", + "name": "customer_id", + "required": true, "schema": { - "type": "string", - "minLength": 15, + "description": "Customer ID", + "example": "re_000000000000", "maxLength": 15, - "example": "bk_000000000000" - }, - "required": true, - "name": "id", - "in": "path" + "minLength": 15, + "type": "string" + } }, { + "in": "path", + "name": "bank_account_id", + "required": true, "schema": { - "type": "string", - "maxLength": 255, - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" - }, - "required": false, - "name": "Idempotency-Key", - "in": "header" + "example": "ba_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + } } ], "responses": { "200": { - "description": "Delete bank account", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Success" + "items": { + "$ref": "#/components/schemas/OfframpWallet" + }, + "type": "array" } } - } + }, + "description": "Get offramp wallets" }, "400": { - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, - "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", + "404": { "content": { "application/json": { + "examples": { + "WALLETS_NOT_FOUND": { + "summary": "WALLETS_NOT_FOUND", + "value": { + "code": "WALLETS_NOT_FOUND", + "description": "The requested wallet was not found.", + "errors": [], + "message": "wallet_not_found", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } + }, "schema": { "$ref": "#/components/schemas/Error" - }, + } + } + }, + "description": "Possible error codes: `WALLETS_NOT_FOUND`. See the Error responses section for retry semantics." + }, + "429": { + "content": { + "application/json": { "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } - } - }, - "/v1/instances/{instance_id}/customers/{customer_id}/virtual-accounts": { - "post": { - "x-sdk": true, + }, + "summary": "Get Offramp Wallets", "tags": [ - "Virtual Accounts" + "Offramp Wallets" ], - "summary": "Create Virtual Account", + "x-sdk": true + }, + "post": { "parameters": [ { + "in": "path", + "name": "instance_id", + "required": true, "schema": { - "type": "string", - "minLength": 15, + "example": "in_000000000000", "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, - "name": "instance_id", - "in": "path" + "minLength": 15, + "type": "string" + } }, { + "in": "path", + "name": "customer_id", + "required": true, "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, "description": "Customer ID", - "example": "re_000000000000" - }, + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + } + }, + { + "in": "path", + "name": "bank_account_id", "required": true, - "name": "customer_id", - "in": "path" + "schema": { + "example": "ba_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + } }, { + "in": "header", + "name": "Idempotency-Key", + "required": false, "schema": { - "type": "string", - "maxLength": 255, "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" - }, - "required": false, - "name": "Idempotency-Key", - "in": "header" + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "maxLength": 255, + "type": "string" + } } ], "requestBody": { - "description": "Create a new virtual account", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateVirtualAccountIn" + "properties": { + "external_id": { + "example": "your_external_id", + "type": [ + "string", + "null" + ] + }, + "network": { + "enum": [ + "tron", + "solana", + "solana_devnet", + "arbitrum", + "base", + "ethereum", + "polygon", + "sepolia", + "arbitrum_sepolia", + "base_sepolia", + "polygon_amoy" + ], + "example": "tron", + "type": "string" + } + }, + "required": [ + "network" + ], + "type": "object" } } - } + }, + "description": "Create a new offramp wallet" }, "responses": { "200": { - "description": "Create virtual account", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/VirtualAccountOut" + "properties": { + "address": { + "example": "TALJN9zTTEL9TVBb4WuTt6wLvPqJZr3hvb", + "type": "string" + }, + "circle_wallet_id": { + "example": "01234567-abcd-efgh-ijkl-012345678901", + "type": [ + "string", + "null" + ] + }, + "external_id": { + "example": "your_external_id", + "type": [ + "string", + "null" + ] + }, + "id": { + "example": "ow_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "network": { + "enum": [ + "tron", + "solana", + "solana_devnet", + "arbitrum", + "base", + "ethereum", + "polygon", + "sepolia", + "arbitrum_sepolia", + "base_sepolia", + "polygon_amoy" + ], + "example": "tron", + "type": "string" + } + }, + "required": [ + "id", + "network", + "address" + ], + "type": "object" } } - } + }, + "description": "Create offramp wallet" }, "400": { - "description": "Possible error codes: `BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED`, `BLOCKCHAIN_NETWORK_NOT_SUPPORTED`, `CUSTOMERS_COUNTRY_NOT_SUPPORTED`, `CUSTOMERS_ENHANCED_KYC_REQUIRED`, `CUSTOMERS_ID_DOCUMENT_INVALID`, `CUSTOMERS_KYC_NOT_APPROVED`, `FILES_UNREADABLE`, `VALIDATION_FAILED`, `VALIDATION_MISSING_REQUIRED_FIELDS`, `VIRTUAL_ACCOUNTS_DISABLED`, `VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED`, `VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED": { - "summary": "BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED", + "BANK_ACCOUNTS_INCOMPLETE": { + "summary": "BANK_ACCOUNTS_INCOMPLETE", "value": { - "success": false, - "code": "BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED", - "message": "unsupported_banking_partner", - "description": "This banking option is not supported for this operation.", + "code": "BANK_ACCOUNTS_INCOMPLETE", + "description": "The bank account details are incomplete for this payment method. Provide the missing fields.", "errors": [], + "message": "sepa_bank_account_incomplete", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "BLOCKCHAIN_NETWORK_NOT_SUPPORTED": { "summary": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", "value": { - "success": false, "code": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", - "message": "network_not_supported_on_dev_instance", "description": "This network or token combination is not supported for this operation.", "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "CUSTOMERS_COUNTRY_NOT_SUPPORTED": { - "summary": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", - "value": { - "success": false, - "code": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", - "message": "country_not_supported", - "description": "This country is not supported for this operation.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "CUSTOMERS_ENHANCED_KYC_REQUIRED": { - "summary": "CUSTOMERS_ENHANCED_KYC_REQUIRED", - "value": { - "success": false, - "code": "CUSTOMERS_ENHANCED_KYC_REQUIRED", - "message": "only_enhanced_kyc_allowed_for_high_risk_countries", - "description": "Individuals from high-risk countries must use enhanced verification (kyc_type: enhanced); standard verification is not available for them. See https://www.blindpay.com/docs/kb/supported-countries for country tiers.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "CUSTOMERS_ID_DOCUMENT_INVALID": { - "summary": "CUSTOMERS_ID_DOCUMENT_INVALID", - "value": { - "success": false, - "code": "CUSTOMERS_ID_DOCUMENT_INVALID", - "message": "id_doc_is_not_valid_passport_or_national_id", - "description": "The identity document is not an accepted passport or national ID. Provide a valid passport or national ID for this customer (a driver license is not accepted for high-risk countries).", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "CUSTOMERS_KYC_NOT_APPROVED": { - "summary": "CUSTOMERS_KYC_NOT_APPROVED", - "value": { - "success": false, - "code": "CUSTOMERS_KYC_NOT_APPROVED", - "message": "kyc_not_approved", - "description": "This customer has not completed verification yet. Complete the verification before continuing.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "FILES_UNREADABLE": { - "summary": "FILES_UNREADABLE", - "value": { + "message": "network_not_supported_on_dev_instance", "success": false, - "code": "FILES_UNREADABLE", - "message": "file_download_failed", - "description": "We could not read the uploaded file. Check the file and try again.", - "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VALIDATION_MISSING_REQUIRED_FIELDS": { - "summary": "VALIDATION_MISSING_REQUIRED_FIELDS", - "value": { - "success": false, - "code": "VALIDATION_MISSING_REQUIRED_FIELDS", - "message": "missing_required_fields", - "description": "Required fields are missing. Provide the missing fields and try again.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VIRTUAL_ACCOUNTS_DISABLED": { - "summary": "VIRTUAL_ACCOUNTS_DISABLED", - "value": { - "success": false, - "code": "VIRTUAL_ACCOUNTS_DISABLED", - "message": "virtual_accounts_not_enabled", - "description": "Virtual accounts are not enabled for this account. Contact support to enable them.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED": { - "summary": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", - "value": { - "success": false, - "code": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", - "message": "id_doc_front_file_required", - "description": "Additional documents are required to create this virtual account. Upload the requested documents.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED": { - "summary": "VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED", - "value": { + "message": "validation_failed", "success": false, - "code": "VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED", - "message": "us_state_not_supported", - "description": "Virtual accounts are not available for this country or region.", - "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `BANK_ACCOUNTS_INCOMPLETE`, `BLOCKCHAIN_NETWORK_NOT_SUPPORTED`, `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - } - } - } - }, - "404": { - "description": "Possible error codes: `CUSTOMERS_NOT_FOUND`, `INSTANCES_NOT_FOUND`, `WALLETS_NOT_FOUND`. See the Error responses section for retry semantics.", - "content": { - "application/json": { + }, "schema": { "$ref": "#/components/schemas/Error" - }, - "examples": { - "CUSTOMERS_NOT_FOUND": { - "summary": "CUSTOMERS_NOT_FOUND", - "value": { - "success": false, - "code": "CUSTOMERS_NOT_FOUND", - "message": "customer_not_found", - "description": "The requested customer was not found.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "INSTANCES_NOT_FOUND": { - "summary": "INSTANCES_NOT_FOUND", - "value": { - "success": false, - "code": "INSTANCES_NOT_FOUND", - "message": "instance_not_found", - "description": "The requested instance was not found.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "WALLETS_NOT_FOUND": { - "summary": "WALLETS_NOT_FOUND", - "value": { - "success": false, - "code": "WALLETS_NOT_FOUND", - "message": "wallet_not_found", - "description": "The requested wallet was not found.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `FILES_UNREADABLE`, `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "FILES_UNREADABLE": { - "summary": "FILES_UNREADABLE", - "value": { - "success": false, - "code": "FILES_UNREADABLE", - "message": "file_download_failed", - "description": "We could not read the uploaded file. Check the file and try again.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } - }, - "get": { - "x-sdk": true, + }, + "summary": "Create Offramp Wallet", "tags": [ - "Virtual Accounts" + "Offramp Wallets" ], - "summary": "Retrieve Virtual Accounts", + "x-sdk": true + } + }, + "/v1/instances/{instance_id}/customers/{customer_id}/bank-accounts/{bank_account_id}/offramp-wallets/{id}": { + "get": { "parameters": [ { + "in": "path", + "name": "instance_id", + "required": true, "schema": { - "type": "string", - "minLength": 15, + "example": "in_000000000000", "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, - "name": "instance_id", - "in": "path" + "minLength": 15, + "type": "string" + } }, { + "in": "path", + "name": "customer_id", + "required": true, "schema": { - "type": "string", + "description": "Customer ID", + "example": "re_000000000000", + "maxLength": 15, "minLength": 15, + "type": "string" + } + }, + { + "in": "path", + "name": "bank_account_id", + "required": true, + "schema": { + "example": "ba_000000000000", "maxLength": 15, - "description": "Customer ID", - "example": "re_000000000000" - }, + "minLength": 15, + "type": "string" + } + }, + { + "in": "path", + "name": "id", "required": true, - "name": "customer_id", - "in": "path" + "schema": { + "example": "ow_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + } } ], "responses": { "200": { - "description": "Get virtual accounts", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/VirtualAccountOut" - } + "$ref": "#/components/schemas/OfframpWallet" } } - } + }, + "description": "Get offramp wallet" }, "400": { - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } - } - }, - "/v1/instances/{instance_id}/customers/{customer_id}/virtual-accounts/{id}": { - "get": { - "x-sdk": true, + }, + "summary": "Get Offramp Wallet", "tags": [ - "Virtual Accounts" + "Offramp Wallets" ], - "summary": "Retrieve Virtual Account", + "x-sdk": true + } + }, + "/v1/instances/{instance_id}/customers/{customer_id}/bank-accounts/{id}": { + "delete": { "parameters": [ { + "in": "path", + "name": "instance_id", + "required": true, "schema": { - "type": "string", - "minLength": 15, + "example": "in_000000000000", "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, - "name": "instance_id", - "in": "path" + "minLength": 15, + "type": "string" + } }, { + "in": "path", + "name": "customer_id", + "required": true, "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, "description": "Customer ID", - "example": "re_000000000000" - }, + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + } + }, + { + "in": "path", + "name": "id", "required": true, - "name": "customer_id", - "in": "path" + "schema": { + "example": "bk_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + } }, { + "in": "header", + "name": "Idempotency-Key", + "required": false, "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "bk_000000000000" - }, - "required": true, - "name": "id", - "in": "path" + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "maxLength": 255, + "type": "string" + } } ], "responses": { "200": { - "description": "Get virtual account", "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/VirtualAccountOut" - }, - { - "type": [ - "object", - "null" - ] - } - ] + "$ref": "#/components/schemas/Success" } } - } + }, + "description": "Delete bank account" }, "400": { - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - } - } - } - }, - "422": { - "description": "Possible error codes: `DATA_INTEGRITY_ERROR`. See the Error responses section for retry semantics.", - "content": { - "application/json": { + }, "schema": { "$ref": "#/components/schemas/Error" - }, - "examples": { - "DATA_INTEGRITY_ERROR": { - "summary": "DATA_INTEGRITY_ERROR", - "value": { - "success": false, - "code": "DATA_INTEGRITY_ERROR", - "message": "data_integrity_error", - "description": "This record could not be loaded because it contains invalid stored data. Contact support with the ID below.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } - }, - "put": { - "x-sdk": true, + }, + "summary": "Remove Bank Account", "tags": [ - "Virtual Accounts" + "Bank Accounts" ], - "summary": "Update Virtual Account", + "x-sdk": true + }, + "get": { "parameters": [ { - "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, + "in": "path", "name": "instance_id", - "in": "path" - }, - { + "required": true, "schema": { - "type": "string", - "minLength": 15, + "example": "in_000000000000", "maxLength": 15, - "description": "Customer ID", - "example": "re_000000000000" - }, - "required": true, - "name": "customer_id", - "in": "path" + "minLength": 15, + "type": "string" + } }, { + "in": "path", + "name": "customer_id", + "required": true, "schema": { - "type": "string", - "minLength": 15, + "description": "Customer ID", + "example": "re_000000000000", "maxLength": 15, - "example": "bk_000000000000" - }, - "required": true, - "name": "id", - "in": "path" + "minLength": 15, + "type": "string" + } }, { + "in": "path", + "name": "id", + "required": true, "schema": { - "type": "string", - "maxLength": 255, - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" - }, - "required": false, - "name": "Idempotency-Key", - "in": "header" - } - ], - "requestBody": { - "description": "Update a virtual account", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateVirtualAccountIn" - } + "example": "bk_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" } } - }, + ], "responses": { "200": { - "description": "Update virtual account", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Success" + "$ref": "#/components/schemas/BankAccountOut" } } - } + }, + "description": "Get bank account" }, "400": { - "description": "Possible error codes: `BLOCKCHAIN_NETWORK_NOT_SUPPORTED`, `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "BLOCKCHAIN_NETWORK_NOT_SUPPORTED": { - "summary": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", - "value": { - "success": false, - "code": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", - "message": "network_not_supported_on_dev_instance", - "description": "This network or token combination is not supported for this operation.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - } - } - } - }, - "404": { - "description": "Possible error codes: `VIRTUAL_ACCOUNTS_NOT_FOUND`. See the Error responses section for retry semantics.", - "content": { - "application/json": { + }, "schema": { "$ref": "#/components/schemas/Error" - }, - "examples": { - "VIRTUAL_ACCOUNTS_NOT_FOUND": { - "summary": "VIRTUAL_ACCOUNTS_NOT_FOUND", - "value": { - "success": false, - "code": "VIRTUAL_ACCOUNTS_NOT_FOUND", - "message": "virtual_account_not_found", - "description": "The requested virtual account was not found.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } + }, + "summary": "Retrieve Bank Account", + "tags": [ + "Bank Accounts" + ], + "x-sdk": true } }, - "/v1/instances/{instance_id}/customers/{customer_id}/blockchain-wallets/sign-message": { + "/v1/instances/{instance_id}/customers/{customer_id}/blockchain-wallets": { "get": { - "x-sdk": true, - "tags": [ - "Blockchain Wallets" - ], - "summary": "Retrieve Blockchain Wallet Message", "parameters": [ { + "in": "path", + "name": "instance_id", + "required": true, "schema": { - "type": "string", - "minLength": 15, + "example": "in_000000000000", "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, - "name": "instance_id", - "in": "path" + "minLength": 15, + "type": "string" + } }, { + "in": "path", + "name": "customer_id", + "required": true, "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, "description": "Customer ID", - "example": "re_000000000000" - }, - "required": true, - "name": "customer_id", - "in": "path" + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + } } ], "responses": { "200": { - "description": "Get blockchain wallet sign message", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/BlockchainWalletMessageOut" + "items": { + "$ref": "#/components/schemas/BlockchainWalletOut" + }, + "type": "array" } } - } + }, + "description": "Get blockchain wallets" }, "400": { - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } - } - }, - "/v1/instances/{instance_id}/customers/{customer_id}/blockchain-wallets": { - "post": { - "x-sdk": true, + }, + "summary": "Retrieve Blockchain Wallets", "tags": [ "Blockchain Wallets" ], - "summary": "Add Blockchain Wallet", + "x-sdk": true + }, + "post": { "parameters": [ { + "in": "path", + "name": "instance_id", + "required": true, "schema": { - "type": "string", - "minLength": 15, + "example": "in_000000000000", "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, - "name": "instance_id", - "in": "path" + "minLength": 15, + "type": "string" + } }, { + "in": "path", + "name": "customer_id", + "required": true, "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, "description": "Customer ID", - "example": "re_000000000000" - }, - "required": true, - "name": "customer_id", - "in": "path" + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + } }, { + "in": "header", + "name": "Idempotency-Key", + "required": false, "schema": { - "type": "string", - "maxLength": 255, "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" - }, - "required": false, - "name": "Idempotency-Key", - "in": "header" + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "maxLength": 255, + "type": "string" + } } ], "requestBody": { - "description": "Create a new blockchain wallet", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateBlockchainWalletIn" } } - } + }, + "description": "Create a new blockchain wallet" }, "responses": { "200": { - "description": "Add blockchain wallet", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BlockchainWalletOut" } } - } + }, + "description": "Add blockchain wallet" }, "400": { - "description": "Possible error codes: `BLOCKCHAIN_NETWORK_NOT_SUPPORTED`, `VALIDATION_FAILED`, `WEBHOOKS_SIGNATURE_INVALID`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "BLOCKCHAIN_NETWORK_NOT_SUPPORTED": { "summary": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", "value": { - "success": false, "code": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", - "message": "network_not_supported_on_dev_instance", "description": "This network or token combination is not supported for this operation.", "errors": [], + "message": "network_not_supported_on_dev_instance", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "WEBHOOKS_SIGNATURE_INVALID": { "summary": "WEBHOOKS_SIGNATURE_INVALID", "value": { - "success": false, "code": "WEBHOOKS_SIGNATURE_INVALID", - "message": "invalid_signature", "description": "The webhook signature is missing or invalid.", "errors": [], + "message": "invalid_signature", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `BLOCKCHAIN_NETWORK_NOT_SUPPORTED`, `VALIDATION_FAILED`, `WEBHOOKS_SIGNATURE_INVALID`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } - }, - "get": { - "x-sdk": true, + }, + "summary": "Add Blockchain Wallet", "tags": [ "Blockchain Wallets" ], - "summary": "Retrieve Blockchain Wallets", + "x-sdk": true + } + }, + "/v1/instances/{instance_id}/customers/{customer_id}/blockchain-wallets/sign-message": { + "get": { "parameters": [ { + "in": "path", + "name": "instance_id", + "required": true, "schema": { - "type": "string", - "minLength": 15, + "example": "in_000000000000", "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, - "name": "instance_id", - "in": "path" + "minLength": 15, + "type": "string" + } }, { + "in": "path", + "name": "customer_id", + "required": true, "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, "description": "Customer ID", - "example": "re_000000000000" - }, - "required": true, - "name": "customer_id", - "in": "path" + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + } } ], "responses": { "200": { - "description": "Get blockchain wallets", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/BlockchainWalletOut" - } + "$ref": "#/components/schemas/BlockchainWalletMessageOut" } } - } + }, + "description": "Get blockchain wallet sign message" }, "400": { - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } - } - }, - "/v1/instances/{instance_id}/customers/{customer_id}/blockchain-wallets/{id}": { - "get": { - "x-sdk": true, + }, + "summary": "Retrieve Blockchain Wallet Message", "tags": [ "Blockchain Wallets" ], - "summary": "Retrieve Blockchain Wallet", + "x-sdk": true + } + }, + "/v1/instances/{instance_id}/customers/{customer_id}/blockchain-wallets/{id}": { + "delete": { "parameters": [ { + "in": "path", + "name": "instance_id", + "required": true, "schema": { - "type": "string", - "minLength": 15, + "example": "in_000000000000", "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, - "name": "instance_id", - "in": "path" + "minLength": 15, + "type": "string" + } }, { + "in": "path", + "name": "customer_id", + "required": true, "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, "description": "Customer ID", - "example": "re_000000000000" - }, - "required": true, - "name": "customer_id", - "in": "path" + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + } }, { + "in": "path", + "name": "id", + "required": true, "schema": { - "type": "string", - "minLength": 15, + "example": "bk_000000000000", "maxLength": 15, - "example": "bk_000000000000" - }, - "required": true, - "name": "id", - "in": "path" + "minLength": 15, + "type": "string" + } + }, + { + "in": "header", + "name": "Idempotency-Key", + "required": false, + "schema": { + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "maxLength": 255, + "type": "string" + } } ], "responses": { "200": { - "description": "Get blockchain wallet", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/BlockchainWalletOut" + "$ref": "#/components/schemas/Success" } } - } + }, + "description": "Delete blockchain wallet" }, "400": { - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "WALLETS_ATTACHED_TO_VIRTUAL_ACCOUNT": { + "summary": "WALLETS_ATTACHED_TO_VIRTUAL_ACCOUNT", + "value": { + "code": "WALLETS_ATTACHED_TO_VIRTUAL_ACCOUNT", + "description": "This wallet is attached to a virtual account and cannot be deleted. Delete the virtual account first.", + "errors": [], + "message": "wallet_attached_to_virtual_account", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `VALIDATION_FAILED`, `WALLETS_ATTACHED_TO_VIRTUAL_ACCOUNT`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, - "422": { - "description": "Possible error codes: `DATA_INTEGRITY_ERROR`. See the Error responses section for retry semantics.", + "404": { "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "DATA_INTEGRITY_ERROR": { - "summary": "DATA_INTEGRITY_ERROR", + "WALLETS_NOT_FOUND": { + "summary": "WALLETS_NOT_FOUND", "value": { - "success": false, - "code": "DATA_INTEGRITY_ERROR", - "message": "data_integrity_error", - "description": "This record could not be loaded because it contains invalid stored data. Contact support with the ID below.", + "code": "WALLETS_NOT_FOUND", + "description": "The requested wallet was not found.", "errors": [], + "message": "wallet_not_found", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `WALLETS_NOT_FOUND`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } - }, - "delete": { - "x-sdk": true, + }, + "summary": "Remove Blockchain Wallet", "tags": [ "Blockchain Wallets" ], - "summary": "Remove Blockchain Wallet", + "x-sdk": true + }, + "get": { "parameters": [ { - "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, + "in": "path", "name": "instance_id", - "in": "path" - }, - { + "required": true, "schema": { - "type": "string", - "minLength": 15, + "example": "in_000000000000", "maxLength": 15, - "description": "Customer ID", - "example": "re_000000000000" - }, - "required": true, - "name": "customer_id", - "in": "path" + "minLength": 15, + "type": "string" + } }, { + "in": "path", + "name": "customer_id", + "required": true, "schema": { - "type": "string", - "minLength": 15, + "description": "Customer ID", + "example": "re_000000000000", "maxLength": 15, - "example": "bk_000000000000" - }, - "required": true, - "name": "id", - "in": "path" + "minLength": 15, + "type": "string" + } }, { + "in": "path", + "name": "id", + "required": true, "schema": { - "type": "string", - "maxLength": 255, - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" - }, - "required": false, - "name": "Idempotency-Key", - "in": "header" + "example": "bk_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + } } ], "responses": { "200": { - "description": "Delete blockchain wallet", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Success" + "$ref": "#/components/schemas/BlockchainWalletOut" } } - } + }, + "description": "Get blockchain wallet" }, "400": { - "description": "Possible error codes: `VALIDATION_FAILED`, `WALLETS_ATTACHED_TO_VIRTUAL_ACCOUNT`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "WALLETS_ATTACHED_TO_VIRTUAL_ACCOUNT": { - "summary": "WALLETS_ATTACHED_TO_VIRTUAL_ACCOUNT", - "value": { + "message": "validation_failed", "success": false, - "code": "WALLETS_ATTACHED_TO_VIRTUAL_ACCOUNT", - "message": "wallet_attached_to_virtual_account", - "description": "This wallet is attached to a virtual account and cannot be deleted. Delete the virtual account first.", - "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, - "404": { - "description": "Possible error codes: `WALLETS_NOT_FOUND`. See the Error responses section for retry semantics.", + "422": { "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "WALLETS_NOT_FOUND": { - "summary": "WALLETS_NOT_FOUND", + "DATA_INTEGRITY_ERROR": { + "summary": "DATA_INTEGRITY_ERROR", "value": { - "success": false, - "code": "WALLETS_NOT_FOUND", - "message": "wallet_not_found", - "description": "The requested wallet was not found.", + "code": "DATA_INTEGRITY_ERROR", + "description": "This record could not be loaded because it contains invalid stored data. Contact support with the ID below.", "errors": [], + "message": "data_integrity_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `DATA_INTEGRITY_ERROR`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } - } - }, - "/v1/instances/{instance_id}/customers/{customer_id}/bank-accounts/{bank_account_id}/offramp-wallets": { - "post": { - "x-sdk": true, + }, + "summary": "Retrieve Blockchain Wallet", "tags": [ - "Offramp Wallets" + "Blockchain Wallets" ], - "summary": "Create Offramp Wallet", + "x-sdk": true + } + }, + "/v1/instances/{instance_id}/customers/{customer_id}/limit-increase": { + "get": { "parameters": [ { - "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, + "in": "path", "name": "instance_id", - "in": "path" - }, - { - "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "description": "Customer ID", - "example": "re_000000000000" - }, "required": true, - "name": "customer_id", - "in": "path" - }, - { "schema": { - "type": "string", - "minLength": 15, + "example": "in_000000000000", "maxLength": 15, - "example": "ba_000000000000" - }, - "required": true, - "name": "bank_account_id", - "in": "path" + "minLength": 15, + "type": "string" + } }, { + "in": "path", + "name": "customer_id", + "required": true, "schema": { - "type": "string", - "maxLength": 255, - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" - }, - "required": false, - "name": "Idempotency-Key", - "in": "header" - } - ], - "requestBody": { - "description": "Create a new offramp wallet", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "external_id": { - "type": [ - "string", - "null" - ], - "example": "your_external_id" - }, - "network": { - "type": "string", - "enum": [ - "tron", - "solana", - "solana_devnet", - "arbitrum", - "base", - "ethereum", - "polygon", - "sepolia", - "arbitrum_sepolia", - "base_sepolia", - "polygon_amoy" - ], - "example": "tron" - } - }, - "required": [ - "network" - ] - } + "description": "Customer ID", + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" } } - }, + ], "responses": { "200": { - "description": "Create offramp wallet", "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "ow_000000000000" - }, - "external_id": { - "type": [ - "string", - "null" - ], - "example": "your_external_id" - }, - "circle_wallet_id": { - "type": [ - "string", - "null" - ], - "example": "01234567-abcd-efgh-ijkl-012345678901" - }, - "network": { - "type": "string", - "enum": [ - "tron", - "solana", - "solana_devnet", - "arbitrum", - "base", - "ethereum", - "polygon", - "sepolia", - "arbitrum_sepolia", - "base_sepolia", - "polygon_amoy" - ], - "example": "tron" - }, - "address": { - "type": "string", - "example": "TALJN9zTTEL9TVBb4WuTt6wLvPqJZr3hvb" - } + "items": { + "$ref": "#/components/schemas/GetCustomerLimitIncreaseOut" }, - "required": [ - "id", - "network", - "address" - ] + "type": "array" } } - } + }, + "description": "List customer limit increase requests" }, "400": { - "description": "Possible error codes: `BANK_ACCOUNTS_INCOMPLETE`, `BLOCKCHAIN_NETWORK_NOT_SUPPORTED`, `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "BANK_ACCOUNTS_INCOMPLETE": { - "summary": "BANK_ACCOUNTS_INCOMPLETE", - "value": { - "success": false, - "code": "BANK_ACCOUNTS_INCOMPLETE", - "message": "sepa_bank_account_incomplete", - "description": "The bank account details are incomplete for this payment method. Provide the missing fields.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "BLOCKCHAIN_NETWORK_NOT_SUPPORTED": { - "summary": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", - "value": { - "success": false, - "code": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", - "message": "network_not_supported_on_dev_instance", - "description": "This network or token combination is not supported for this operation.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } - }, - "get": { - "x-sdk": true, + }, + "summary": "Retrieve Limit Increase Requests", "tags": [ - "Offramp Wallets" + "Customers" ], - "summary": "Get Offramp Wallets", + "x-sdk": true + }, + "post": { "parameters": [ { + "in": "path", + "name": "instance_id", + "required": true, "schema": { - "type": "string", - "minLength": 15, + "example": "in_000000000000", "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, - "name": "instance_id", - "in": "path" + "minLength": 15, + "type": "string" + } }, { + "in": "path", + "name": "customer_id", + "required": true, "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, "description": "Customer ID", - "example": "re_000000000000" - }, - "required": true, - "name": "customer_id", - "in": "path" + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + } }, { + "in": "header", + "name": "Idempotency-Key", + "required": false, "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "ba_000000000000" - }, - "required": true, - "name": "bank_account_id", - "in": "path" + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "maxLength": 255, + "type": "string" + } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomerLimitIncreaseIn" + } + } + }, + "description": "Request new limit increase" + }, "responses": { "200": { - "description": "Get offramp wallets", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OfframpWallet" - } + "$ref": "#/components/schemas/CustomerLimitIncreaseOut" } } - } + }, + "description": "Create customer limit increase" }, "400": { - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { + "CUSTOMERS_KYC_NOT_APPROVED": { + "summary": "CUSTOMERS_KYC_NOT_APPROVED", + "value": { + "code": "CUSTOMERS_KYC_NOT_APPROVED", + "description": "This customer has not completed verification yet. Complete the verification before continuing.", + "errors": [], + "message": "kyc_not_approved", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "FILES_TOO_LARGE": { + "summary": "FILES_TOO_LARGE", + "value": { + "code": "FILES_TOO_LARGE", + "description": "The file is too large. Upload a smaller file.", + "errors": [], + "message": "file_size_exceeded", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "FILES_TYPE_NOT_ALLOWED": { + "summary": "FILES_TYPE_NOT_ALLOWED", + "value": { + "code": "FILES_TYPE_NOT_ALLOWED", + "description": "This file type is not allowed. Upload a supported file type.", + "errors": [], + "message": "file_type_not_allowed", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "FILES_UNREADABLE": { + "summary": "FILES_UNREADABLE", + "value": { + "code": "FILES_UNREADABLE", + "description": "We could not read the uploaded file. Check the file and try again.", + "errors": [], + "message": "file_download_failed", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `CUSTOMERS_KYC_NOT_APPROVED`, `FILES_TOO_LARGE`, `FILES_TYPE_NOT_ALLOWED`, `FILES_UNREADABLE`, `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "404": { - "description": "Possible error codes: `WALLETS_NOT_FOUND`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "WALLETS_NOT_FOUND": { - "summary": "WALLETS_NOT_FOUND", + "CUSTOMERS_NOT_FOUND": { + "summary": "CUSTOMERS_NOT_FOUND", "value": { - "success": false, - "code": "WALLETS_NOT_FOUND", - "message": "wallet_not_found", - "description": "The requested wallet was not found.", + "code": "CUSTOMERS_NOT_FOUND", + "description": "The requested customer was not found.", "errors": [], + "message": "customer_not_found", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `CUSTOMERS_NOT_FOUND`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { + "FILES_UNREADABLE": { + "summary": "FILES_UNREADABLE", + "value": { + "code": "FILES_UNREADABLE", + "description": "We could not read the uploaded file. Check the file and try again.", + "errors": [], + "message": "file_download_failed", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `FILES_UNREADABLE`, `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } + }, + "summary": "Request Limit Increase", + "tags": [ + "Customers" + ], + "x-sdk": true } }, - "/v1/instances/{instance_id}/customers/{customer_id}/bank-accounts/{bank_account_id}/offramp-wallets/{id}": { + "/v1/instances/{instance_id}/customers/{customer_id}/rfi": { "get": { - "x-sdk": true, - "tags": [ - "Offramp Wallets" - ], - "summary": "Get Offramp Wallet", + "description": "Returns the open (pending) RFI for this customer, or null if the customer has no pending RFI.", "parameters": [ { - "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, + "in": "path", "name": "instance_id", - "in": "path" - }, - { - "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "description": "Customer ID", - "example": "re_000000000000" - }, "required": true, - "name": "customer_id", - "in": "path" - }, - { "schema": { - "type": "string", - "minLength": 15, + "example": "in_000000000000", "maxLength": 15, - "example": "ba_000000000000" - }, - "required": true, - "name": "bank_account_id", - "in": "path" + "minLength": 15, + "type": "string" + } }, { + "in": "path", + "name": "customer_id", + "required": true, "schema": { - "type": "string", - "minLength": 15, + "description": "Customer ID", + "example": "re_000000000000", "maxLength": 15, - "example": "ow_000000000000" - }, - "required": true, - "name": "id", - "in": "path" + "minLength": 15, + "type": "string" + } } ], "responses": { "200": { - "description": "Get offramp wallet", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OfframpWallet" + "$ref": "#/components/schemas/Rfi" } } - } + }, + "description": "Open RFI, or null if none" }, "400": { - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - } - } - } - } - } - } - }, - "/v1/instances/{instance_id}/quotes": { - "post": { - "x-sdk": true, - "tags": [ - "Payouts Quotes" - ], - "summary": "Create Quote", - "parameters": [ - { - "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, - "name": "instance_id", - "in": "path" - }, - { - "schema": { - "type": "string", - "maxLength": 255, - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" - }, - "required": false, - "name": "Idempotency-Key", - "in": "header" - } - ], - "requestBody": { - "description": "Create a new quote", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/QuoteIn" - } - } - } - }, - "responses": { - "200": { - "description": "Quote creation details", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/QuoteOut" - } - } - } - }, - "400": { - "description": "Possible error codes: `BANK_ACCOUNTS_INCOMPLETE`, `BANK_ACCOUNTS_NOT_APPROVED`, `BLOCKCHAIN_NETWORK_NOT_SUPPORTED`, `CUSTOMERS_COUNTRY_NOT_SUPPORTED`, `CUSTOMERS_KYC_NOT_APPROVED`, `FEES_PARTNER_FEE_EXCEEDED`, `FILES_UNREADABLE`, `LIMITS_AMOUNT_OUT_OF_RANGE`, `LIMITS_VOLUME_EXCEEDED`, `PAYOUTS_AMOUNT_BELOW_MINIMUM`, `QUOTES_RATE_UNAVAILABLE`, `TOS_NOT_ACCEPTED`, `VALIDATION_FAILED`, `VIRTUAL_ACCOUNTS_NOT_APPROVED`, `VIRTUAL_ACCOUNTS_NOT_FOUND`. See the Error responses section for retry semantics.", - "content": { - "application/json": { + }, "schema": { "$ref": "#/components/schemas/Error" - }, - "examples": { - "BANK_ACCOUNTS_INCOMPLETE": { - "summary": "BANK_ACCOUNTS_INCOMPLETE", - "value": { - "success": false, - "code": "BANK_ACCOUNTS_INCOMPLETE", - "message": "sepa_bank_account_incomplete", - "description": "The bank account details are incomplete for this payment method. Provide the missing fields.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "BANK_ACCOUNTS_NOT_APPROVED": { - "summary": "BANK_ACCOUNTS_NOT_APPROVED", - "value": { - "success": false, - "code": "BANK_ACCOUNTS_NOT_APPROVED", - "message": "bank_account_not_approved", - "description": "This bank account is not approved yet.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "BLOCKCHAIN_NETWORK_NOT_SUPPORTED": { - "summary": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", - "value": { - "success": false, - "code": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", - "message": "network_not_supported_on_dev_instance", - "description": "This network or token combination is not supported for this operation.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "CUSTOMERS_COUNTRY_NOT_SUPPORTED": { - "summary": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", - "value": { - "success": false, - "code": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", - "message": "country_not_supported", - "description": "This country is not supported for this operation.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "CUSTOMERS_KYC_NOT_APPROVED": { - "summary": "CUSTOMERS_KYC_NOT_APPROVED", - "value": { - "success": false, - "code": "CUSTOMERS_KYC_NOT_APPROVED", - "message": "kyc_not_approved", - "description": "This customer has not completed verification yet. Complete the verification before continuing.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "FEES_PARTNER_FEE_EXCEEDED": { - "summary": "FEES_PARTNER_FEE_EXCEEDED", - "value": { - "success": false, - "code": "FEES_PARTNER_FEE_EXCEEDED", - "message": "partner_fee_exceeded", - "description": "The partner fee exceeds the allowed maximum for this transaction.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "FILES_UNREADABLE": { - "summary": "FILES_UNREADABLE", - "value": { - "success": false, - "code": "FILES_UNREADABLE", - "message": "file_download_failed", - "description": "We could not read the uploaded file. Check the file and try again.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "LIMITS_AMOUNT_OUT_OF_RANGE": { - "summary": "LIMITS_AMOUNT_OUT_OF_RANGE", - "value": { - "success": false, - "code": "LIMITS_AMOUNT_OUT_OF_RANGE", - "message": "limits_amount_out_of_range", - "description": "The amount is outside the allowed range. The message includes the allowed range.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "LIMITS_VOLUME_EXCEEDED": { - "summary": "LIMITS_VOLUME_EXCEEDED", - "value": { - "success": false, - "code": "LIMITS_VOLUME_EXCEEDED", - "message": "limits_volume_exceeded", - "description": "You exceeded your transaction volume limit. The message includes the remaining amount available.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "PAYOUTS_AMOUNT_BELOW_MINIMUM": { - "summary": "PAYOUTS_AMOUNT_BELOW_MINIMUM", - "value": { - "success": false, - "code": "PAYOUTS_AMOUNT_BELOW_MINIMUM", - "message": "swift_minimum_is_100_usd", - "description": "The amount is below the minimum for this payment rail.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "QUOTES_RATE_UNAVAILABLE": { - "summary": "QUOTES_RATE_UNAVAILABLE", - "value": { - "success": false, - "code": "QUOTES_RATE_UNAVAILABLE", - "message": "fx_rate_unavailable", - "description": "An exchange rate is temporarily unavailable. Try again shortly.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "TOS_NOT_ACCEPTED": { - "summary": "TOS_NOT_ACCEPTED", - "value": { - "success": false, - "code": "TOS_NOT_ACCEPTED", - "message": "please_accept_terms_of_service", - "description": "The terms of service must be accepted before continuing.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } + }, + "summary": "Get Open RFI for Customer", + "tags": [ + "Customers" + ], + "x-sdk": true + }, + "post": { + "description": "Submit a flat response object for the open RFI. On success flips kyc_status back to verifying. Returns `{ success: false, reason }` when no pending RFI exists, callers should refetch the RFI state instead of retrying.", + "parameters": [ + { + "in": "path", + "name": "instance_id", + "required": true, + "schema": { + "example": "in_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + } + }, + { + "in": "path", + "name": "customer_id", + "required": true, + "schema": { + "description": "Customer ID", + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + } + }, + { + "in": "header", + "name": "Idempotency-Key", + "required": false, + "schema": { + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "maxLength": 255, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "additionalProperties": {}, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "anyOf": [ + { + "properties": { + "success": { + "enum": [ + true + ], + "type": "boolean" + } + }, + "required": [ + "success" + ], + "type": "object" + }, + { + "properties": { + "reason": { + "enum": [ + "no_pending_rfi", + "already_resolved" + ], + "type": "string" + }, + "success": { + "enum": [ + false + ], + "type": "boolean" + } + }, + "required": [ + "success", + "reason" + ], + "type": "object" } - }, + ] + } + } + }, + "description": "RFI submitted (success: true) or rejected because no pending RFI exists (success: false)" + }, + "400": { + "content": { + "application/json": { + "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VIRTUAL_ACCOUNTS_NOT_APPROVED": { - "summary": "VIRTUAL_ACCOUNTS_NOT_APPROVED", - "value": { - "success": false, - "code": "VIRTUAL_ACCOUNTS_NOT_APPROVED", - "message": "virtual_account_not_approved", - "description": "This virtual account is not approved yet.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VIRTUAL_ACCOUNTS_NOT_FOUND": { - "summary": "VIRTUAL_ACCOUNTS_NOT_FOUND", - "value": { + "message": "validation_failed", "success": false, - "code": "VIRTUAL_ACCOUNTS_NOT_FOUND", - "message": "virtual_account_not_found", - "description": "The requested virtual account was not found.", - "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - } - } - } - }, - "404": { - "description": "Possible error codes: `BANK_ACCOUNTS_NOT_FOUND`, `CUSTOMERS_NOT_FOUND`, `FEES_NOT_FOUND`, `INSTANCES_NOT_FOUND`. See the Error responses section for retry semantics.", - "content": { - "application/json": { + }, "schema": { "$ref": "#/components/schemas/Error" - }, - "examples": { - "BANK_ACCOUNTS_NOT_FOUND": { - "summary": "BANK_ACCOUNTS_NOT_FOUND", - "value": { - "success": false, - "code": "BANK_ACCOUNTS_NOT_FOUND", - "message": "bank_account_not_found", - "description": "The requested bank account was not found.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "CUSTOMERS_NOT_FOUND": { - "summary": "CUSTOMERS_NOT_FOUND", - "value": { - "success": false, - "code": "CUSTOMERS_NOT_FOUND", - "message": "customer_not_found", - "description": "The requested customer was not found.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "FEES_NOT_FOUND": { - "summary": "FEES_NOT_FOUND", - "value": { - "success": false, - "code": "FEES_NOT_FOUND", - "message": "partner_fee_not_found", - "description": "The requested fee configuration was not found.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "INSTANCES_NOT_FOUND": { - "summary": "INSTANCES_NOT_FOUND", - "value": { - "success": false, - "code": "INSTANCES_NOT_FOUND", - "message": "instance_not_found", - "description": "The requested instance was not found.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `FILES_UNREADABLE`, `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "FILES_UNREADABLE": { - "summary": "FILES_UNREADABLE", + "COMPLIANCE_RFI_INVALID": { + "summary": "COMPLIANCE_RFI_INVALID", "value": { - "success": false, - "code": "FILES_UNREADABLE", - "message": "file_download_failed", - "description": "We could not read the uploaded file. Check the file and try again.", + "code": "COMPLIANCE_RFI_INVALID", + "description": "The information request could not be processed. Check the submitted fields.", "errors": [], + "message": "rfi_request_corrupt", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - } - } - } - }, - "503": { - "description": "Possible error codes: `QUOTES_RATE_UNAVAILABLE`. See the Error responses section for retry semantics.", - "content": { - "application/json": { + }, "schema": { "$ref": "#/components/schemas/Error" - }, - "examples": { - "QUOTES_RATE_UNAVAILABLE": { - "summary": "QUOTES_RATE_UNAVAILABLE", - "value": { - "success": false, - "code": "QUOTES_RATE_UNAVAILABLE", - "message": "fx_rate_unavailable", - "description": "An exchange rate is temporarily unavailable. Try again shortly.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } } } - } + }, + "description": "Possible error codes: `COMPLIANCE_RFI_INVALID`, `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } - } - }, - "/v1/instances/{instance_id}/quotes/fx": { - "post": { - "x-sdk": true, + }, + "summary": "Submit RFI Response", "tags": [ - "Payouts Quotes" + "Customers" ], - "summary": "Get FX Rate", + "x-sdk": true + } + }, + "/v1/instances/{instance_id}/customers/{customer_id}/virtual-accounts": { + "get": { "parameters": [ { + "in": "path", + "name": "instance_id", + "required": true, "schema": { - "type": "string", - "minLength": 15, + "example": "in_000000000000", "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, - "name": "instance_id", - "in": "path" + "minLength": 15, + "type": "string" + } }, { + "in": "path", + "name": "customer_id", + "required": true, "schema": { - "type": "string", - "maxLength": 255, - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" - }, - "required": false, - "name": "Idempotency-Key", - "in": "header" - } - ], - "requestBody": { - "description": "Check FX rate", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "from": { - "type": "string", - "enum": [ - "USDC", - "USDT", - "USDB" - ], - "example": "USDC" - }, - "to": { - "type": "string", - "enum": [ - "BRL", - "USD", - "MXN", - "COP", - "ARS", - "EUR" - ], - "example": "BRL" - }, - "request_amount": { - "type": "integer", - "minimum": 500, - "description": "1000 represents 10.00, 2050 represents 20.50", - "example": 1000 - }, - "currency_type": { - "type": "string", - "enum": [ - "sender", - "receiver" - ], - "description": "", - "example": "sender" - } - }, - "required": [ - "from", - "to", - "request_amount", - "currency_type" - ] - } + "description": "Customer ID", + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" } } - }, + ], "responses": { "200": { - "description": "Check FX rate response", "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "commercial_quotation": { - "type": [ - "number", - "null" - ], - "description": "1 USD = 4.95 BRL", - "example": 495 - }, - "blindpay_quotation": { - "type": [ - "number", - "null" - ], - "description": "1 USD = 4.85 BRL (commercial quotation - (blindpay taxes))", - "example": 485 - }, - "result_amount": { - "type": "number", - "minimum": 1 - }, - "instance_flat_fee": { - "type": [ - "number", - "null" - ], - "description": "0.5 USDC", - "example": 50 - }, - "instance_percentage_fee": { - "type": "number", - "minimum": 0, - "maximum": 10000 - } + "items": { + "$ref": "#/components/schemas/VirtualAccountOut" }, - "required": [ - "commercial_quotation", - "blindpay_quotation", - "result_amount", - "instance_percentage_fee" - ] + "type": "array" } } - } + }, + "description": "Get virtual accounts" }, "400": { - "description": "Possible error codes: `BANK_ACCOUNTS_INCOMPLETE`, `QUOTES_RATE_UNAVAILABLE`, `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "BANK_ACCOUNTS_INCOMPLETE": { - "summary": "BANK_ACCOUNTS_INCOMPLETE", - "value": { - "success": false, - "code": "BANK_ACCOUNTS_INCOMPLETE", - "message": "sepa_bank_account_incomplete", - "description": "The bank account details are incomplete for this payment method. Provide the missing fields.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "QUOTES_RATE_UNAVAILABLE": { - "summary": "QUOTES_RATE_UNAVAILABLE", - "value": { - "success": false, - "code": "QUOTES_RATE_UNAVAILABLE", - "message": "fx_rate_unavailable", - "description": "An exchange rate is temporarily unavailable. Try again shortly.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - } - } - } - }, - "503": { - "description": "Possible error codes: `QUOTES_RATE_UNAVAILABLE`. See the Error responses section for retry semantics.", - "content": { - "application/json": { + }, "schema": { "$ref": "#/components/schemas/Error" - }, - "examples": { - "QUOTES_RATE_UNAVAILABLE": { - "summary": "QUOTES_RATE_UNAVAILABLE", - "value": { - "success": false, - "code": "QUOTES_RATE_UNAVAILABLE", - "message": "fx_rate_unavailable", - "description": "An exchange rate is temporarily unavailable. Try again shortly.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } - } - }, - "/v1/instances/{instance_id}/payouts/{id}": { - "get": { - "x-sdk": true, + }, + "summary": "Retrieve Virtual Accounts", "tags": [ - "Payouts" + "Virtual Accounts" ], - "summary": "Retrieve Payout", + "x-sdk": true + }, + "post": { "parameters": [ { + "in": "path", + "name": "instance_id", + "required": true, "schema": { - "type": "string", - "minLength": 15, + "example": "in_000000000000", "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, - "name": "instance_id", - "in": "path" + "minLength": 15, + "type": "string" + } }, { + "in": "path", + "name": "customer_id", + "required": true, "schema": { - "type": "string", - "minLength": 15, + "description": "Customer ID", + "example": "re_000000000000", "maxLength": 15, - "example": "pa_000000000000" - }, - "required": true, - "name": "id", - "in": "path" + "minLength": 15, + "type": "string" + } + }, + { + "in": "header", + "name": "Idempotency-Key", + "required": false, + "schema": { + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "maxLength": 255, + "type": "string" + } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateVirtualAccountIn" + } + } + }, + "description": "Create a new virtual account" + }, "responses": { "200": { - "description": "List payouts", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PayoutOut" + "$ref": "#/components/schemas/VirtualAccountOut" } } - } + }, + "description": "Create virtual account" }, "400": { - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { + "BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED": { + "summary": "BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED", + "value": { + "code": "BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED", + "description": "This banking option is not supported for this operation.", + "errors": [], + "message": "unsupported_banking_partner", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "BLOCKCHAIN_NETWORK_NOT_SUPPORTED": { + "summary": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", + "value": { + "code": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", + "description": "This network or token combination is not supported for this operation.", + "errors": [], + "message": "network_not_supported_on_dev_instance", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "CUSTOMERS_COUNTRY_NOT_SUPPORTED": { + "summary": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", + "value": { + "code": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", + "description": "This country is not supported for this operation.", + "errors": [], + "message": "country_not_supported", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "CUSTOMERS_ENHANCED_KYC_REQUIRED": { + "summary": "CUSTOMERS_ENHANCED_KYC_REQUIRED", + "value": { + "code": "CUSTOMERS_ENHANCED_KYC_REQUIRED", + "description": "Individuals from high-risk countries must use enhanced verification (kyc_type: enhanced); standard verification is not available for them. See https://www.blindpay.com/docs/kb/supported-countries for country tiers.", + "errors": [], + "message": "only_enhanced_kyc_allowed_for_high_risk_countries", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "CUSTOMERS_ID_DOCUMENT_INVALID": { + "summary": "CUSTOMERS_ID_DOCUMENT_INVALID", + "value": { + "code": "CUSTOMERS_ID_DOCUMENT_INVALID", + "description": "The identity document is not an accepted passport or national ID. Provide a valid passport or national ID for this customer (a driver license is not accepted for high-risk countries).", + "errors": [], + "message": "id_doc_is_not_valid_passport_or_national_id", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "CUSTOMERS_KYC_NOT_APPROVED": { + "summary": "CUSTOMERS_KYC_NOT_APPROVED", + "value": { + "code": "CUSTOMERS_KYC_NOT_APPROVED", + "description": "This customer has not completed verification yet. Complete the verification before continuing.", + "errors": [], + "message": "kyc_not_approved", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "FILES_UNREADABLE": { + "summary": "FILES_UNREADABLE", + "value": { + "code": "FILES_UNREADABLE", + "description": "We could not read the uploaded file. Check the file and try again.", + "errors": [], + "message": "file_download_failed", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VALIDATION_MISSING_REQUIRED_FIELDS": { + "summary": "VALIDATION_MISSING_REQUIRED_FIELDS", + "value": { + "code": "VALIDATION_MISSING_REQUIRED_FIELDS", + "description": "Required fields are missing. Provide the missing fields and try again.", + "errors": [], + "message": "missing_required_fields", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VIRTUAL_ACCOUNTS_DISABLED": { + "summary": "VIRTUAL_ACCOUNTS_DISABLED", + "value": { + "code": "VIRTUAL_ACCOUNTS_DISABLED", + "description": "Virtual accounts are not enabled for this account. Contact support to enable them.", + "errors": [], + "message": "virtual_accounts_not_enabled", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED": { + "summary": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", + "value": { + "code": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", + "description": "Additional documents are required to create this virtual account. Upload the requested documents.", + "errors": [], + "message": "id_doc_front_file_required", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED": { + "summary": "VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED", + "value": { + "code": "VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED", + "description": "Virtual accounts are not available for this country or region.", + "errors": [], + "message": "us_state_not_supported", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED`, `BLOCKCHAIN_NETWORK_NOT_SUPPORTED`, `CUSTOMERS_COUNTRY_NOT_SUPPORTED`, `CUSTOMERS_ENHANCED_KYC_REQUIRED`, `CUSTOMERS_ID_DOCUMENT_INVALID`, `CUSTOMERS_KYC_NOT_APPROVED`, `FILES_UNREADABLE`, `VALIDATION_FAILED`, `VALIDATION_MISSING_REQUIRED_FIELDS`, `VIRTUAL_ACCOUNTS_DISABLED`, `VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED`, `VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "404": { - "description": "Possible error codes: `PAYOUTS_NOT_FOUND`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "PAYOUTS_NOT_FOUND": { - "summary": "PAYOUTS_NOT_FOUND", + "CUSTOMERS_NOT_FOUND": { + "summary": "CUSTOMERS_NOT_FOUND", + "value": { + "code": "CUSTOMERS_NOT_FOUND", + "description": "The requested customer was not found.", + "errors": [], + "message": "customer_not_found", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "INSTANCES_NOT_FOUND": { + "summary": "INSTANCES_NOT_FOUND", "value": { + "code": "INSTANCES_NOT_FOUND", + "description": "The requested instance was not found.", + "errors": [], + "message": "instance_not_found", "success": false, - "code": "PAYOUTS_NOT_FOUND", - "message": "payout_not_found", - "description": "The requested payout was not found.", + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "WALLETS_NOT_FOUND": { + "summary": "WALLETS_NOT_FOUND", + "value": { + "code": "WALLETS_NOT_FOUND", + "description": "The requested wallet was not found.", "errors": [], + "message": "wallet_not_found", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `CUSTOMERS_NOT_FOUND`, `INSTANCES_NOT_FOUND`, `WALLETS_NOT_FOUND`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { + "FILES_UNREADABLE": { + "summary": "FILES_UNREADABLE", + "value": { + "code": "FILES_UNREADABLE", + "description": "We could not read the uploaded file. Check the file and try again.", + "errors": [], + "message": "file_download_failed", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `FILES_UNREADABLE`, `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } + }, + "summary": "Create Virtual Account", + "tags": [ + "Virtual Accounts" + ], + "x-sdk": true } }, - "/v1/e/payouts/{id}": { + "/v1/instances/{instance_id}/customers/{customer_id}/virtual-accounts/{id}": { "get": { - "x-sdk": true, - "tags": [ - "Payouts" - ], - "summary": "Retrieve Payout Track", "parameters": [ { + "in": "path", + "name": "instance_id", + "required": true, "schema": { - "type": "string", - "minLength": 15, + "example": "in_000000000000", "maxLength": 15, - "example": "pa_000000000000" - }, + "minLength": 15, + "type": "string" + } + }, + { + "in": "path", + "name": "customer_id", "required": true, + "schema": { + "description": "Customer ID", + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + } + }, + { + "in": "path", "name": "id", - "in": "path" + "required": true, + "schema": { + "example": "bk_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + } } ], "responses": { "200": { - "description": "List payouts", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PayoutOut" + "allOf": [ + { + "$ref": "#/components/schemas/VirtualAccountOut" + }, + { + "type": [ + "object", + "null" + ] + } + ] } } - } + }, + "description": "Get virtual account" }, "400": { - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, - "404": { - "description": "Possible error codes: `PAYOUTS_NOT_FOUND`. See the Error responses section for retry semantics.", + "422": { "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "PAYOUTS_NOT_FOUND": { - "summary": "PAYOUTS_NOT_FOUND", + "DATA_INTEGRITY_ERROR": { + "summary": "DATA_INTEGRITY_ERROR", "value": { - "success": false, - "code": "PAYOUTS_NOT_FOUND", - "message": "payout_not_found", - "description": "The requested payout was not found.", + "code": "DATA_INTEGRITY_ERROR", + "description": "This record could not be loaded because it contains invalid stored data. Contact support with the ID below.", "errors": [], + "message": "data_integrity_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `DATA_INTEGRITY_ERROR`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } - } - }, - "/v1/instances/{instance_id}/payouts": { - "get": { - "x-sdk": true, + }, + "summary": "Retrieve Virtual Account", "tags": [ - "Payouts" + "Virtual Accounts" ], - "summary": "Retrieve Payouts", + "x-sdk": true + }, + "put": { "parameters": [ { - "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, + "in": "path", "name": "instance_id", - "in": "path" - }, - { - "schema": { - "type": "string", - "enum": [ - "10", - "50", - "100", - "200", - "500", - "1000" - ], - "description": "Number of items to return", - "example": "50" - }, - "required": false, - "name": "limit", - "in": "query" - }, - { - "schema": { - "type": "string", - "enum": [ - "0", - "10", - "50", - "100", - "200", - "500", - "1000" - ], - "description": "Number of items to skip", - "example": "0" - }, - "required": false, - "name": "offset", - "in": "query" - }, - { - "schema": { - "type": "string", - "description": "A cursor for use in pagination. starting_after is an object ID that defines your place in the list.", - "example": "pi_123" - }, - "required": false, - "name": "starting_after", - "in": "query" - }, - { - "schema": { - "type": "string", - "description": "A cursor for use in pagination. ending_before is an object ID that defines your place in the list.", - "example": "pi_123" - }, - "required": false, - "name": "ending_before", - "in": "query" - }, - { + "required": true, "schema": { - "type": "string", - "minLength": 15, + "example": "in_000000000000", "maxLength": 15, - "example": "re_000000000000" - }, - "required": false, - "name": "customer_id", - "in": "query" - }, - { - "schema": { - "type": "string", - "enum": [ - "processing", - "failed", - "refunded", - "completed", - "on_hold" - ] - }, - "required": false, - "name": "status", - "in": "query" - }, - { - "schema": { + "minLength": 15, "type": "string" - }, - "required": false, - "name": "customer_name", - "in": "query" + } }, { + "in": "path", + "name": "customer_id", + "required": true, "schema": { + "description": "Customer ID", + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, "type": "string" - }, - "required": false, - "name": "bank_account_id", - "in": "query" + } }, { + "in": "path", + "name": "id", + "required": true, "schema": { + "example": "bk_000000000000", + "maxLength": 15, + "minLength": 15, "type": "string" - }, - "required": false, - "name": "country", - "in": "query" - }, - { - "schema": { - "type": "string", - "enum": [ - "wire", - "ach", - "pix", - "pix_safe", - "ted", - "spei_bitso", - "transfers_bitso", - "ach_cop_bitso", - "international_swift", - "rtp", - "sepa" - ] - }, - "required": false, - "name": "payment_method", - "in": "query" + } }, { - "schema": { - "type": "string" - }, + "in": "header", + "name": "Idempotency-Key", "required": false, - "name": "network", - "in": "query" - }, - { "schema": { + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "maxLength": 255, "type": "string" - }, - "required": false, - "name": "token", - "in": "query" + } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateVirtualAccountIn" + } + } + }, + "description": "Update a virtual account" + }, "responses": { "200": { - "description": "List payouts with pagination and filtering", "content": { "application/json": { "schema": { - "anyOf": [ - { - "type": "object", - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PayoutOut" - } - }, - "pagination": { - "$ref": "#/components/schemas/PaginationMetadata" - } - }, - "required": [ - "data", - "pagination" - ] - }, - { - "type": "array", - "items": { - "$ref": "#/components/schemas/PayoutOut" - } - } - ] + "$ref": "#/components/schemas/Success" } } - } + }, + "description": "Update virtual account" }, "400": { - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { + "BLOCKCHAIN_NETWORK_NOT_SUPPORTED": { + "summary": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", + "value": { + "code": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", + "description": "This network or token combination is not supported for this operation.", + "errors": [], + "message": "network_not_supported_on_dev_instance", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `BLOCKCHAIN_NETWORK_NOT_SUPPORTED`, `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, - "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", + "404": { "content": { "application/json": { + "examples": { + "VIRTUAL_ACCOUNTS_NOT_FOUND": { + "summary": "VIRTUAL_ACCOUNTS_NOT_FOUND", + "value": { + "code": "VIRTUAL_ACCOUNTS_NOT_FOUND", + "description": "The requested virtual account was not found.", + "errors": [], + "message": "virtual_account_not_found", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } + }, "schema": { "$ref": "#/components/schemas/Error" - }, + } + } + }, + "description": "Possible error codes: `VIRTUAL_ACCOUNTS_NOT_FOUND`. See the Error responses section for retry semantics." + }, + "429": { + "content": { + "application/json": { "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } - } - }, - "/v1/instances/{instance_id}/payouts/stellar/authorize": { - "post": { - "x-sdk": true, + }, + "summary": "Update Virtual Account", "tags": [ - "Payouts" + "Virtual Accounts" ], - "summary": "Authorize Token Stellar", + "x-sdk": true + } + }, + "/v1/instances/{instance_id}/customers/{customer_id}/wallets": { + "get": { "parameters": [ { + "in": "path", + "name": "instance_id", + "required": true, "schema": { - "type": "string", - "minLength": 15, + "example": "in_000000000000", "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, - "name": "instance_id", - "in": "path" + "minLength": 15, + "type": "string" + } }, { + "in": "path", + "name": "customer_id", + "required": true, "schema": { - "type": "string", - "maxLength": 255, - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" - }, - "required": false, - "name": "Idempotency-Key", - "in": "header" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PayoutOnStellarAuthorizeIn" - } + "description": "Customer ID", + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" } } - }, + ], "responses": { "200": { - "description": "Payout started with success", "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "transaction_hash": { - "type": "string" - } + "items": { + "$ref": "#/components/schemas/WalletOut" }, - "required": [ - "transaction_hash" - ] + "type": "array" } } - } + }, + "description": "Get wallets" }, "400": { - "description": "Possible error codes: `QUOTES_INVALID_STATE`, `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "QUOTES_INVALID_STATE": { - "summary": "QUOTES_INVALID_STATE", + "TRANSFERS_NOT_ENABLED": { + "summary": "TRANSFERS_NOT_ENABLED", "value": { - "success": false, - "code": "QUOTES_INVALID_STATE", - "message": "quote_invalid_state", - "description": "This quote cannot be authorized in its current state. Request a new quote and try again.", + "code": "TRANSFERS_NOT_ENABLED", + "description": "Wallets and transfers are not enabled for this account. Contact support to enable them.", "errors": [], + "message": "wallets_and_transfers_not_enabled", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `TRANSFERS_NOT_ENABLED`, `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } - } - }, - "/v1/instances/{instance_id}/payouts/stellar": { - "post": { - "x-sdk": true, + }, + "summary": "Retrieve Wallets", "tags": [ - "Payouts" + "Wallets" ], - "summary": "Create Payout on Stellar", + "x-sdk": true + }, + "post": { "parameters": [ { + "in": "path", + "name": "instance_id", + "required": true, "schema": { - "type": "string", - "minLength": 15, + "example": "in_000000000000", "maxLength": 15, - "example": "in_000000000000" - }, + "minLength": 15, + "type": "string" + } + }, + { + "in": "path", + "name": "customer_id", "required": true, - "name": "instance_id", - "in": "path" + "schema": { + "description": "Customer ID", + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + } }, { + "in": "header", + "name": "Idempotency-Key", + "required": false, "schema": { - "type": "string", - "maxLength": 255, "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" - }, - "required": false, - "name": "Idempotency-Key", - "in": "header" + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "maxLength": 255, + "type": "string" + } } ], "requestBody": { - "description": "Start payout on stellar blockchain", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PayoutOnStellarIn" + "$ref": "#/components/schemas/CreateWalletIn" } } - } + }, + "description": "Create a new wallet" }, "responses": { "200": { - "description": "Payout started with success", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PayoutOnEvmOut" + "$ref": "#/components/schemas/WalletOut" } } - } + }, + "description": "Wallet created" }, "400": { - "description": "Possible error codes: `BANK_ACCOUNTS_INCOMPLETE`, `BLOCKCHAIN_TX_FAILED`, `CUSTOMERS_COUNTRY_NOT_SUPPORTED`, `CUSTOMERS_INVALID_PHONE`, `CUSTOMERS_INVALID_TAX_ID`, `CUSTOMERS_ONBOARDING_INCOMPLETE`, `FILES_UNREADABLE`, `PAYOUTS_AMOUNT_BELOW_MINIMUM`, `QUOTES_ALREADY_USED`, `QUOTES_EXPIRED`, `VALIDATION_FAILED`, `VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED`, `VIRTUAL_ACCOUNTS_NOT_FOUND`, `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "BANK_ACCOUNTS_INCOMPLETE": { - "summary": "BANK_ACCOUNTS_INCOMPLETE", + "BLOCKCHAIN_NETWORK_NOT_SUPPORTED": { + "summary": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", "value": { - "success": false, - "code": "BANK_ACCOUNTS_INCOMPLETE", - "message": "sepa_bank_account_incomplete", - "description": "The bank account details are incomplete for this payment method. Provide the missing fields.", + "code": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", + "description": "This network or token combination is not supported for this operation.", "errors": [], + "message": "network_not_supported_on_dev_instance", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "BLOCKCHAIN_TX_FAILED": { - "summary": "BLOCKCHAIN_TX_FAILED", + "CUSTOMERS_KYC_NOT_APPROVED": { + "summary": "CUSTOMERS_KYC_NOT_APPROVED", "value": { - "success": false, - "code": "BLOCKCHAIN_TX_FAILED", - "message": "transaction_failed", - "description": "The blockchain transaction failed. Try again, and contact support if the problem persists.", + "code": "CUSTOMERS_KYC_NOT_APPROVED", + "description": "This customer has not completed verification yet. Complete the verification before continuing.", "errors": [], + "message": "kyc_not_approved", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "CUSTOMERS_COUNTRY_NOT_SUPPORTED": { - "summary": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", + "TRANSFERS_NOT_ENABLED": { + "summary": "TRANSFERS_NOT_ENABLED", "value": { - "success": false, - "code": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", - "message": "country_not_supported", - "description": "This country is not supported for this operation.", + "code": "TRANSFERS_NOT_ENABLED", + "description": "Wallets and transfers are not enabled for this account. Contact support to enable them.", "errors": [], + "message": "wallets_and_transfers_not_enabled", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "CUSTOMERS_INVALID_PHONE": { - "summary": "CUSTOMERS_INVALID_PHONE", + "VALIDATION_FAILED": { + "summary": "VALIDATION_FAILED", "value": { - "success": false, - "code": "CUSTOMERS_INVALID_PHONE", - "message": "invalid_phone_number", - "description": "The phone number provided is not valid. Check the number and try again.", + "code": "VALIDATION_FAILED", + "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "CUSTOMERS_INVALID_TAX_ID": { - "summary": "CUSTOMERS_INVALID_TAX_ID", + "VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED": { + "summary": "VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED", "value": { - "success": false, - "code": "CUSTOMERS_INVALID_TAX_ID", - "message": "invalid_cpf_or_rg_tax_id", - "description": "The tax ID provided is not valid. Check the value and try again.", + "code": "VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED", + "description": "Virtual accounts are not available for this country or region.", "errors": [], + "message": "us_state_not_supported", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } - }, - "CUSTOMERS_ONBOARDING_INCOMPLETE": { - "summary": "CUSTOMERS_ONBOARDING_INCOMPLETE", + } + }, + "schema": { + "$ref": "#/components/schemas/Error" + } + } + }, + "description": "Possible error codes: `BLOCKCHAIN_NETWORK_NOT_SUPPORTED`, `CUSTOMERS_KYC_NOT_APPROVED`, `TRANSFERS_NOT_ENABLED`, `VALIDATION_FAILED`, `VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED`. See the Error responses section for retry semantics." + }, + "401": { + "content": { + "application/json": { + "examples": { + "AUTH_UNAUTHORIZED": { + "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, - "code": "CUSTOMERS_ONBOARDING_INCOMPLETE", - "message": "onboarding_incomplete", - "description": "Onboarding is not complete yet. Finish the remaining steps before continuing.", + "code": "AUTH_UNAUTHORIZED", + "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } - }, - "FILES_UNREADABLE": { - "summary": "FILES_UNREADABLE", + } + }, + "schema": { + "$ref": "#/components/schemas/Error" + } + } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + }, + "403": { + "content": { + "application/json": { + "examples": { + "AUTH_FORBIDDEN": { + "summary": "AUTH_FORBIDDEN", "value": { - "success": false, - "code": "FILES_UNREADABLE", - "message": "file_download_failed", - "description": "We could not read the uploaded file. Check the file and try again.", + "code": "AUTH_FORBIDDEN", + "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } - }, - "PAYOUTS_AMOUNT_BELOW_MINIMUM": { - "summary": "PAYOUTS_AMOUNT_BELOW_MINIMUM", + } + }, + "schema": { + "$ref": "#/components/schemas/Error" + } + } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + }, + "429": { + "content": { + "application/json": { + "examples": { + "AUTH_RATE_LIMITED": { + "summary": "AUTH_RATE_LIMITED", "value": { + "code": "AUTH_RATE_LIMITED", + "description": "Too many requests. Wait a moment and try again.", + "errors": [], + "message": "api_key_rate_limit_exceeded", "success": false, - "code": "PAYOUTS_AMOUNT_BELOW_MINIMUM", - "message": "swift_minimum_is_100_usd", - "description": "The amount is below the minimum for this payment rail.", + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } + }, + "schema": { + "$ref": "#/components/schemas/Error" + } + } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + }, + "500": { + "content": { + "application/json": { + "examples": { + "INTERNAL_ERROR": { + "summary": "INTERNAL_ERROR", + "value": { + "code": "INTERNAL_ERROR", + "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } - }, - "QUOTES_ALREADY_USED": { - "summary": "QUOTES_ALREADY_USED", + } + }, + "schema": { + "$ref": "#/components/schemas/Error" + } + } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } + }, + "summary": "Create Wallet", + "tags": [ + "Wallets" + ], + "x-sdk": true + } + }, + "/v1/instances/{instance_id}/customers/{customer_id}/wallets/{id}": { + "delete": { + "parameters": [ + { + "in": "path", + "name": "instance_id", + "required": true, + "schema": { + "example": "in_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + } + }, + { + "in": "path", + "name": "customer_id", + "required": true, + "schema": { + "description": "Customer ID", + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + } + }, + { + "in": "path", + "name": "id", + "required": true, + "schema": { + "example": "bk_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + } + }, + { + "in": "header", + "name": "Idempotency-Key", + "required": false, + "schema": { + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "maxLength": 255, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Success" + } + } + }, + "description": "Delete wallet" + }, + "400": { + "content": { + "application/json": { + "examples": { + "TRANSFERS_NOT_ENABLED": { + "summary": "TRANSFERS_NOT_ENABLED", "value": { - "success": false, - "code": "QUOTES_ALREADY_USED", - "message": "quote_already_used", - "description": "This quote was already used. Request a new quote.", + "code": "TRANSFERS_NOT_ENABLED", + "description": "Wallets and transfers are not enabled for this account. Contact support to enable them.", "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "QUOTES_EXPIRED": { - "summary": "QUOTES_EXPIRED", - "value": { + "message": "wallets_and_transfers_not_enabled", "success": false, - "code": "QUOTES_EXPIRED", - "message": "quote_expired", - "description": "This quote has expired. Request a new quote and try again.", - "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED": { - "summary": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", - "value": { + "message": "validation_failed", "success": false, - "code": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", - "message": "id_doc_front_file_required", - "description": "Additional documents are required to create this virtual account. Upload the requested documents.", - "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "VIRTUAL_ACCOUNTS_NOT_FOUND": { - "summary": "VIRTUAL_ACCOUNTS_NOT_FOUND", + "WALLETS_ATTACHED_TO_VIRTUAL_ACCOUNT": { + "summary": "WALLETS_ATTACHED_TO_VIRTUAL_ACCOUNT", "value": { - "success": false, - "code": "VIRTUAL_ACCOUNTS_NOT_FOUND", - "message": "virtual_account_not_found", - "description": "The requested virtual account was not found.", + "code": "WALLETS_ATTACHED_TO_VIRTUAL_ACCOUNT", + "description": "This wallet is attached to a virtual account and cannot be deleted. Delete the virtual account first.", "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { - "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "value": { + "message": "wallet_attached_to_virtual_account", "success": false, - "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "message": "virtual_account_provision_failed", - "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", - "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `TRANSFERS_NOT_ENABLED`, `VALIDATION_FAILED`, `WALLETS_ATTACHED_TO_VIRTUAL_ACCOUNT`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - } - } - } - }, - "422": { - "description": "Possible error codes: `CUSTOMERS_INVALID_DATA`. See the Error responses section for retry semantics.", - "content": { - "application/json": { + }, "schema": { "$ref": "#/components/schemas/Error" - }, - "examples": { - "CUSTOMERS_INVALID_DATA": { - "summary": "CUSTOMERS_INVALID_DATA", - "value": { - "success": false, - "code": "CUSTOMERS_INVALID_DATA", - "message": "invalid_customer_data", - "description": "The customer data was rejected by the banking provider. Check the highlighted fields and try again.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `FILES_UNREADABLE`, `INTERNAL_ERROR`, `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "FILES_UNREADABLE": { - "summary": "FILES_UNREADABLE", - "value": { - "success": false, - "code": "FILES_UNREADABLE", - "message": "file_download_failed", - "description": "We could not read the uploaded file. Check the file and try again.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { - "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "value": { + "message": "internal_error", "success": false, - "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "message": "virtual_account_provision_failed", - "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", - "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - } - } - } - }, - "502": { - "description": "Possible error codes: `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics.", - "content": { - "application/json": { + }, "schema": { "$ref": "#/components/schemas/Error" - }, - "examples": { - "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { - "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "value": { - "success": false, - "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "message": "virtual_account_provision_failed", - "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } - } - }, - "/v1/instances/{instance_id}/payouts/solana": { - "post": { - "x-sdk": true, + }, + "summary": "Remove Wallet", "tags": [ - "Payouts" + "Wallets" ], - "summary": "Create Payout on Solana", + "x-sdk": true + }, + "get": { "parameters": [ { + "in": "path", + "name": "instance_id", + "required": true, "schema": { - "type": "string", - "minLength": 15, + "example": "in_000000000000", "maxLength": 15, - "example": "in_000000000000" - }, + "minLength": 15, + "type": "string" + } + }, + { + "in": "path", + "name": "customer_id", "required": true, - "name": "instance_id", - "in": "path" + "schema": { + "description": "Customer ID", + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + } }, { + "in": "path", + "name": "id", + "required": true, "schema": { - "type": "string", - "maxLength": 255, - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" - }, - "required": false, - "name": "Idempotency-Key", - "in": "header" - } - ], - "requestBody": { - "description": "Start payout on solana blockchain", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PayoutOnSolanaIn" - } + "example": "bk_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" } } - }, + ], "responses": { "200": { - "description": "Payout started with success", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PayoutOnEvmOut" + "$ref": "#/components/schemas/WalletOut" } } - } + }, + "description": "Get wallet" }, "400": { - "description": "Possible error codes: `BANK_ACCOUNTS_INCOMPLETE`, `BLOCKCHAIN_NETWORK_NOT_SUPPORTED`, `CUSTOMERS_COUNTRY_NOT_SUPPORTED`, `CUSTOMERS_INVALID_PHONE`, `CUSTOMERS_INVALID_TAX_ID`, `CUSTOMERS_ONBOARDING_INCOMPLETE`, `FILES_UNREADABLE`, `QUOTES_ALREADY_USED`, `QUOTES_EXPIRED`, `VALIDATION_FAILED`, `VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED`, `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "BANK_ACCOUNTS_INCOMPLETE": { - "summary": "BANK_ACCOUNTS_INCOMPLETE", + "TRANSFERS_NOT_ENABLED": { + "summary": "TRANSFERS_NOT_ENABLED", "value": { - "success": false, - "code": "BANK_ACCOUNTS_INCOMPLETE", - "message": "sepa_bank_account_incomplete", - "description": "The bank account details are incomplete for this payment method. Provide the missing fields.", + "code": "TRANSFERS_NOT_ENABLED", + "description": "Wallets and transfers are not enabled for this account. Contact support to enable them.", "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "BLOCKCHAIN_NETWORK_NOT_SUPPORTED": { - "summary": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", - "value": { + "message": "wallets_and_transfers_not_enabled", "success": false, - "code": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", - "message": "network_not_supported_on_dev_instance", - "description": "This network or token combination is not supported for this operation.", - "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "CUSTOMERS_COUNTRY_NOT_SUPPORTED": { - "summary": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", + "VALIDATION_FAILED": { + "summary": "VALIDATION_FAILED", "value": { - "success": false, - "code": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", - "message": "country_not_supported", - "description": "This country is not supported for this operation.", + "code": "VALIDATION_FAILED", + "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "CUSTOMERS_INVALID_PHONE": { - "summary": "CUSTOMERS_INVALID_PHONE", - "value": { + "message": "validation_failed", "success": false, - "code": "CUSTOMERS_INVALID_PHONE", - "message": "invalid_phone_number", - "description": "The phone number provided is not valid. Check the number and try again.", - "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } - }, - "CUSTOMERS_INVALID_TAX_ID": { - "summary": "CUSTOMERS_INVALID_TAX_ID", + } + }, + "schema": { + "$ref": "#/components/schemas/Error" + } + } + }, + "description": "Possible error codes: `TRANSFERS_NOT_ENABLED`, `VALIDATION_FAILED`. See the Error responses section for retry semantics." + }, + "401": { + "content": { + "application/json": { + "examples": { + "AUTH_UNAUTHORIZED": { + "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, - "code": "CUSTOMERS_INVALID_TAX_ID", - "message": "invalid_cpf_or_rg_tax_id", - "description": "The tax ID provided is not valid. Check the value and try again.", + "code": "AUTH_UNAUTHORIZED", + "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } - }, - "CUSTOMERS_ONBOARDING_INCOMPLETE": { - "summary": "CUSTOMERS_ONBOARDING_INCOMPLETE", + } + }, + "schema": { + "$ref": "#/components/schemas/Error" + } + } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + }, + "403": { + "content": { + "application/json": { + "examples": { + "AUTH_FORBIDDEN": { + "summary": "AUTH_FORBIDDEN", "value": { - "success": false, - "code": "CUSTOMERS_ONBOARDING_INCOMPLETE", - "message": "onboarding_incomplete", - "description": "Onboarding is not complete yet. Finish the remaining steps before continuing.", + "code": "AUTH_FORBIDDEN", + "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } - }, - "FILES_UNREADABLE": { - "summary": "FILES_UNREADABLE", + } + }, + "schema": { + "$ref": "#/components/schemas/Error" + } + } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + }, + "429": { + "content": { + "application/json": { + "examples": { + "AUTH_RATE_LIMITED": { + "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, - "code": "FILES_UNREADABLE", - "message": "file_download_failed", - "description": "We could not read the uploaded file. Check the file and try again.", + "code": "AUTH_RATE_LIMITED", + "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } - }, - "QUOTES_ALREADY_USED": { - "summary": "QUOTES_ALREADY_USED", + } + }, + "schema": { + "$ref": "#/components/schemas/Error" + } + } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + }, + "500": { + "content": { + "application/json": { + "examples": { + "INTERNAL_ERROR": { + "summary": "INTERNAL_ERROR", "value": { - "success": false, - "code": "QUOTES_ALREADY_USED", - "message": "quote_already_used", - "description": "This quote was already used. Request a new quote.", + "code": "INTERNAL_ERROR", + "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } - }, - "QUOTES_EXPIRED": { - "summary": "QUOTES_EXPIRED", + } + }, + "schema": { + "$ref": "#/components/schemas/Error" + } + } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } + }, + "summary": "Retrieve Wallet", + "tags": [ + "Wallets" + ], + "x-sdk": true + } + }, + "/v1/instances/{instance_id}/customers/{customer_id}/wallets/{id}/balance": { + "get": { + "parameters": [ + { + "in": "path", + "name": "instance_id", + "required": true, + "schema": { + "example": "in_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + } + }, + { + "in": "path", + "name": "customer_id", + "required": true, + "schema": { + "description": "Customer ID", + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + } + }, + { + "in": "path", + "name": "id", + "required": true, + "schema": { + "example": "bk_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WalletBalanceOut" + } + } + }, + "description": "Get wallet balance" + }, + "400": { + "content": { + "application/json": { + "examples": { + "TRANSFERS_NOT_ENABLED": { + "summary": "TRANSFERS_NOT_ENABLED", "value": { - "success": false, - "code": "QUOTES_EXPIRED", - "message": "quote_expired", - "description": "This quote has expired. Request a new quote and try again.", + "code": "TRANSFERS_NOT_ENABLED", + "description": "Wallets and transfers are not enabled for this account. Contact support to enable them.", "errors": [], + "message": "wallets_and_transfers_not_enabled", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED": { - "summary": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", - "value": { - "success": false, - "code": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", - "message": "id_doc_front_file_required", - "description": "Additional documents are required to create this virtual account. Upload the requested documents.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { - "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "value": { + "message": "validation_failed", "success": false, - "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "message": "virtual_account_provision_failed", - "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", - "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `TRANSFERS_NOT_ENABLED`, `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - } - } - } - }, - "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", - "content": { - "application/json": { + }, "schema": { "$ref": "#/components/schemas/Error" - }, - "examples": { - "AUTH_FORBIDDEN": { - "summary": "AUTH_FORBIDDEN", - "value": { - "success": false, - "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", - "description": "You do not have permission to perform this action.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, - "422": { - "description": "Possible error codes: `CUSTOMERS_INVALID_DATA`. See the Error responses section for retry semantics.", + "403": { "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "CUSTOMERS_INVALID_DATA": { - "summary": "CUSTOMERS_INVALID_DATA", + "AUTH_FORBIDDEN": { + "summary": "AUTH_FORBIDDEN", "value": { - "success": false, - "code": "CUSTOMERS_INVALID_DATA", - "message": "invalid_customer_data", - "description": "The customer data was rejected by the banking provider. Check the highlighted fields and try again.", + "code": "AUTH_FORBIDDEN", + "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `FILES_UNREADABLE`, `INTERNAL_ERROR`, `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "FILES_UNREADABLE": { - "summary": "FILES_UNREADABLE", - "value": { - "success": false, - "code": "FILES_UNREADABLE", - "message": "file_download_failed", - "description": "We could not read the uploaded file. Check the file and try again.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { - "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "value": { + "message": "internal_error", "success": false, - "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "message": "virtual_account_provision_failed", - "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", - "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." }, - "502": { - "description": "Possible error codes: `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics.", + "503": { "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { - "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "WALLETS_BALANCE_UNAVAILABLE": { + "summary": "WALLETS_BALANCE_UNAVAILABLE", "value": { - "success": false, - "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "message": "virtual_account_provision_failed", - "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", + "code": "WALLETS_BALANCE_UNAVAILABLE", + "description": "The wallet balance is temporarily unavailable. Try again shortly.", "errors": [], + "message": "balance_temporarily_unavailable", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `WALLETS_BALANCE_UNAVAILABLE`. See the Error responses section for retry semantics." } - } - } - }, - "/v1/instances/{instance_id}/payouts/evm": { - "post": { - "x-sdk": true, + }, + "summary": "Retrieve Wallet Balance", "tags": [ - "Payouts" + "Wallets" ], - "summary": "Create Payout on EVM Chains", + "x-sdk": true + } + }, + "/v1/instances/{instance_id}/customers/{id}": { + "delete": { "parameters": [ { + "in": "path", + "name": "instance_id", + "required": true, "schema": { - "type": "string", - "minLength": 15, + "example": "in_000000000000", "maxLength": 15, - "example": "in_000000000000" - }, + "minLength": 15, + "type": "string" + } + }, + { + "in": "path", + "name": "id", "required": true, - "name": "instance_id", - "in": "path" + "schema": { + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + } }, { + "in": "header", + "name": "Idempotency-Key", + "required": false, "schema": { - "type": "string", - "maxLength": 255, "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" - }, - "required": false, - "name": "Idempotency-Key", - "in": "header" - } - ], - "requestBody": { - "description": "Start payout on evm blockchain", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PayoutOnEvmIn" - } + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "maxLength": 255, + "type": "string" } } - }, + ], "responses": { "200": { - "description": "Payout started with success", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PayoutOnEvmOut" + "$ref": "#/components/schemas/Success" } } - } + }, + "description": "Customer deleted" }, "400": { - "description": "Possible error codes: `BANK_ACCOUNTS_INCOMPLETE`, `BLOCKCHAIN_NETWORK_NOT_SUPPORTED`, `CUSTOMERS_COUNTRY_NOT_SUPPORTED`, `CUSTOMERS_INVALID_PHONE`, `CUSTOMERS_INVALID_TAX_ID`, `CUSTOMERS_ONBOARDING_INCOMPLETE`, `FILES_UNREADABLE`, `PAYOUTS_AMOUNT_BELOW_MINIMUM`, `QUOTES_ALREADY_USED`, `QUOTES_EXPIRED`, `VALIDATION_FAILED`, `VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED`, `VIRTUAL_ACCOUNTS_NOT_FOUND`, `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "BANK_ACCOUNTS_INCOMPLETE": { - "summary": "BANK_ACCOUNTS_INCOMPLETE", - "value": { - "success": false, - "code": "BANK_ACCOUNTS_INCOMPLETE", - "message": "sepa_bank_account_incomplete", - "description": "The bank account details are incomplete for this payment method. Provide the missing fields.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "BLOCKCHAIN_NETWORK_NOT_SUPPORTED": { - "summary": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", - "value": { - "success": false, - "code": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", - "message": "network_not_supported_on_dev_instance", - "description": "This network or token combination is not supported for this operation.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "CUSTOMERS_COUNTRY_NOT_SUPPORTED": { - "summary": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", - "value": { - "success": false, - "code": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", - "message": "country_not_supported", - "description": "This country is not supported for this operation.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "CUSTOMERS_INVALID_PHONE": { - "summary": "CUSTOMERS_INVALID_PHONE", - "value": { - "success": false, - "code": "CUSTOMERS_INVALID_PHONE", - "message": "invalid_phone_number", - "description": "The phone number provided is not valid. Check the number and try again.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "CUSTOMERS_INVALID_TAX_ID": { - "summary": "CUSTOMERS_INVALID_TAX_ID", - "value": { - "success": false, - "code": "CUSTOMERS_INVALID_TAX_ID", - "message": "invalid_cpf_or_rg_tax_id", - "description": "The tax ID provided is not valid. Check the value and try again.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "CUSTOMERS_ONBOARDING_INCOMPLETE": { - "summary": "CUSTOMERS_ONBOARDING_INCOMPLETE", - "value": { - "success": false, - "code": "CUSTOMERS_ONBOARDING_INCOMPLETE", - "message": "onboarding_incomplete", - "description": "Onboarding is not complete yet. Finish the remaining steps before continuing.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "FILES_UNREADABLE": { - "summary": "FILES_UNREADABLE", - "value": { - "success": false, - "code": "FILES_UNREADABLE", - "message": "file_download_failed", - "description": "We could not read the uploaded file. Check the file and try again.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "PAYOUTS_AMOUNT_BELOW_MINIMUM": { - "summary": "PAYOUTS_AMOUNT_BELOW_MINIMUM", - "value": { - "success": false, - "code": "PAYOUTS_AMOUNT_BELOW_MINIMUM", - "message": "swift_minimum_is_100_usd", - "description": "The amount is below the minimum for this payment rail.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "QUOTES_ALREADY_USED": { - "summary": "QUOTES_ALREADY_USED", - "value": { - "success": false, - "code": "QUOTES_ALREADY_USED", - "message": "quote_already_used", - "description": "This quote was already used. Request a new quote.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "QUOTES_EXPIRED": { - "summary": "QUOTES_EXPIRED", - "value": { - "success": false, - "code": "QUOTES_EXPIRED", - "message": "quote_expired", - "description": "This quote has expired. Request a new quote and try again.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED": { - "summary": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", - "value": { - "success": false, - "code": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", - "message": "id_doc_front_file_required", - "description": "Additional documents are required to create this virtual account. Upload the requested documents.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VIRTUAL_ACCOUNTS_NOT_FOUND": { - "summary": "VIRTUAL_ACCOUNTS_NOT_FOUND", - "value": { - "success": false, - "code": "VIRTUAL_ACCOUNTS_NOT_FOUND", - "message": "virtual_account_not_found", - "description": "The requested virtual account was not found.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { - "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "value": { + "message": "validation_failed", "success": false, - "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "message": "virtual_account_provision_failed", - "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", - "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - } - } - } - }, - "422": { - "description": "Possible error codes: `CUSTOMERS_INVALID_DATA`. See the Error responses section for retry semantics.", - "content": { - "application/json": { + }, "schema": { "$ref": "#/components/schemas/Error" - }, - "examples": { - "CUSTOMERS_INVALID_DATA": { - "summary": "CUSTOMERS_INVALID_DATA", - "value": { - "success": false, - "code": "CUSTOMERS_INVALID_DATA", - "message": "invalid_customer_data", - "description": "The customer data was rejected by the banking provider. Check the highlighted fields and try again.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `FILES_UNREADABLE`, `INTERNAL_ERROR`, `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "FILES_UNREADABLE": { - "summary": "FILES_UNREADABLE", - "value": { - "success": false, - "code": "FILES_UNREADABLE", - "message": "file_download_failed", - "description": "We could not read the uploaded file. Check the file and try again.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { - "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "value": { + "message": "internal_error", "success": false, - "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "message": "virtual_account_provision_failed", - "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", - "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - } - } - } - }, - "502": { - "description": "Possible error codes: `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics.", - "content": { - "application/json": { + }, "schema": { "$ref": "#/components/schemas/Error" - }, - "examples": { - "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { - "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "value": { - "success": false, - "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "message": "virtual_account_provision_failed", - "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } - } - }, - "/v1/instances/{instance_id}/payouts/{id}/documents": { - "post": { - "x-sdk": true, + }, + "summary": "Delete Customer", "tags": [ - "Payouts" + "Customers" ], - "summary": "Submit Payout Documents", - "description": "Submit compliance documents for SWIFT payouts requiring review. Includes optional payment description.", + "x-sdk": true + }, + "get": { "parameters": [ { - "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, + "in": "path", "name": "instance_id", - "in": "path" - }, - { + "required": true, "schema": { - "type": "string", - "minLength": 15, + "example": "in_000000000000", "maxLength": 15, - "example": "pa_000000000000" - }, - "required": true, - "name": "id", - "in": "path" + "minLength": 15, + "type": "string" + } }, { + "in": "path", + "name": "id", + "required": true, "schema": { - "type": "string", - "maxLength": 255, - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" - }, - "required": false, - "name": "Idempotency-Key", - "in": "header" - } - ], - "requestBody": { - "description": "Document details and optional payment description", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SubmitPayoutDocumentsIn" - } + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" } } - }, + ], "responses": { "200": { - "description": "Documents submitted successfully", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Success" + "$ref": "#/components/schemas/CustomerOut" } } - } + }, + "description": "Get customer" }, "400": { - "description": "Possible error codes: `FILES_UNREADABLE`, `PAYOUTS_DOCUMENTS_NOT_ACCEPTED`, `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "FILES_UNREADABLE": { - "summary": "FILES_UNREADABLE", + "CUSTOMERS_NOT_FOUND": { + "summary": "CUSTOMERS_NOT_FOUND", "value": { - "success": false, - "code": "FILES_UNREADABLE", - "message": "file_download_failed", - "description": "We could not read the uploaded file. Check the file and try again.", + "code": "CUSTOMERS_NOT_FOUND", + "description": "The requested customer was not found.", "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "PAYOUTS_DOCUMENTS_NOT_ACCEPTED": { - "summary": "PAYOUTS_DOCUMENTS_NOT_ACCEPTED", - "value": { + "message": "customer_not_found", "success": false, - "code": "PAYOUTS_DOCUMENTS_NOT_ACCEPTED", - "message": "document_upload_only_for_swift_payouts", - "description": "Document upload is only available for international wire payouts.", - "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `CUSTOMERS_NOT_FOUND`, `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, - "404": { - "description": "Possible error codes: `PAYOUTS_NOT_FOUND`. See the Error responses section for retry semantics.", + "422": { "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "PAYOUTS_NOT_FOUND": { - "summary": "PAYOUTS_NOT_FOUND", + "DATA_INTEGRITY_ERROR": { + "summary": "DATA_INTEGRITY_ERROR", "value": { - "success": false, - "code": "PAYOUTS_NOT_FOUND", - "message": "payout_not_found", - "description": "The requested payout was not found.", + "code": "DATA_INTEGRITY_ERROR", + "description": "This record could not be loaded because it contains invalid stored data. Contact support with the ID below.", "errors": [], + "message": "data_integrity_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `DATA_INTEGRITY_ERROR`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `FILES_UNREADABLE`, `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "FILES_UNREADABLE": { - "summary": "FILES_UNREADABLE", - "value": { - "success": false, - "code": "FILES_UNREADABLE", - "message": "file_download_failed", - "description": "We could not read the uploaded file. Check the file and try again.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } - } - }, - "/v1/instances/{instance_id}/payin-quotes": { - "post": { - "x-sdk": true, + }, + "summary": "Retrieve Customer", "tags": [ - "Payin Quotes" + "Customers" ], - "summary": "Create Payin Quote", + "x-sdk": true + }, + "put": { "parameters": [ { + "in": "path", + "name": "instance_id", + "required": true, "schema": { - "type": "string", - "minLength": 15, + "example": "in_000000000000", "maxLength": 15, - "example": "in_000000000000" - }, + "minLength": 15, + "type": "string" + } + }, + { + "in": "path", + "name": "id", "required": true, - "name": "instance_id", - "in": "path" + "schema": { + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + } }, { + "in": "header", + "name": "Idempotency-Key", + "required": false, "schema": { - "type": "string", - "maxLength": 255, "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" - }, - "required": false, - "name": "Idempotency-Key", - "in": "header" + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "maxLength": 255, + "type": "string" + } } ], "requestBody": { - "description": "Create a new quote", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreatePayinQuoteIn" + "$ref": "#/components/schemas/UpdateCustomerIn" } } - } + }, + "description": "Update a customer" }, "responses": { "200": { - "description": "Payin Quote creation details", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreatePayinQuoteOut" + "$ref": "#/components/schemas/Success" } } - } + }, + "description": "Customer updated" }, "400": { - "description": "Possible error codes: `BLOCKCHAIN_NETWORK_NOT_SUPPORTED`, `CUSTOMERS_KYC_NOT_APPROVED`, `CUSTOMERS_NOT_FOUND`, `FEES_PARTNER_FEE_EXCEEDED`, `LIMITS_AMOUNT_OUT_OF_RANGE`, `LIMITS_VOLUME_EXCEEDED`, `PAYINS_METHOD_NOT_SUPPORTED`, `PAYINS_TAX_ID_REQUIRED`, `PAYOUTS_AMOUNT_BELOW_MINIMUM`, `QUOTES_OTC_NOT_SUPPORTED`, `TOS_NOT_ACCEPTED`, `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "BLOCKCHAIN_NETWORK_NOT_SUPPORTED": { - "summary": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", + "CUSTOMERS_INVALID_PHONE": { + "summary": "CUSTOMERS_INVALID_PHONE", "value": { - "success": false, - "code": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", - "message": "network_not_supported_on_dev_instance", - "description": "This network or token combination is not supported for this operation.", + "code": "CUSTOMERS_INVALID_PHONE", + "description": "The phone number provided is not valid. Check the number and try again.", "errors": [], + "message": "invalid_phone_number", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "CUSTOMERS_KYC_NOT_APPROVED": { - "summary": "CUSTOMERS_KYC_NOT_APPROVED", + "CUSTOMERS_INVALID_TAX_ID": { + "summary": "CUSTOMERS_INVALID_TAX_ID", "value": { - "success": false, - "code": "CUSTOMERS_KYC_NOT_APPROVED", - "message": "kyc_not_approved", - "description": "This customer has not completed verification yet. Complete the verification before continuing.", + "code": "CUSTOMERS_INVALID_TAX_ID", + "description": "The tax ID provided is not valid. Check the value and try again.", "errors": [], + "message": "invalid_cpf_or_rg_tax_id", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "CUSTOMERS_NOT_FOUND": { "summary": "CUSTOMERS_NOT_FOUND", "value": { - "success": false, "code": "CUSTOMERS_NOT_FOUND", - "message": "customer_not_found", "description": "The requested customer was not found.", "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "FEES_PARTNER_FEE_EXCEEDED": { - "summary": "FEES_PARTNER_FEE_EXCEEDED", - "value": { - "success": false, - "code": "FEES_PARTNER_FEE_EXCEEDED", - "message": "partner_fee_exceeded", - "description": "The partner fee exceeds the allowed maximum for this transaction.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "LIMITS_AMOUNT_OUT_OF_RANGE": { - "summary": "LIMITS_AMOUNT_OUT_OF_RANGE", - "value": { + "message": "customer_not_found", "success": false, - "code": "LIMITS_AMOUNT_OUT_OF_RANGE", - "message": "limits_amount_out_of_range", - "description": "The amount is outside the allowed range. The message includes the allowed range.", - "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "LIMITS_VOLUME_EXCEEDED": { - "summary": "LIMITS_VOLUME_EXCEEDED", + "FILES_TOO_LARGE": { + "summary": "FILES_TOO_LARGE", "value": { - "success": false, - "code": "LIMITS_VOLUME_EXCEEDED", - "message": "limits_volume_exceeded", - "description": "You exceeded your transaction volume limit. The message includes the remaining amount available.", + "code": "FILES_TOO_LARGE", + "description": "The file is too large. Upload a smaller file.", "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "PAYINS_METHOD_NOT_SUPPORTED": { - "summary": "PAYINS_METHOD_NOT_SUPPORTED", - "value": { + "message": "file_size_exceeded", "success": false, - "code": "PAYINS_METHOD_NOT_SUPPORTED", - "message": "ted_payin_not_supported", - "description": "This payment method is not supported for this operation.", - "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "PAYINS_TAX_ID_REQUIRED": { - "summary": "PAYINS_TAX_ID_REQUIRED", + "FILES_TYPE_NOT_ALLOWED": { + "summary": "FILES_TYPE_NOT_ALLOWED", "value": { - "success": false, - "code": "PAYINS_TAX_ID_REQUIRED", - "message": "tax_id_required", - "description": "A tax ID is required for this payment method. Provide the tax ID and try again.", + "code": "FILES_TYPE_NOT_ALLOWED", + "description": "This file type is not allowed. Upload a supported file type.", "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "PAYOUTS_AMOUNT_BELOW_MINIMUM": { - "summary": "PAYOUTS_AMOUNT_BELOW_MINIMUM", - "value": { + "message": "file_type_not_allowed", "success": false, - "code": "PAYOUTS_AMOUNT_BELOW_MINIMUM", - "message": "swift_minimum_is_100_usd", - "description": "The amount is below the minimum for this payment rail.", - "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "QUOTES_OTC_NOT_SUPPORTED": { - "summary": "QUOTES_OTC_NOT_SUPPORTED", + "FILES_UNREADABLE": { + "summary": "FILES_UNREADABLE", "value": { - "success": false, - "code": "QUOTES_OTC_NOT_SUPPORTED", - "message": "otc_only_supported_for_brl", - "description": "This OTC configuration is not supported. OTC requires BRL with USDT, and either the sender amount with fees not covered, or the receiver amount with fees covered.", + "code": "FILES_UNREADABLE", + "description": "We could not read the uploaded file. Check the file and try again.", "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "TOS_NOT_ACCEPTED": { - "summary": "TOS_NOT_ACCEPTED", - "value": { + "message": "file_download_failed", "success": false, - "code": "TOS_NOT_ACCEPTED", - "message": "please_accept_terms_of_service", - "description": "The terms of service must be accepted before continuing.", - "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `CUSTOMERS_INVALID_PHONE`, `CUSTOMERS_INVALID_TAX_ID`, `CUSTOMERS_NOT_FOUND`, `FILES_TOO_LARGE`, `FILES_TYPE_NOT_ALLOWED`, `FILES_UNREADABLE`, `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - } - } - } - }, - "404": { - "description": "Possible error codes: `FEES_NOT_FOUND`, `WALLETS_NOT_FOUND`. See the Error responses section for retry semantics.", - "content": { - "application/json": { + }, "schema": { "$ref": "#/components/schemas/Error" - }, - "examples": { - "FEES_NOT_FOUND": { - "summary": "FEES_NOT_FOUND", - "value": { - "success": false, - "code": "FEES_NOT_FOUND", - "message": "partner_fee_not_found", - "description": "The requested fee configuration was not found.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "WALLETS_NOT_FOUND": { - "summary": "WALLETS_NOT_FOUND", - "value": { - "success": false, - "code": "WALLETS_NOT_FOUND", - "message": "wallet_not_found", - "description": "The requested wallet was not found.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`, `QUOTES_RATE_UNAVAILABLE`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "INTERNAL_ERROR": { - "summary": "INTERNAL_ERROR", + "FILES_UNREADABLE": { + "summary": "FILES_UNREADABLE", "value": { - "success": false, - "code": "INTERNAL_ERROR", - "message": "internal_error", - "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", + "code": "FILES_UNREADABLE", + "description": "We could not read the uploaded file. Check the file and try again.", "errors": [], + "message": "file_download_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "QUOTES_RATE_UNAVAILABLE": { - "summary": "QUOTES_RATE_UNAVAILABLE", + "INTERNAL_ERROR": { + "summary": "INTERNAL_ERROR", "value": { - "success": false, - "code": "QUOTES_RATE_UNAVAILABLE", - "message": "fx_rate_unavailable", - "description": "An exchange rate is temporarily unavailable. Try again shortly.", + "code": "INTERNAL_ERROR", + "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `FILES_UNREADABLE`, `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } - } - }, - "/v1/instances/{instance_id}/payin-quotes/fx": { - "post": { - "x-sdk": true, + }, + "summary": "Update Customer", "tags": [ - "Payin Quotes" + "Customers" ], - "summary": "Get FX Rate", + "x-sdk": true + } + }, + "/v1/instances/{instance_id}/limits/customers/{id}": { + "get": { "parameters": [ { + "in": "path", + "name": "instance_id", + "required": true, "schema": { - "type": "string", - "minLength": 15, + "example": "in_000000000000", "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, - "name": "instance_id", - "in": "path" + "minLength": 15, + "type": "string" + } }, { + "in": "path", + "name": "id", + "required": true, "schema": { - "type": "string", - "maxLength": 255, - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" - }, - "required": false, - "name": "Idempotency-Key", - "in": "header" - } - ], - "requestBody": { - "description": "Check FX rate", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "from": { - "type": "string", - "enum": [ - "USDC", - "USDT", - "USDB", - "BRL", - "USD", - "MXN", - "COP", - "ARS", - "EUR" - ], - "example": "BRL" - }, - "to": { - "type": "string", - "enum": [ - "USDC", - "USDT", - "USDB", - "BRL", - "USD", - "MXN", - "COP", - "ARS", - "EUR" - ], - "example": "USDC" - }, - "request_amount": { - "type": "integer", - "minimum": 500, - "description": "1000 represents 10.00, 2050 represents 20.50", - "example": 1000 - }, - "currency_type": { - "type": "string", - "enum": [ - "sender", - "receiver" - ], - "description": "", - "example": "sender" - } - }, - "required": [ - "from", - "to", - "request_amount", - "currency_type" - ] - } + "example": "re_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" } } - }, + ], "responses": { "200": { - "description": "Check FX rate response", "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "commercial_quotation": { - "type": [ - "number", - "null" - ], - "description": "1 USD = 4.95 BRL", - "example": 495 - }, - "blindpay_quotation": { - "type": [ - "number", - "null" - ], - "description": "1 USD = 5.05 BRL (commercial quotation + (blindpay taxes))", - "example": 505 - }, - "result_amount": { - "type": "number", - "minimum": 1 - }, - "instance_flat_fee": { - "type": [ - "number", - "null" - ], - "description": "0.5 USDC", - "example": 50 - }, - "instance_percentage_fee": { - "type": "number", - "minimum": 0, - "maximum": 10000 - } - }, - "required": [ - "commercial_quotation", - "blindpay_quotation", - "result_amount", - "instance_flat_fee", - "instance_percentage_fee" - ] + "$ref": "#/components/schemas/GetCustomerLimitsOut" } } - } + }, + "description": "Get customer limits" }, "400": { - "description": "Possible error codes: `BANK_ACCOUNTS_INCOMPLETE`, `PAYOUTS_AMOUNT_BELOW_MINIMUM`, `QUOTES_RATE_UNAVAILABLE`, `VALIDATION_FAILED`, `VALIDATION_INVALID_REQUEST`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "BANK_ACCOUNTS_INCOMPLETE": { - "summary": "BANK_ACCOUNTS_INCOMPLETE", - "value": { - "success": false, - "code": "BANK_ACCOUNTS_INCOMPLETE", - "message": "sepa_bank_account_incomplete", - "description": "The bank account details are incomplete for this payment method. Provide the missing fields.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "PAYOUTS_AMOUNT_BELOW_MINIMUM": { - "summary": "PAYOUTS_AMOUNT_BELOW_MINIMUM", - "value": { - "success": false, - "code": "PAYOUTS_AMOUNT_BELOW_MINIMUM", - "message": "swift_minimum_is_100_usd", - "description": "The amount is below the minimum for this payment rail.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "QUOTES_RATE_UNAVAILABLE": { - "summary": "QUOTES_RATE_UNAVAILABLE", - "value": { - "success": false, - "code": "QUOTES_RATE_UNAVAILABLE", - "message": "fx_rate_unavailable", - "description": "An exchange rate is temporarily unavailable. Try again shortly.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VALIDATION_INVALID_REQUEST": { - "summary": "VALIDATION_INVALID_REQUEST", - "value": { + "message": "validation_failed", "success": false, - "code": "VALIDATION_INVALID_REQUEST", - "message": "invalid_body", - "description": "The request is not valid for this operation. Check the parameters and try again.", - "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "404": { - "description": "Possible error codes: `WALLETS_NOT_FOUND`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "WALLETS_NOT_FOUND": { - "summary": "WALLETS_NOT_FOUND", + "CUSTOMERS_NOT_FOUND": { + "summary": "CUSTOMERS_NOT_FOUND", "value": { - "success": false, - "code": "WALLETS_NOT_FOUND", - "message": "wallet_not_found", - "description": "The requested wallet was not found.", + "code": "CUSTOMERS_NOT_FOUND", + "description": "The requested customer was not found.", "errors": [], + "message": "customer_not_found", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `CUSTOMERS_NOT_FOUND`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`, `QUOTES_RATE_UNAVAILABLE`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "QUOTES_RATE_UNAVAILABLE": { - "summary": "QUOTES_RATE_UNAVAILABLE", - "value": { + "message": "internal_error", "success": false, - "code": "QUOTES_RATE_UNAVAILABLE", - "message": "fx_rate_unavailable", - "description": "An exchange rate is temporarily unavailable. Try again shortly.", - "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - } - } - } - }, - "503": { - "description": "Possible error codes: `QUOTES_RATE_UNAVAILABLE`. See the Error responses section for retry semantics.", - "content": { - "application/json": { + }, "schema": { "$ref": "#/components/schemas/Error" - }, - "examples": { - "QUOTES_RATE_UNAVAILABLE": { - "summary": "QUOTES_RATE_UNAVAILABLE", - "value": { - "success": false, - "code": "QUOTES_RATE_UNAVAILABLE", - "message": "fx_rate_unavailable", - "description": "An exchange rate is temporarily unavailable. Try again shortly.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } - } - }, - "/v1/instances/{instance_id}/payins/{id}": { - "get": { - "x-sdk": true, + }, + "summary": "Retrieve Customer Limits", "tags": [ - "Payins" + "Customers" ], - "summary": "Retrieve Payin", + "x-sdk": true + } + }, + "/v1/instances/{instance_id}/mint-usdb-solana": { + "post": { "parameters": [ { + "in": "path", + "name": "instance_id", + "required": true, "schema": { - "type": "string", - "minLength": 15, + "example": "in_000000000000", "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, - "name": "instance_id", - "in": "path" + "minLength": 15, + "type": "string" + } }, { + "in": "header", + "name": "Idempotency-Key", + "required": false, "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "pi_000000000000" - }, - "required": true, - "name": "id", - "in": "path" + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "maxLength": 255, + "type": "string" + } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "properties": { + "address": { + "type": "string" + }, + "amount": { + "type": "string" + } + }, + "required": [ + "address", + "amount" + ], + "type": "object" + } + } + } + }, "responses": { "200": { - "description": "List payins", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PayinOut" + "properties": { + "error": { + "type": "string" + }, + "signature": { + "type": "string" + }, + "success": { + "type": "boolean" + } + }, + "required": [ + "success" + ], + "type": "object" } } - } + }, + "description": "Mint USDB on Solana" }, "400": { - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { + "BLOCKCHAIN_TX_FAILED": { + "summary": "BLOCKCHAIN_TX_FAILED", + "value": { + "code": "BLOCKCHAIN_TX_FAILED", + "description": "The blockchain transaction failed. Try again, and contact support if the problem persists.", + "errors": [], + "message": "transaction_failed", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `BLOCKCHAIN_TX_FAILED`, `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - } - } - } - }, - "404": { - "description": "Possible error codes: `PAYINS_NOT_FOUND`. See the Error responses section for retry semantics.", - "content": { - "application/json": { + }, "schema": { "$ref": "#/components/schemas/Error" - }, - "examples": { - "PAYINS_NOT_FOUND": { - "summary": "PAYINS_NOT_FOUND", - "value": { - "success": false, - "code": "PAYINS_NOT_FOUND", - "message": "payin_not_found", - "description": "The requested payin was not found.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } - } - }, - "/v1/e/payins/{id}": { - "get": { - "x-sdk": true, + }, + "summary": "Mint USDB on Solana", "tags": [ - "Payins" + "Solana" ], - "summary": "Retrieve Payin Track", + "x-sdk": true + } + }, + "/v1/instances/{instance_id}/mint-usdb-stellar": { + "post": { "parameters": [ { + "in": "path", + "name": "instance_id", + "required": true, "schema": { - "type": "string", - "minLength": 15, + "example": "in_000000000000", "maxLength": 15, - "example": "pi_000000000000" - }, - "required": true, - "name": "id", - "in": "path" + "minLength": 15, + "type": "string" + } + }, + { + "in": "header", + "name": "Idempotency-Key", + "required": false, + "schema": { + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "maxLength": 255, + "type": "string" + } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "properties": { + "address": { + "type": "string" + }, + "amount": { + "type": "string" + }, + "signedXdr": { + "type": "string" + } + }, + "required": [ + "address", + "amount" + ], + "type": "object" + } + } + } + }, "responses": { "200": { - "description": "List payins", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PayinOut" + "$ref": "#/components/schemas/Success" } } - } + }, + "description": "Mint USDB" }, "400": { - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { + "BLOCKCHAIN_TX_FAILED": { + "summary": "BLOCKCHAIN_TX_FAILED", + "value": { + "code": "BLOCKCHAIN_TX_FAILED", + "description": "The blockchain transaction failed. Try again, and contact support if the problem persists.", + "errors": [], + "message": "transaction_failed", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `BLOCKCHAIN_TX_FAILED`, `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - } - } - } - }, - "404": { - "description": "Possible error codes: `PAYINS_NOT_FOUND`. See the Error responses section for retry semantics.", - "content": { - "application/json": { + }, "schema": { "$ref": "#/components/schemas/Error" - }, - "examples": { - "PAYINS_NOT_FOUND": { - "summary": "PAYINS_NOT_FOUND", - "value": { - "success": false, - "code": "PAYINS_NOT_FOUND", - "message": "payin_not_found", - "description": "The requested payin was not found.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } - } - } - } - } - } - } - }, - "/v1/instances/{instance_id}/payins": { - "get": { - "x-sdk": true, - "tags": [ - "Payins" - ], - "summary": "Retrieve Payins", - "parameters": [ - { - "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, - "name": "instance_id", - "in": "path" - }, - { - "schema": { - "type": "string", - "enum": [ - "10", - "50", - "100", - "200", - "500", - "1000" - ], - "description": "Number of items to return", - "example": "50" - }, - "required": false, - "name": "limit", - "in": "query" - }, - { - "schema": { - "type": "string", - "enum": [ - "0", - "10", - "50", - "100", - "200", - "500", - "1000" - ], - "description": "Number of items to skip", - "example": "0" - }, - "required": false, - "name": "offset", - "in": "query" - }, - { - "schema": { - "type": "string", - "description": "A cursor for use in pagination. starting_after is an object ID that defines your place in the list.", - "example": "pi_123" - }, - "required": false, - "name": "starting_after", - "in": "query" - }, - { - "schema": { - "type": "string", - "description": "A cursor for use in pagination. ending_before is an object ID that defines your place in the list.", - "example": "pi_123" - }, - "required": false, - "name": "ending_before", - "in": "query" - }, - { - "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "re_000000000000" - }, - "required": false, - "name": "customer_id", - "in": "query" - }, - { - "schema": { - "type": "string", - "enum": [ - "processing", - "on_hold", - "failed", - "refunded", - "completed" - ] - }, - "required": false, - "name": "status", - "in": "query" - }, - { - "schema": { - "type": "string" - }, - "required": false, - "name": "customer_name", - "in": "query" - }, - { - "schema": { - "type": "string" - }, - "required": false, - "name": "bank_account_id", - "in": "query" - }, - { - "schema": { - "type": "string" - }, - "required": false, - "name": "country", - "in": "query" - }, - { - "schema": { - "type": "string", - "enum": [ - "ach", - "wire", - "pix", - "ted", - "spei", - "transfers", - "pse", - "international_swift", - "rtp" - ] - }, - "required": false, - "name": "payment_method", - "in": "query" - }, - { - "schema": { - "type": "string" + "errors": [], + "message": "internal_error", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } + }, + "schema": { + "$ref": "#/components/schemas/Error" + } + } }, - "required": false, - "name": "network", - "in": "query" - }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } + }, + "summary": "Mint USDB on Stellar", + "tags": [ + "Stellar" + ], + "x-sdk": true + } + }, + "/v1/instances/{instance_id}/partner-fees": { + "get": { + "parameters": [ { + "in": "path", + "name": "instance_id", + "required": true, "schema": { + "example": "in_000000000000", + "maxLength": 15, + "minLength": 15, "type": "string" - }, - "required": false, - "name": "token", - "in": "query" + } } ], "responses": { "200": { - "description": "List payins with pagination", "content": { "application/json": { "schema": { - "anyOf": [ - { - "type": "object", - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PayinOut" - } - }, - "pagination": { - "$ref": "#/components/schemas/PaginationMetadata" - } + "items": { + "properties": { + "id": { + "example": "fe_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" }, - "required": [ - "data", - "pagination" - ] - }, - { - "type": "array", - "items": { - "$ref": "#/components/schemas/PayinOut" + "instance_id": { + "example": "in_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "name": { + "example": "Display Name", + "type": "string" + }, + "payin_flat_fee": { + "maximum": 100000, + "minimum": 0, + "type": "number" + }, + "payin_percentage_fee": { + "maximum": 1000, + "minimum": 0, + "type": "number" + }, + "payout_flat_fee": { + "maximum": 100000, + "minimum": 0, + "type": "number" + }, + "payout_percentage_fee": { + "maximum": 1000, + "minimum": 0, + "type": "number" } - } - ] + }, + "required": [ + "id", + "instance_id", + "name", + "payout_percentage_fee", + "payout_flat_fee", + "payin_percentage_fee", + "payin_flat_fee" + ], + "type": "object" + }, + "type": "array" } } - } + }, + "description": "Get blockchain wallets" }, "400": { - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } - } - }, - "/v1/instances/{instance_id}/payins/evm": { - "post": { - "x-sdk": true, + }, + "summary": "Retrieve Partner Fees", "tags": [ - "Payins" + "Partner Fees" ], - "summary": "Create Payin", + "x-sdk": true + }, + "post": { "parameters": [ { + "in": "path", + "name": "instance_id", + "required": true, "schema": { - "type": "string", - "minLength": 15, + "example": "in_000000000000", "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, - "name": "instance_id", - "in": "path" + "minLength": 15, + "type": "string" + } }, { + "in": "header", + "name": "Idempotency-Key", + "required": false, "schema": { - "type": "string", - "maxLength": 255, "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" - }, - "required": false, - "name": "Idempotency-Key", - "in": "header" + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "maxLength": 255, + "type": "string" + } } ], "requestBody": { - "description": "Start payin", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreatePayinIn" + "properties": { + "name": { + "example": "Display Name", + "type": "string" + }, + "payin_flat_fee": { + "maximum": 100000, + "minimum": 0, + "type": "number" + }, + "payin_percentage_fee": { + "maximum": 1000, + "minimum": 0, + "type": "number" + }, + "payout_flat_fee": { + "maximum": 100000, + "minimum": 0, + "type": "number" + }, + "payout_percentage_fee": { + "maximum": 1000, + "minimum": 0, + "type": "number" + }, + "virtual_account_set": { + "default": false, + "example": false, + "type": [ + "boolean", + "null" + ] + } + }, + "required": [ + "name", + "payout_percentage_fee", + "payout_flat_fee", + "payin_percentage_fee", + "payin_flat_fee" + ], + "type": "object" } } - } + }, + "description": "Create a new blockchain wallet" }, "responses": { "200": { - "description": "Payin started with success", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreatePayinOut" + "properties": { + "id": { + "example": "fe_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "instance_id": { + "example": "in_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "name": { + "example": "Display Name", + "type": "string" + }, + "payin_flat_fee": { + "maximum": 100000, + "minimum": 0, + "type": "number" + }, + "payin_percentage_fee": { + "maximum": 1000, + "minimum": 0, + "type": "number" + }, + "payout_flat_fee": { + "maximum": 100000, + "minimum": 0, + "type": "number" + }, + "payout_percentage_fee": { + "maximum": 1000, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "id", + "instance_id", + "name", + "payout_percentage_fee", + "payout_flat_fee", + "payin_percentage_fee", + "payin_flat_fee" + ], + "type": "object" } } - } + }, + "description": "Add blockchain wallet" }, "400": { - "description": "Possible error codes: `BANK_ACCOUNTS_INCOMPLETE`, `BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED`, `BLOCKCHAIN_NETWORK_NOT_SUPPORTED`, `CUSTOMERS_COUNTRY_NOT_SUPPORTED`, `CUSTOMERS_INVALID_PHONE`, `CUSTOMERS_INVALID_TAX_ID`, `CUSTOMERS_NOT_FOUND`, `FILES_UNREADABLE`, `PAYINS_METHOD_NOT_SUPPORTED`, `PAYOUTS_AMOUNT_BELOW_MINIMUM`, `PAYOUTS_INSUFFICIENT_BALANCE`, `QUOTES_ALREADY_USED`, `QUOTES_EXPIRED`, `QUOTES_NOT_FOUND`, `QUOTES_RATE_UNAVAILABLE`, `VALIDATION_FAILED`, `VALIDATION_MISSING_REQUIRED_FIELDS`, `VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED`, `VIRTUAL_ACCOUNTS_NOT_FOUND`, `VIRTUAL_ACCOUNTS_PROVISION_FAILED`, `VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "BANK_ACCOUNTS_INCOMPLETE": { - "summary": "BANK_ACCOUNTS_INCOMPLETE", - "value": { - "success": false, - "code": "BANK_ACCOUNTS_INCOMPLETE", - "message": "sepa_bank_account_incomplete", - "description": "The bank account details are incomplete for this payment method. Provide the missing fields.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED": { - "summary": "BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED", - "value": { - "success": false, - "code": "BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED", - "message": "unsupported_banking_partner", - "description": "This banking option is not supported for this operation.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "BLOCKCHAIN_NETWORK_NOT_SUPPORTED": { - "summary": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", - "value": { - "success": false, - "code": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", - "message": "network_not_supported_on_dev_instance", - "description": "This network or token combination is not supported for this operation.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "CUSTOMERS_COUNTRY_NOT_SUPPORTED": { - "summary": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", - "value": { - "success": false, - "code": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", - "message": "country_not_supported", - "description": "This country is not supported for this operation.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "CUSTOMERS_INVALID_PHONE": { - "summary": "CUSTOMERS_INVALID_PHONE", - "value": { - "success": false, - "code": "CUSTOMERS_INVALID_PHONE", - "message": "invalid_phone_number", - "description": "The phone number provided is not valid. Check the number and try again.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "CUSTOMERS_INVALID_TAX_ID": { - "summary": "CUSTOMERS_INVALID_TAX_ID", - "value": { - "success": false, - "code": "CUSTOMERS_INVALID_TAX_ID", - "message": "invalid_cpf_or_rg_tax_id", - "description": "The tax ID provided is not valid. Check the value and try again.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "CUSTOMERS_NOT_FOUND": { - "summary": "CUSTOMERS_NOT_FOUND", - "value": { - "success": false, - "code": "CUSTOMERS_NOT_FOUND", - "message": "customer_not_found", - "description": "The requested customer was not found.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "FILES_UNREADABLE": { - "summary": "FILES_UNREADABLE", - "value": { - "success": false, - "code": "FILES_UNREADABLE", - "message": "file_download_failed", - "description": "We could not read the uploaded file. Check the file and try again.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "PAYINS_METHOD_NOT_SUPPORTED": { - "summary": "PAYINS_METHOD_NOT_SUPPORTED", - "value": { - "success": false, - "code": "PAYINS_METHOD_NOT_SUPPORTED", - "message": "ted_payin_not_supported", - "description": "This payment method is not supported for this operation.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "PAYOUTS_AMOUNT_BELOW_MINIMUM": { - "summary": "PAYOUTS_AMOUNT_BELOW_MINIMUM", - "value": { - "success": false, - "code": "PAYOUTS_AMOUNT_BELOW_MINIMUM", - "message": "swift_minimum_is_100_usd", - "description": "The amount is below the minimum for this payment rail.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "PAYOUTS_INSUFFICIENT_BALANCE": { - "summary": "PAYOUTS_INSUFFICIENT_BALANCE", - "value": { - "success": false, - "code": "PAYOUTS_INSUFFICIENT_BALANCE", - "message": "not_enough_balance", - "description": "There is not enough balance to complete this payout. Fund your balance and try again.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "QUOTES_ALREADY_USED": { - "summary": "QUOTES_ALREADY_USED", - "value": { - "success": false, - "code": "QUOTES_ALREADY_USED", - "message": "quote_already_used", - "description": "This quote was already used. Request a new quote.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "QUOTES_EXPIRED": { - "summary": "QUOTES_EXPIRED", - "value": { - "success": false, - "code": "QUOTES_EXPIRED", - "message": "quote_expired", - "description": "This quote has expired. Request a new quote and try again.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "QUOTES_NOT_FOUND": { - "summary": "QUOTES_NOT_FOUND", - "value": { - "success": false, - "code": "QUOTES_NOT_FOUND", - "message": "quote_not_found", - "description": "The requested quote was not found.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "QUOTES_RATE_UNAVAILABLE": { - "summary": "QUOTES_RATE_UNAVAILABLE", - "value": { - "success": false, - "code": "QUOTES_RATE_UNAVAILABLE", - "message": "fx_rate_unavailable", - "description": "An exchange rate is temporarily unavailable. Try again shortly.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VALIDATION_MISSING_REQUIRED_FIELDS": { - "summary": "VALIDATION_MISSING_REQUIRED_FIELDS", - "value": { + "message": "validation_failed", "success": false, - "code": "VALIDATION_MISSING_REQUIRED_FIELDS", - "message": "missing_required_fields", - "description": "Required fields are missing. Provide the missing fields and try again.", - "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } - }, - "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED": { - "summary": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", + } + }, + "schema": { + "$ref": "#/components/schemas/Error" + } + } + }, + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." + }, + "401": { + "content": { + "application/json": { + "examples": { + "AUTH_UNAUTHORIZED": { + "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, - "code": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", - "message": "id_doc_front_file_required", - "description": "Additional documents are required to create this virtual account. Upload the requested documents.", + "code": "AUTH_UNAUTHORIZED", + "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VIRTUAL_ACCOUNTS_NOT_FOUND": { - "summary": "VIRTUAL_ACCOUNTS_NOT_FOUND", - "value": { + "message": "unauthorized", "success": false, - "code": "VIRTUAL_ACCOUNTS_NOT_FOUND", - "message": "virtual_account_not_found", - "description": "The requested virtual account was not found.", - "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } - }, - "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { - "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + } + }, + "schema": { + "$ref": "#/components/schemas/Error" + } + } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + }, + "403": { + "content": { + "application/json": { + "examples": { + "AUTH_FORBIDDEN": { + "summary": "AUTH_FORBIDDEN", "value": { - "success": false, - "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "message": "virtual_account_provision_failed", - "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", + "code": "AUTH_FORBIDDEN", + "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } - }, - "VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED": { - "summary": "VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED", + } + }, + "schema": { + "$ref": "#/components/schemas/Error" + } + } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + }, + "429": { + "content": { + "application/json": { + "examples": { + "AUTH_RATE_LIMITED": { + "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, - "code": "VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED", - "message": "us_state_not_supported", - "description": "Virtual accounts are not available for this country or region.", + "code": "AUTH_RATE_LIMITED", + "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, - "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", + "500": { "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "AUTH_UNAUTHORIZED": { - "summary": "AUTH_UNAUTHORIZED", + "INTERNAL_ERROR": { + "summary": "INTERNAL_ERROR", "value": { - "success": false, - "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", - "description": "Authentication failed. Check your API key or session and try again.", + "code": "INTERNAL_ERROR", + "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } + }, + "summary": "Add Partner Fee", + "tags": [ + "Partner Fees" + ], + "x-sdk": true + } + }, + "/v1/instances/{instance_id}/partner-fees/{id}": { + "delete": { + "parameters": [ + { + "in": "path", + "name": "instance_id", + "required": true, + "schema": { + "example": "in_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" } }, - "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", + { + "in": "path", + "name": "id", + "required": true, + "schema": { + "example": "fe_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + } + }, + { + "in": "header", + "name": "Idempotency-Key", + "required": false, + "schema": { + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "maxLength": 255, + "type": "string" + } + } + ], + "responses": { + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Error" - }, + "$ref": "#/components/schemas/Success" + } + } + }, + "description": "Delete blockchain wallet" + }, + "400": { + "content": { + "application/json": { "examples": { - "AUTH_FORBIDDEN": { - "summary": "AUTH_FORBIDDEN", + "VALIDATION_FAILED": { + "summary": "VALIDATION_FAILED", "value": { - "success": false, - "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", - "description": "You do not have permission to perform this action.", + "code": "VALIDATION_FAILED", + "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, - "404": { - "description": "Possible error codes: `WALLETS_NOT_FOUND`. See the Error responses section for retry semantics.", + "401": { "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "WALLETS_NOT_FOUND": { - "summary": "WALLETS_NOT_FOUND", + "AUTH_UNAUTHORIZED": { + "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, - "code": "WALLETS_NOT_FOUND", - "message": "wallet_not_found", - "description": "The requested wallet was not found.", + "code": "AUTH_UNAUTHORIZED", + "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, - "422": { - "description": "Possible error codes: `CUSTOMERS_INVALID_DATA`. See the Error responses section for retry semantics.", + "403": { "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "CUSTOMERS_INVALID_DATA": { - "summary": "CUSTOMERS_INVALID_DATA", + "AUTH_FORBIDDEN": { + "summary": "AUTH_FORBIDDEN", "value": { - "success": false, - "code": "CUSTOMERS_INVALID_DATA", - "message": "invalid_customer_data", - "description": "The customer data was rejected by the banking provider. Check the highlighted fields and try again.", + "code": "AUTH_FORBIDDEN", + "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `FILES_UNREADABLE`, `INTERNAL_ERROR`, `QUOTES_RATE_UNAVAILABLE`, `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "FILES_UNREADABLE": { - "summary": "FILES_UNREADABLE", - "value": { - "success": false, - "code": "FILES_UNREADABLE", - "message": "file_download_failed", - "description": "We could not read the uploaded file. Check the file and try again.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } + } + }, + "schema": { + "$ref": "#/components/schemas/Error" + } + } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } + }, + "summary": "Remove Partner Fee", + "tags": [ + "Partner Fees" + ], + "x-sdk": true + }, + "get": { + "parameters": [ + { + "in": "path", + "name": "instance_id", + "required": true, + "schema": { + "example": "in_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + } + }, + { + "in": "path", + "name": "id", + "required": true, + "schema": { + "example": "fe_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "properties": { + "id": { + "example": "fe_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "instance_id": { + "example": "in_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "name": { + "example": "Display Name", + "type": "string" + }, + "payin_flat_fee": { + "maximum": 100000, + "minimum": 0, + "type": "number" + }, + "payin_percentage_fee": { + "maximum": 1000, + "minimum": 0, + "type": "number" + }, + "payout_flat_fee": { + "maximum": 100000, + "minimum": 0, + "type": "number" + }, + "payout_percentage_fee": { + "maximum": 1000, + "minimum": 0, + "type": "number" + } }, - "QUOTES_RATE_UNAVAILABLE": { - "summary": "QUOTES_RATE_UNAVAILABLE", + "required": [ + "id", + "instance_id", + "name", + "payout_percentage_fee", + "payout_flat_fee", + "payin_percentage_fee", + "payin_flat_fee" + ], + "type": "object" + } + } + }, + "description": "Get blockchain wallets" + }, + "400": { + "content": { + "application/json": { + "examples": { + "VALIDATION_FAILED": { + "summary": "VALIDATION_FAILED", "value": { - "success": false, - "code": "QUOTES_RATE_UNAVAILABLE", - "message": "fx_rate_unavailable", - "description": "An exchange rate is temporarily unavailable. Try again shortly.", + "code": "VALIDATION_FAILED", + "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } - }, - "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { - "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + } + }, + "schema": { + "$ref": "#/components/schemas/Error" + } + } + }, + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." + }, + "401": { + "content": { + "application/json": { + "examples": { + "AUTH_UNAUTHORIZED": { + "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, - "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "message": "virtual_account_provision_failed", - "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", + "code": "AUTH_UNAUTHORIZED", + "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, - "502": { - "description": "Possible error codes: `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics.", + "403": { "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { - "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "AUTH_FORBIDDEN": { + "summary": "AUTH_FORBIDDEN", "value": { - "success": false, - "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "message": "virtual_account_provision_failed", - "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", + "code": "AUTH_FORBIDDEN", + "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, - "503": { - "description": "Possible error codes: `QUOTES_RATE_UNAVAILABLE`. See the Error responses section for retry semantics.", + "429": { "content": { "application/json": { + "examples": { + "AUTH_RATE_LIMITED": { + "summary": "AUTH_RATE_LIMITED", + "value": { + "code": "AUTH_RATE_LIMITED", + "description": "Too many requests. Wait a moment and try again.", + "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } + }, "schema": { "$ref": "#/components/schemas/Error" - }, + } + } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + }, + "500": { + "content": { + "application/json": { "examples": { - "QUOTES_RATE_UNAVAILABLE": { - "summary": "QUOTES_RATE_UNAVAILABLE", + "INTERNAL_ERROR": { + "summary": "INTERNAL_ERROR", "value": { - "success": false, - "code": "QUOTES_RATE_UNAVAILABLE", - "message": "fx_rate_unavailable", - "description": "An exchange rate is temporarily unavailable. Try again shortly.", + "code": "INTERNAL_ERROR", + "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } + }, + "summary": "Retrieve Partner Fee", + "tags": [ + "Partner Fees" + ], + "x-sdk": true } }, - "/v1/instances/{instance_id}/customers/{customer_id}/wallets": { + "/v1/instances/{instance_id}/payin-quotes": { "post": { - "x-sdk": true, - "tags": [ - "Wallets" - ], - "summary": "Create Wallet", "parameters": [ { - "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, + "in": "path", "name": "instance_id", - "in": "path" - }, - { + "required": true, "schema": { - "type": "string", - "minLength": 15, + "example": "in_000000000000", "maxLength": 15, - "description": "Customer ID", - "example": "re_000000000000" - }, - "required": true, - "name": "customer_id", - "in": "path" + "minLength": 15, + "type": "string" + } }, { + "in": "header", + "name": "Idempotency-Key", + "required": false, "schema": { - "type": "string", - "maxLength": 255, "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" - }, - "required": false, - "name": "Idempotency-Key", - "in": "header" + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "maxLength": 255, + "type": "string" + } } ], "requestBody": { - "description": "Create a new wallet", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateWalletIn" + "$ref": "#/components/schemas/CreatePayinQuoteIn" } } - } + }, + "description": "Create a new quote" }, "responses": { "200": { - "description": "Wallet created", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WalletOut" + "$ref": "#/components/schemas/CreatePayinQuoteOut" } } - } + }, + "description": "Payin Quote creation details" }, "400": { - "description": "Possible error codes: `BLOCKCHAIN_NETWORK_NOT_SUPPORTED`, `CUSTOMERS_KYC_NOT_APPROVED`, `TRANSFERS_NOT_ENABLED`, `VALIDATION_FAILED`, `VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "BLOCKCHAIN_NETWORK_NOT_SUPPORTED": { "summary": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", "value": { - "success": false, "code": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", - "message": "network_not_supported_on_dev_instance", "description": "This network or token combination is not supported for this operation.", "errors": [], + "message": "network_not_supported_on_dev_instance", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "CUSTOMERS_KYC_NOT_APPROVED": { "summary": "CUSTOMERS_KYC_NOT_APPROVED", "value": { - "success": false, "code": "CUSTOMERS_KYC_NOT_APPROVED", - "message": "kyc_not_approved", "description": "This customer has not completed verification yet. Complete the verification before continuing.", "errors": [], + "message": "kyc_not_approved", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "TRANSFERS_NOT_ENABLED": { - "summary": "TRANSFERS_NOT_ENABLED", + "CUSTOMERS_NOT_FOUND": { + "summary": "CUSTOMERS_NOT_FOUND", "value": { + "code": "CUSTOMERS_NOT_FOUND", + "description": "The requested customer was not found.", + "errors": [], + "message": "customer_not_found", "success": false, - "code": "TRANSFERS_NOT_ENABLED", - "message": "wallets_and_transfers_not_enabled", - "description": "Wallets and transfers are not enabled for this account. Contact support to enable them.", + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "FEES_PARTNER_FEE_EXCEEDED": { + "summary": "FEES_PARTNER_FEE_EXCEEDED", + "value": { + "code": "FEES_PARTNER_FEE_EXCEEDED", + "description": "The partner fee exceeds the allowed maximum for this transaction.", + "errors": [], + "message": "partner_fee_exceeded", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "LIMITS_AMOUNT_OUT_OF_RANGE": { + "summary": "LIMITS_AMOUNT_OUT_OF_RANGE", + "value": { + "code": "LIMITS_AMOUNT_OUT_OF_RANGE", + "description": "The amount is outside the allowed range. The message includes the allowed range.", + "errors": [], + "message": "limits_amount_out_of_range", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "LIMITS_VOLUME_EXCEEDED": { + "summary": "LIMITS_VOLUME_EXCEEDED", + "value": { + "code": "LIMITS_VOLUME_EXCEEDED", + "description": "You exceeded your transaction volume limit. The message includes the remaining amount available.", + "errors": [], + "message": "limits_volume_exceeded", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "PAYINS_METHOD_NOT_SUPPORTED": { + "summary": "PAYINS_METHOD_NOT_SUPPORTED", + "value": { + "code": "PAYINS_METHOD_NOT_SUPPORTED", + "description": "This payment method is not supported for this operation.", + "errors": [], + "message": "ted_payin_not_supported", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "PAYINS_TAX_ID_REQUIRED": { + "summary": "PAYINS_TAX_ID_REQUIRED", + "value": { + "code": "PAYINS_TAX_ID_REQUIRED", + "description": "A tax ID is required for this payment method. Provide the tax ID and try again.", + "errors": [], + "message": "tax_id_required", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "PAYOUTS_AMOUNT_BELOW_MINIMUM": { + "summary": "PAYOUTS_AMOUNT_BELOW_MINIMUM", + "value": { + "code": "PAYOUTS_AMOUNT_BELOW_MINIMUM", + "description": "The amount is below the minimum for this payment rail.", + "errors": [], + "message": "swift_minimum_is_100_usd", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "QUOTES_OTC_NOT_SUPPORTED": { + "summary": "QUOTES_OTC_NOT_SUPPORTED", + "value": { + "code": "QUOTES_OTC_NOT_SUPPORTED", + "description": "This OTC configuration is not supported. OTC requires BRL with USDT, and either the sender amount with fees not covered, or the receiver amount with fees covered.", + "errors": [], + "message": "otc_only_supported_for_brl", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "TOS_NOT_ACCEPTED": { + "summary": "TOS_NOT_ACCEPTED", + "value": { + "code": "TOS_NOT_ACCEPTED", + "description": "The terms of service must be accepted before continuing.", "errors": [], + "message": "please_accept_terms_of_service", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED": { - "summary": "VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED", - "value": { + "message": "validation_failed", "success": false, - "code": "VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED", - "message": "us_state_not_supported", - "description": "Virtual accounts are not available for this country or region.", - "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `BLOCKCHAIN_NETWORK_NOT_SUPPORTED`, `CUSTOMERS_KYC_NOT_APPROVED`, `CUSTOMERS_NOT_FOUND`, `FEES_PARTNER_FEE_EXCEEDED`, `LIMITS_AMOUNT_OUT_OF_RANGE`, `LIMITS_VOLUME_EXCEEDED`, `PAYINS_METHOD_NOT_SUPPORTED`, `PAYINS_TAX_ID_REQUIRED`, `PAYOUTS_AMOUNT_BELOW_MINIMUM`, `QUOTES_OTC_NOT_SUPPORTED`, `TOS_NOT_ACCEPTED`, `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, - "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", + "404": { "content": { "application/json": { + "examples": { + "FEES_NOT_FOUND": { + "summary": "FEES_NOT_FOUND", + "value": { + "code": "FEES_NOT_FOUND", + "description": "The requested fee configuration was not found.", + "errors": [], + "message": "partner_fee_not_found", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "WALLETS_NOT_FOUND": { + "summary": "WALLETS_NOT_FOUND", + "value": { + "code": "WALLETS_NOT_FOUND", + "description": "The requested wallet was not found.", + "errors": [], + "message": "wallet_not_found", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } + }, "schema": { "$ref": "#/components/schemas/Error" - }, + } + } + }, + "description": "Possible error codes: `FEES_NOT_FOUND`, `WALLETS_NOT_FOUND`. See the Error responses section for retry semantics." + }, + "429": { + "content": { + "application/json": { "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "QUOTES_RATE_UNAVAILABLE": { + "summary": "QUOTES_RATE_UNAVAILABLE", + "value": { + "code": "QUOTES_RATE_UNAVAILABLE", + "description": "An exchange rate is temporarily unavailable. Try again shortly.", + "errors": [], + "message": "fx_rate_unavailable", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`, `QUOTES_RATE_UNAVAILABLE`. See the Error responses section for retry semantics." } - } - }, - "get": { - "x-sdk": true, + }, + "summary": "Create Payin Quote", "tags": [ - "Wallets" + "Payin Quotes" ], - "summary": "Retrieve Wallets", + "x-sdk": true + } + }, + "/v1/instances/{instance_id}/payin-quotes/fx": { + "post": { "parameters": [ { + "in": "path", + "name": "instance_id", + "required": true, "schema": { - "type": "string", - "minLength": 15, + "example": "in_000000000000", "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, - "name": "instance_id", - "in": "path" + "minLength": 15, + "type": "string" + } }, { + "in": "header", + "name": "Idempotency-Key", + "required": false, "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "description": "Customer ID", - "example": "re_000000000000" - }, - "required": true, - "name": "customer_id", - "in": "path" + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "maxLength": 255, + "type": "string" + } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "properties": { + "currency_type": { + "description": "", + "enum": [ + "sender", + "receiver" + ], + "example": "sender", + "type": "string" + }, + "from": { + "enum": [ + "USDC", + "USDT", + "USDB", + "BRL", + "USD", + "MXN", + "COP", + "ARS", + "EUR" + ], + "example": "BRL", + "type": "string" + }, + "request_amount": { + "description": "1000 represents 10.00, 2050 represents 20.50", + "example": 1000, + "minimum": 500, + "type": "integer" + }, + "to": { + "enum": [ + "USDC", + "USDT", + "USDB", + "BRL", + "USD", + "MXN", + "COP", + "ARS", + "EUR" + ], + "example": "USDC", + "type": "string" + } + }, + "required": [ + "from", + "to", + "request_amount", + "currency_type" + ], + "type": "object" + } + } + }, + "description": "Check FX rate" + }, "responses": { "200": { - "description": "Get wallets", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/WalletOut" - } + "properties": { + "blindpay_quotation": { + "description": "1 USD = 5.05 BRL (commercial quotation + (blindpay taxes))", + "example": 505, + "type": [ + "number", + "null" + ] + }, + "commercial_quotation": { + "description": "1 USD = 4.95 BRL", + "example": 495, + "type": [ + "number", + "null" + ] + }, + "instance_flat_fee": { + "description": "0.5 USDC", + "example": 50, + "type": [ + "number", + "null" + ] + }, + "instance_percentage_fee": { + "maximum": 10000, + "minimum": 0, + "type": "number" + }, + "result_amount": { + "minimum": 1, + "type": "number" + } + }, + "required": [ + "commercial_quotation", + "blindpay_quotation", + "result_amount", + "instance_flat_fee", + "instance_percentage_fee" + ], + "type": "object" } } - } + }, + "description": "Check FX rate response" }, "400": { - "description": "Possible error codes: `TRANSFERS_NOT_ENABLED`, `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "TRANSFERS_NOT_ENABLED": { - "summary": "TRANSFERS_NOT_ENABLED", + "BANK_ACCOUNTS_INCOMPLETE": { + "summary": "BANK_ACCOUNTS_INCOMPLETE", "value": { + "code": "BANK_ACCOUNTS_INCOMPLETE", + "description": "The bank account details are incomplete for this payment method. Provide the missing fields.", + "errors": [], + "message": "sepa_bank_account_incomplete", "success": false, - "code": "TRANSFERS_NOT_ENABLED", - "message": "wallets_and_transfers_not_enabled", - "description": "Wallets and transfers are not enabled for this account. Contact support to enable them.", + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "PAYOUTS_AMOUNT_BELOW_MINIMUM": { + "summary": "PAYOUTS_AMOUNT_BELOW_MINIMUM", + "value": { + "code": "PAYOUTS_AMOUNT_BELOW_MINIMUM", + "description": "The amount is below the minimum for this payment rail.", + "errors": [], + "message": "swift_minimum_is_100_usd", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "QUOTES_RATE_UNAVAILABLE": { + "summary": "QUOTES_RATE_UNAVAILABLE", + "value": { + "code": "QUOTES_RATE_UNAVAILABLE", + "description": "An exchange rate is temporarily unavailable. Try again shortly.", "errors": [], + "message": "fx_rate_unavailable", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VALIDATION_INVALID_REQUEST": { + "summary": "VALIDATION_INVALID_REQUEST", + "value": { + "code": "VALIDATION_INVALID_REQUEST", + "description": "The request is not valid for this operation. Check the parameters and try again.", + "errors": [], + "message": "invalid_body", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `BANK_ACCOUNTS_INCOMPLETE`, `PAYOUTS_AMOUNT_BELOW_MINIMUM`, `QUOTES_RATE_UNAVAILABLE`, `VALIDATION_FAILED`, `VALIDATION_INVALID_REQUEST`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, - "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", + "404": { "content": { "application/json": { + "examples": { + "WALLETS_NOT_FOUND": { + "summary": "WALLETS_NOT_FOUND", + "value": { + "code": "WALLETS_NOT_FOUND", + "description": "The requested wallet was not found.", + "errors": [], + "message": "wallet_not_found", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } + }, "schema": { "$ref": "#/components/schemas/Error" - }, + } + } + }, + "description": "Possible error codes: `WALLETS_NOT_FOUND`. See the Error responses section for retry semantics." + }, + "429": { + "content": { + "application/json": { "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "QUOTES_RATE_UNAVAILABLE": { + "summary": "QUOTES_RATE_UNAVAILABLE", + "value": { + "code": "QUOTES_RATE_UNAVAILABLE", + "description": "An exchange rate is temporarily unavailable. Try again shortly.", + "errors": [], + "message": "fx_rate_unavailable", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`, `QUOTES_RATE_UNAVAILABLE`. See the Error responses section for retry semantics." + }, + "503": { + "content": { + "application/json": { + "examples": { + "QUOTES_RATE_UNAVAILABLE": { + "summary": "QUOTES_RATE_UNAVAILABLE", + "value": { + "code": "QUOTES_RATE_UNAVAILABLE", + "description": "An exchange rate is temporarily unavailable. Try again shortly.", + "errors": [], + "message": "fx_rate_unavailable", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } + }, + "schema": { + "$ref": "#/components/schemas/Error" + } + } + }, + "description": "Possible error codes: `QUOTES_RATE_UNAVAILABLE`. See the Error responses section for retry semantics." } - } + }, + "summary": "Get FX Rate", + "tags": [ + "Payin Quotes" + ], + "x-sdk": true } }, - "/v1/instances/{instance_id}/customers/{customer_id}/wallets/{id}": { + "/v1/instances/{instance_id}/payins": { "get": { - "x-sdk": true, - "tags": [ - "Wallets" - ], - "summary": "Retrieve Wallet", "parameters": [ { + "in": "path", + "name": "instance_id", + "required": true, "schema": { - "type": "string", + "example": "in_000000000000", + "maxLength": 15, "minLength": 15, + "type": "string" + } + }, + { + "in": "query", + "name": "limit", + "required": false, + "schema": { + "description": "Number of items to return", + "enum": [ + "10", + "50", + "100", + "200", + "500", + "1000" + ], + "example": "50", + "type": "string" + } + }, + { + "in": "query", + "name": "offset", + "required": false, + "schema": { + "description": "Number of items to skip", + "enum": [ + "0", + "10", + "50", + "100", + "200", + "500", + "1000" + ], + "example": "0", + "type": "string" + } + }, + { + "in": "query", + "name": "starting_after", + "required": false, + "schema": { + "description": "A cursor for use in pagination. starting_after is an object ID that defines your place in the list.", + "example": "pi_123", + "type": "string" + } + }, + { + "in": "query", + "name": "ending_before", + "required": false, + "schema": { + "description": "A cursor for use in pagination. ending_before is an object ID that defines your place in the list.", + "example": "pi_123", + "type": "string" + } + }, + { + "in": "query", + "name": "customer_id", + "required": false, + "schema": { + "example": "re_000000000000", "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, - "name": "instance_id", - "in": "path" + "minLength": 15, + "type": "string" + } + }, + { + "in": "query", + "name": "status", + "required": false, + "schema": { + "enum": [ + "processing", + "on_hold", + "failed", + "refunded", + "completed" + ], + "type": "string" + } + }, + { + "in": "query", + "name": "customer_name", + "required": false, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "bank_account_id", + "required": false, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "country", + "required": false, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "payment_method", + "required": false, + "schema": { + "enum": [ + "ach", + "wire", + "pix", + "ted", + "spei", + "transfers", + "pse", + "international_swift", + "rtp" + ], + "type": "string" + } }, { + "in": "query", + "name": "network", + "required": false, "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "description": "Customer ID", - "example": "re_000000000000" - }, - "required": true, - "name": "customer_id", - "in": "path" + "type": "string" + } }, { + "in": "query", + "name": "token", + "required": false, "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "bk_000000000000" - }, - "required": true, - "name": "id", - "in": "path" + "type": "string" + } } ], "responses": { "200": { - "description": "Get wallet", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WalletOut" + "anyOf": [ + { + "properties": { + "data": { + "items": { + "$ref": "#/components/schemas/PayinOut" + }, + "type": "array" + }, + "pagination": { + "$ref": "#/components/schemas/PaginationMetadata" + } + }, + "required": [ + "data", + "pagination" + ], + "type": "object" + }, + { + "items": { + "$ref": "#/components/schemas/PayinOut" + }, + "type": "array" + } + ] } } - } + }, + "description": "List payins with pagination" }, "400": { - "description": "Possible error codes: `TRANSFERS_NOT_ENABLED`, `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "TRANSFERS_NOT_ENABLED": { - "summary": "TRANSFERS_NOT_ENABLED", - "value": { - "success": false, - "code": "TRANSFERS_NOT_ENABLED", - "message": "wallets_and_transfers_not_enabled", - "description": "Wallets and transfers are not enabled for this account. Contact support to enable them.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } - }, - "delete": { - "x-sdk": true, + }, + "summary": "Retrieve Payins", "tags": [ - "Wallets" + "Payins" ], - "summary": "Remove Wallet", + "x-sdk": true + } + }, + "/v1/instances/{instance_id}/payins/evm": { + "post": { "parameters": [ { - "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, + "in": "path", "name": "instance_id", - "in": "path" - }, - { - "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "description": "Customer ID", - "example": "re_000000000000" - }, "required": true, - "name": "customer_id", - "in": "path" - }, - { "schema": { - "type": "string", - "minLength": 15, + "example": "in_000000000000", "maxLength": 15, - "example": "bk_000000000000" - }, - "required": true, - "name": "id", - "in": "path" + "minLength": 15, + "type": "string" + } }, { + "in": "header", + "name": "Idempotency-Key", + "required": false, "schema": { - "type": "string", - "maxLength": 255, "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" - }, - "required": false, - "name": "Idempotency-Key", - "in": "header" + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "maxLength": 255, + "type": "string" + } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreatePayinIn" + } + } + }, + "description": "Start payin" + }, "responses": { "200": { - "description": "Delete wallet", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Success" + "$ref": "#/components/schemas/CreatePayinOut" } } - } + }, + "description": "Payin started with success" }, "400": { - "description": "Possible error codes: `TRANSFERS_NOT_ENABLED`, `VALIDATION_FAILED`, `WALLETS_ATTACHED_TO_VIRTUAL_ACCOUNT`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "TRANSFERS_NOT_ENABLED": { - "summary": "TRANSFERS_NOT_ENABLED", + "BANK_ACCOUNTS_INCOMPLETE": { + "summary": "BANK_ACCOUNTS_INCOMPLETE", "value": { - "success": false, - "code": "TRANSFERS_NOT_ENABLED", - "message": "wallets_and_transfers_not_enabled", - "description": "Wallets and transfers are not enabled for this account. Contact support to enable them.", + "code": "BANK_ACCOUNTS_INCOMPLETE", + "description": "The bank account details are incomplete for this payment method. Provide the missing fields.", "errors": [], + "message": "sepa_bank_account_incomplete", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "VALIDATION_FAILED": { - "summary": "VALIDATION_FAILED", + "BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED": { + "summary": "BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED", "value": { + "code": "BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED", + "description": "This banking option is not supported for this operation.", + "errors": [], + "message": "unsupported_banking_partner", "success": false, - "code": "VALIDATION_FAILED", - "message": "validation_failed", - "description": "The request contains invalid fields. Check the errors list for details.", + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "BLOCKCHAIN_NETWORK_NOT_SUPPORTED": { + "summary": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", + "value": { + "code": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", + "description": "This network or token combination is not supported for this operation.", "errors": [], + "message": "network_not_supported_on_dev_instance", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "WALLETS_ATTACHED_TO_VIRTUAL_ACCOUNT": { - "summary": "WALLETS_ATTACHED_TO_VIRTUAL_ACCOUNT", + "CUSTOMERS_COUNTRY_NOT_SUPPORTED": { + "summary": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", "value": { + "code": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", + "description": "This country is not supported for this operation.", + "errors": [], + "message": "country_not_supported", "success": false, - "code": "WALLETS_ATTACHED_TO_VIRTUAL_ACCOUNT", - "message": "wallet_attached_to_virtual_account", - "description": "This wallet is attached to a virtual account and cannot be deleted. Delete the virtual account first.", + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "CUSTOMERS_INVALID_PHONE": { + "summary": "CUSTOMERS_INVALID_PHONE", + "value": { + "code": "CUSTOMERS_INVALID_PHONE", + "description": "The phone number provided is not valid. Check the number and try again.", "errors": [], + "message": "invalid_phone_number", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } - } - } - } - } - }, - "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, - "examples": { - "AUTH_UNAUTHORIZED": { - "summary": "AUTH_UNAUTHORIZED", + }, + "CUSTOMERS_INVALID_TAX_ID": { + "summary": "CUSTOMERS_INVALID_TAX_ID", "value": { + "code": "CUSTOMERS_INVALID_TAX_ID", + "description": "The tax ID provided is not valid. Check the value and try again.", + "errors": [], + "message": "invalid_cpf_or_rg_tax_id", "success": false, - "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", - "description": "Authentication failed. Check your API key or session and try again.", + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "CUSTOMERS_NOT_FOUND": { + "summary": "CUSTOMERS_NOT_FOUND", + "value": { + "code": "CUSTOMERS_NOT_FOUND", + "description": "The requested customer was not found.", "errors": [], + "message": "customer_not_found", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } - } - } - } - } - }, - "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, - "examples": { - "AUTH_FORBIDDEN": { - "summary": "AUTH_FORBIDDEN", + }, + "FILES_UNREADABLE": { + "summary": "FILES_UNREADABLE", "value": { + "code": "FILES_UNREADABLE", + "description": "We could not read the uploaded file. Check the file and try again.", + "errors": [], + "message": "file_download_failed", "success": false, - "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", - "description": "You do not have permission to perform this action.", + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "PAYINS_METHOD_NOT_SUPPORTED": { + "summary": "PAYINS_METHOD_NOT_SUPPORTED", + "value": { + "code": "PAYINS_METHOD_NOT_SUPPORTED", + "description": "This payment method is not supported for this operation.", "errors": [], + "message": "ted_payin_not_supported", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } - } - } - } - } - }, - "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, - "examples": { - "AUTH_RATE_LIMITED": { - "summary": "AUTH_RATE_LIMITED", + }, + "PAYOUTS_AMOUNT_BELOW_MINIMUM": { + "summary": "PAYOUTS_AMOUNT_BELOW_MINIMUM", "value": { + "code": "PAYOUTS_AMOUNT_BELOW_MINIMUM", + "description": "The amount is below the minimum for this payment rail.", + "errors": [], + "message": "swift_minimum_is_100_usd", "success": false, - "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", - "description": "Too many requests. Wait a moment and try again.", + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "PAYOUTS_INSUFFICIENT_BALANCE": { + "summary": "PAYOUTS_INSUFFICIENT_BALANCE", + "value": { + "code": "PAYOUTS_INSUFFICIENT_BALANCE", + "description": "There is not enough balance to complete this payout. Fund your balance and try again.", "errors": [], + "message": "not_enough_balance", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } - } - } - } - } - }, - "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, - "examples": { - "INTERNAL_ERROR": { - "summary": "INTERNAL_ERROR", + }, + "QUOTES_ALREADY_USED": { + "summary": "QUOTES_ALREADY_USED", "value": { + "code": "QUOTES_ALREADY_USED", + "description": "This quote was already used. Request a new quote.", + "errors": [], + "message": "quote_already_used", "success": false, - "code": "INTERNAL_ERROR", - "message": "internal_error", - "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "QUOTES_EXPIRED": { + "summary": "QUOTES_EXPIRED", + "value": { + "code": "QUOTES_EXPIRED", + "description": "This quote has expired. Request a new quote and try again.", "errors": [], + "message": "quote_expired", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } - } - } - } - } - } - } - } - }, - "/v1/instances/{instance_id}/customers/{customer_id}/wallets/{id}/balance": { - "get": { - "x-sdk": true, - "tags": [ - "Wallets" - ], - "summary": "Retrieve Wallet Balance", - "parameters": [ - { - "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, - "name": "instance_id", - "in": "path" - }, - { - "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "description": "Customer ID", - "example": "re_000000000000" - }, - "required": true, - "name": "customer_id", - "in": "path" - }, - { - "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "bk_000000000000" - }, - "required": true, - "name": "id", - "in": "path" - } - ], - "responses": { - "200": { - "description": "Get wallet balance", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/WalletBalanceOut" - } - } - } - }, - "400": { - "description": "Possible error codes: `TRANSFERS_NOT_ENABLED`, `VALIDATION_FAILED`. See the Error responses section for retry semantics.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, - "examples": { - "TRANSFERS_NOT_ENABLED": { - "summary": "TRANSFERS_NOT_ENABLED", + }, + "QUOTES_NOT_FOUND": { + "summary": "QUOTES_NOT_FOUND", "value": { + "code": "QUOTES_NOT_FOUND", + "description": "The requested quote was not found.", + "errors": [], + "message": "quote_not_found", "success": false, - "code": "TRANSFERS_NOT_ENABLED", - "message": "wallets_and_transfers_not_enabled", - "description": "Wallets and transfers are not enabled for this account. Contact support to enable them.", + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "QUOTES_RATE_UNAVAILABLE": { + "summary": "QUOTES_RATE_UNAVAILABLE", + "value": { + "code": "QUOTES_RATE_UNAVAILABLE", + "description": "An exchange rate is temporarily unavailable. Try again shortly.", "errors": [], + "message": "fx_rate_unavailable", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VALIDATION_MISSING_REQUIRED_FIELDS": { + "summary": "VALIDATION_MISSING_REQUIRED_FIELDS", + "value": { + "code": "VALIDATION_MISSING_REQUIRED_FIELDS", + "description": "Required fields are missing. Provide the missing fields and try again.", + "errors": [], + "message": "missing_required_fields", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED": { + "summary": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", + "value": { + "code": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", + "description": "Additional documents are required to create this virtual account. Upload the requested documents.", + "errors": [], + "message": "id_doc_front_file_required", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VIRTUAL_ACCOUNTS_NOT_FOUND": { + "summary": "VIRTUAL_ACCOUNTS_NOT_FOUND", + "value": { + "code": "VIRTUAL_ACCOUNTS_NOT_FOUND", + "description": "The requested virtual account was not found.", + "errors": [], + "message": "virtual_account_not_found", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { + "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "value": { + "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", + "errors": [], + "message": "virtual_account_provision_failed", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED": { + "summary": "VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED", + "value": { + "code": "VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED", + "description": "Virtual accounts are not available for this country or region.", + "errors": [], + "message": "us_state_not_supported", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `BANK_ACCOUNTS_INCOMPLETE`, `BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED`, `BLOCKCHAIN_NETWORK_NOT_SUPPORTED`, `CUSTOMERS_COUNTRY_NOT_SUPPORTED`, `CUSTOMERS_INVALID_PHONE`, `CUSTOMERS_INVALID_TAX_ID`, `CUSTOMERS_NOT_FOUND`, `FILES_UNREADABLE`, `PAYINS_METHOD_NOT_SUPPORTED`, `PAYOUTS_AMOUNT_BELOW_MINIMUM`, `PAYOUTS_INSUFFICIENT_BALANCE`, `QUOTES_ALREADY_USED`, `QUOTES_EXPIRED`, `QUOTES_NOT_FOUND`, `QUOTES_RATE_UNAVAILABLE`, `VALIDATION_FAILED`, `VALIDATION_MISSING_REQUIRED_FIELDS`, `VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED`, `VIRTUAL_ACCOUNTS_NOT_FOUND`, `VIRTUAL_ACCOUNTS_PROVISION_FAILED`, `VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, - "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", + "404": { "content": { "application/json": { + "examples": { + "WALLETS_NOT_FOUND": { + "summary": "WALLETS_NOT_FOUND", + "value": { + "code": "WALLETS_NOT_FOUND", + "description": "The requested wallet was not found.", + "errors": [], + "message": "wallet_not_found", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } + }, "schema": { "$ref": "#/components/schemas/Error" + } + } + }, + "description": "Possible error codes: `WALLETS_NOT_FOUND`. See the Error responses section for retry semantics." + }, + "422": { + "content": { + "application/json": { + "examples": { + "CUSTOMERS_INVALID_DATA": { + "summary": "CUSTOMERS_INVALID_DATA", + "value": { + "code": "CUSTOMERS_INVALID_DATA", + "description": "The customer data was rejected by the banking provider. Check the highlighted fields and try again.", + "errors": [], + "message": "invalid_customer_data", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } }, + "schema": { + "$ref": "#/components/schemas/Error" + } + } + }, + "description": "Possible error codes: `CUSTOMERS_INVALID_DATA`. See the Error responses section for retry semantics." + }, + "429": { + "content": { + "application/json": { "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { + "FILES_UNREADABLE": { + "summary": "FILES_UNREADABLE", + "value": { + "code": "FILES_UNREADABLE", + "description": "We could not read the uploaded file. Check the file and try again.", + "errors": [], + "message": "file_download_failed", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "QUOTES_RATE_UNAVAILABLE": { + "summary": "QUOTES_RATE_UNAVAILABLE", + "value": { + "code": "QUOTES_RATE_UNAVAILABLE", + "description": "An exchange rate is temporarily unavailable. Try again shortly.", + "errors": [], + "message": "fx_rate_unavailable", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { + "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "value": { + "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", + "errors": [], + "message": "virtual_account_provision_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `FILES_UNREADABLE`, `INTERNAL_ERROR`, `QUOTES_RATE_UNAVAILABLE`, `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics." }, - "503": { - "description": "Possible error codes: `WALLETS_BALANCE_UNAVAILABLE`. See the Error responses section for retry semantics.", + "502": { "content": { "application/json": { + "examples": { + "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { + "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "value": { + "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", + "errors": [], + "message": "virtual_account_provision_failed", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } + }, "schema": { "$ref": "#/components/schemas/Error" - }, + } + } + }, + "description": "Possible error codes: `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics." + }, + "503": { + "content": { + "application/json": { "examples": { - "WALLETS_BALANCE_UNAVAILABLE": { - "summary": "WALLETS_BALANCE_UNAVAILABLE", + "QUOTES_RATE_UNAVAILABLE": { + "summary": "QUOTES_RATE_UNAVAILABLE", "value": { - "success": false, - "code": "WALLETS_BALANCE_UNAVAILABLE", - "message": "balance_temporarily_unavailable", - "description": "The wallet balance is temporarily unavailable. Try again shortly.", + "code": "QUOTES_RATE_UNAVAILABLE", + "description": "An exchange rate is temporarily unavailable. Try again shortly.", "errors": [], + "message": "fx_rate_unavailable", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `QUOTES_RATE_UNAVAILABLE`. See the Error responses section for retry semantics." } - } - } - }, - "/v1/instances/{instance_id}/transfer-quotes": { - "post": { - "x-sdk": true, + }, + "summary": "Create Payin", "tags": [ - "Transfer Quotes" + "Payins" ], - "summary": "Create Transfer Quote", + "x-sdk": true + } + }, + "/v1/instances/{instance_id}/payins/{id}": { + "get": { "parameters": [ { + "in": "path", + "name": "instance_id", + "required": true, "schema": { - "type": "string", - "minLength": 15, + "example": "in_000000000000", "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, - "name": "instance_id", - "in": "path" + "minLength": 15, + "type": "string" + } }, { + "in": "path", + "name": "id", + "required": true, "schema": { - "type": "string", - "maxLength": 255, - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" - }, - "required": false, - "name": "Idempotency-Key", - "in": "header" - } - ], - "requestBody": { - "description": "Create a new quote", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateTransferQuoteIn" - } + "example": "pi_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" } } - }, + ], "responses": { "200": { - "description": "Transfer Quote creation details", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateTransferQuoteOut" + "$ref": "#/components/schemas/PayinOut" } } - } + }, + "description": "List payins" }, "400": { - "description": "Possible error codes: `BLOCKCHAIN_NETWORK_NOT_SUPPORTED`, `CUSTOMERS_KYC_NOT_APPROVED`, `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "BLOCKCHAIN_NETWORK_NOT_SUPPORTED": { - "summary": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", - "value": { - "success": false, - "code": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", - "message": "network_not_supported_on_dev_instance", - "description": "This network or token combination is not supported for this operation.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "CUSTOMERS_KYC_NOT_APPROVED": { - "summary": "CUSTOMERS_KYC_NOT_APPROVED", - "value": { - "success": false, - "code": "CUSTOMERS_KYC_NOT_APPROVED", - "message": "kyc_not_approved", - "description": "This customer has not completed verification yet. Complete the verification before continuing.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, - "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", + "404": { "content": { "application/json": { + "examples": { + "PAYINS_NOT_FOUND": { + "summary": "PAYINS_NOT_FOUND", + "value": { + "code": "PAYINS_NOT_FOUND", + "description": "The requested payin was not found.", + "errors": [], + "message": "payin_not_found", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } + }, "schema": { "$ref": "#/components/schemas/Error" - }, + } + } + }, + "description": "Possible error codes: `PAYINS_NOT_FOUND`. See the Error responses section for retry semantics." + }, + "429": { + "content": { + "application/json": { "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } + }, + "summary": "Retrieve Payin", + "tags": [ + "Payins" + ], + "x-sdk": true } }, - "/v1/instances/{instance_id}/transfers/{id}": { + "/v1/instances/{instance_id}/payouts": { "get": { - "x-sdk": true, - "tags": [ - "Transfers" - ], - "summary": "Retrieve Transfer", "parameters": [ { + "in": "path", + "name": "instance_id", + "required": true, "schema": { - "type": "string", - "minLength": 15, + "example": "in_000000000000", "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, - "name": "instance_id", - "in": "path" + "minLength": 15, + "type": "string" + } }, { + "in": "query", + "name": "limit", + "required": false, "schema": { - "type": "string", - "minLength": 15, + "description": "Number of items to return", + "enum": [ + "10", + "50", + "100", + "200", + "500", + "1000" + ], + "example": "50", + "type": "string" + } + }, + { + "in": "query", + "name": "offset", + "required": false, + "schema": { + "description": "Number of items to skip", + "enum": [ + "0", + "10", + "50", + "100", + "200", + "500", + "1000" + ], + "example": "0", + "type": "string" + } + }, + { + "in": "query", + "name": "starting_after", + "required": false, + "schema": { + "description": "A cursor for use in pagination. starting_after is an object ID that defines your place in the list.", + "example": "pi_123", + "type": "string" + } + }, + { + "in": "query", + "name": "ending_before", + "required": false, + "schema": { + "description": "A cursor for use in pagination. ending_before is an object ID that defines your place in the list.", + "example": "pi_123", + "type": "string" + } + }, + { + "in": "query", + "name": "customer_id", + "required": false, + "schema": { + "example": "re_000000000000", "maxLength": 15, - "example": "pa_000000000000" - }, - "required": true, - "name": "id", - "in": "path" + "minLength": 15, + "type": "string" + } + }, + { + "in": "query", + "name": "status", + "required": false, + "schema": { + "enum": [ + "processing", + "failed", + "refunded", + "completed", + "on_hold" + ], + "type": "string" + } + }, + { + "in": "query", + "name": "customer_name", + "required": false, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "bank_account_id", + "required": false, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "country", + "required": false, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "payment_method", + "required": false, + "schema": { + "enum": [ + "wire", + "ach", + "pix", + "pix_safe", + "ted", + "spei_bitso", + "transfers_bitso", + "ach_cop_bitso", + "international_swift", + "rtp", + "sepa" + ], + "type": "string" + } + }, + { + "in": "query", + "name": "network", + "required": false, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "token", + "required": false, + "schema": { + "type": "string" + } } ], "responses": { "200": { - "description": "List transfers", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TransferOut" + "anyOf": [ + { + "properties": { + "data": { + "items": { + "$ref": "#/components/schemas/PayoutOut" + }, + "type": "array" + }, + "pagination": { + "$ref": "#/components/schemas/PaginationMetadata" + } + }, + "required": [ + "data", + "pagination" + ], + "type": "object" + }, + { + "items": { + "$ref": "#/components/schemas/PayoutOut" + }, + "type": "array" + } + ] } } - } + }, + "description": "List payouts with pagination and filtering" }, - "400": { - "description": "Possible error codes: `TRANSFERS_NOT_ENABLED`, `VALIDATION_FAILED`. See the Error responses section for retry semantics.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, - "examples": { - "TRANSFERS_NOT_ENABLED": { - "summary": "TRANSFERS_NOT_ENABLED", - "value": { - "success": false, - "code": "TRANSFERS_NOT_ENABLED", - "message": "wallets_and_transfers_not_enabled", - "description": "Wallets and transfers are not enabled for this account. Contact support to enable them.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, + "400": { + "content": { + "application/json": { + "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } - } - }, - "/v1/e/transfers/{id}": { - "get": { - "x-sdk": true, + }, + "summary": "Retrieve Payouts", "tags": [ - "Transfers" + "Payouts" ], - "summary": "Retrieve Transfer Track", + "x-sdk": true + } + }, + "/v1/instances/{instance_id}/payouts/evm": { + "post": { "parameters": [ { + "in": "path", + "name": "instance_id", + "required": true, "schema": { - "type": "string", - "minLength": 15, + "example": "in_000000000000", "maxLength": 15, - "example": "pa_000000000000" - }, - "required": true, - "name": "id", - "in": "path" + "minLength": 15, + "type": "string" + } + }, + { + "in": "header", + "name": "Idempotency-Key", + "required": false, + "schema": { + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "maxLength": 255, + "type": "string" + } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PayoutOnEvmIn" + } + } + }, + "description": "Start payout on evm blockchain" + }, "responses": { "200": { - "description": "List transfers", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TransferOut" + "$ref": "#/components/schemas/PayoutOnEvmOut" } } - } + }, + "description": "Payout started with success" }, "400": { - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { + "BANK_ACCOUNTS_INCOMPLETE": { + "summary": "BANK_ACCOUNTS_INCOMPLETE", + "value": { + "code": "BANK_ACCOUNTS_INCOMPLETE", + "description": "The bank account details are incomplete for this payment method. Provide the missing fields.", + "errors": [], + "message": "sepa_bank_account_incomplete", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "BLOCKCHAIN_NETWORK_NOT_SUPPORTED": { + "summary": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", + "value": { + "code": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", + "description": "This network or token combination is not supported for this operation.", + "errors": [], + "message": "network_not_supported_on_dev_instance", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "CUSTOMERS_COUNTRY_NOT_SUPPORTED": { + "summary": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", + "value": { + "code": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", + "description": "This country is not supported for this operation.", + "errors": [], + "message": "country_not_supported", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "CUSTOMERS_INVALID_PHONE": { + "summary": "CUSTOMERS_INVALID_PHONE", + "value": { + "code": "CUSTOMERS_INVALID_PHONE", + "description": "The phone number provided is not valid. Check the number and try again.", + "errors": [], + "message": "invalid_phone_number", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "CUSTOMERS_INVALID_TAX_ID": { + "summary": "CUSTOMERS_INVALID_TAX_ID", + "value": { + "code": "CUSTOMERS_INVALID_TAX_ID", + "description": "The tax ID provided is not valid. Check the value and try again.", + "errors": [], + "message": "invalid_cpf_or_rg_tax_id", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "CUSTOMERS_ONBOARDING_INCOMPLETE": { + "summary": "CUSTOMERS_ONBOARDING_INCOMPLETE", + "value": { + "code": "CUSTOMERS_ONBOARDING_INCOMPLETE", + "description": "Onboarding is not complete yet. Finish the remaining steps before continuing.", + "errors": [], + "message": "onboarding_incomplete", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "FILES_UNREADABLE": { + "summary": "FILES_UNREADABLE", + "value": { + "code": "FILES_UNREADABLE", + "description": "We could not read the uploaded file. Check the file and try again.", + "errors": [], + "message": "file_download_failed", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "PAYOUTS_AMOUNT_BELOW_MINIMUM": { + "summary": "PAYOUTS_AMOUNT_BELOW_MINIMUM", + "value": { + "code": "PAYOUTS_AMOUNT_BELOW_MINIMUM", + "description": "The amount is below the minimum for this payment rail.", + "errors": [], + "message": "swift_minimum_is_100_usd", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "QUOTES_ALREADY_USED": { + "summary": "QUOTES_ALREADY_USED", + "value": { + "code": "QUOTES_ALREADY_USED", + "description": "This quote was already used. Request a new quote.", + "errors": [], + "message": "quote_already_used", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "QUOTES_EXPIRED": { + "summary": "QUOTES_EXPIRED", + "value": { + "code": "QUOTES_EXPIRED", + "description": "This quote has expired. Request a new quote and try again.", + "errors": [], + "message": "quote_expired", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED": { + "summary": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", + "value": { + "code": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", + "description": "Additional documents are required to create this virtual account. Upload the requested documents.", + "errors": [], + "message": "id_doc_front_file_required", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VIRTUAL_ACCOUNTS_NOT_FOUND": { + "summary": "VIRTUAL_ACCOUNTS_NOT_FOUND", + "value": { + "code": "VIRTUAL_ACCOUNTS_NOT_FOUND", + "description": "The requested virtual account was not found.", + "errors": [], + "message": "virtual_account_not_found", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { + "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "value": { + "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", + "errors": [], + "message": "virtual_account_provision_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `BANK_ACCOUNTS_INCOMPLETE`, `BLOCKCHAIN_NETWORK_NOT_SUPPORTED`, `CUSTOMERS_COUNTRY_NOT_SUPPORTED`, `CUSTOMERS_INVALID_PHONE`, `CUSTOMERS_INVALID_TAX_ID`, `CUSTOMERS_ONBOARDING_INCOMPLETE`, `FILES_UNREADABLE`, `PAYOUTS_AMOUNT_BELOW_MINIMUM`, `QUOTES_ALREADY_USED`, `QUOTES_EXPIRED`, `VALIDATION_FAILED`, `VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED`, `VIRTUAL_ACCOUNTS_NOT_FOUND`, `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, - "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", + "422": { "content": { "application/json": { + "examples": { + "CUSTOMERS_INVALID_DATA": { + "summary": "CUSTOMERS_INVALID_DATA", + "value": { + "code": "CUSTOMERS_INVALID_DATA", + "description": "The customer data was rejected by the banking provider. Check the highlighted fields and try again.", + "errors": [], + "message": "invalid_customer_data", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } + }, "schema": { "$ref": "#/components/schemas/Error" - }, + } + } + }, + "description": "Possible error codes: `CUSTOMERS_INVALID_DATA`. See the Error responses section for retry semantics." + }, + "429": { + "content": { + "application/json": { "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { + "FILES_UNREADABLE": { + "summary": "FILES_UNREADABLE", + "value": { + "code": "FILES_UNREADABLE", + "description": "We could not read the uploaded file. Check the file and try again.", + "errors": [], + "message": "file_download_failed", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { + "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "value": { + "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", + "errors": [], + "message": "virtual_account_provision_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `FILES_UNREADABLE`, `INTERNAL_ERROR`, `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics." + }, + "502": { + "content": { + "application/json": { + "examples": { + "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { + "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "value": { + "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", + "errors": [], + "message": "virtual_account_provision_failed", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } + }, + "schema": { + "$ref": "#/components/schemas/Error" + } + } + }, + "description": "Possible error codes: `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics." } - } - } - }, - "/v1/instances/{instance_id}/transfers": { - "get": { - "x-sdk": true, + }, + "summary": "Create Payout on EVM Chains", "tags": [ - "Transfers" + "Payouts" ], - "summary": "Retrieve Transfers", + "x-sdk": true + } + }, + "/v1/instances/{instance_id}/payouts/solana": { + "post": { "parameters": [ { - "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, + "in": "path", "name": "instance_id", - "in": "path" - }, - { - "schema": { - "type": "string", - "enum": [ - "10", - "50", - "100", - "200", - "500", - "1000" - ], - "description": "Number of items to return", - "example": "50" - }, - "required": false, - "name": "limit", - "in": "query" - }, - { + "required": true, "schema": { - "type": "string", - "enum": [ - "0", - "10", - "50", - "100", - "200", - "500", - "1000" - ], - "description": "Number of items to skip", - "example": "0" - }, - "required": false, - "name": "offset", - "in": "query" + "example": "in_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + } }, { - "schema": { - "type": "string", - "description": "A cursor for use in pagination. starting_after is an object ID that defines your place in the list.", - "example": "pi_123" - }, + "in": "header", + "name": "Idempotency-Key", "required": false, - "name": "starting_after", - "in": "query" - }, - { "schema": { - "type": "string", - "description": "A cursor for use in pagination. ending_before is an object ID that defines your place in the list.", - "example": "pi_123" - }, - "required": false, - "name": "ending_before", - "in": "query" + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "maxLength": 255, + "type": "string" + } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PayoutOnSolanaIn" + } + } + }, + "description": "Start payout on solana blockchain" + }, "responses": { "200": { - "description": "List transfers", "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TransferOut" - } - }, - "pagination": { - "$ref": "#/components/schemas/PaginationMetadata" + "$ref": "#/components/schemas/PayoutOnEvmOut" + } + } + }, + "description": "Payout started with success" + }, + "400": { + "content": { + "application/json": { + "examples": { + "BANK_ACCOUNTS_INCOMPLETE": { + "summary": "BANK_ACCOUNTS_INCOMPLETE", + "value": { + "code": "BANK_ACCOUNTS_INCOMPLETE", + "description": "The bank account details are incomplete for this payment method. Provide the missing fields.", + "errors": [], + "message": "sepa_bank_account_incomplete", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "BLOCKCHAIN_NETWORK_NOT_SUPPORTED": { + "summary": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", + "value": { + "code": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", + "description": "This network or token combination is not supported for this operation.", + "errors": [], + "message": "network_not_supported_on_dev_instance", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "CUSTOMERS_COUNTRY_NOT_SUPPORTED": { + "summary": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", + "value": { + "code": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", + "description": "This country is not supported for this operation.", + "errors": [], + "message": "country_not_supported", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "CUSTOMERS_INVALID_PHONE": { + "summary": "CUSTOMERS_INVALID_PHONE", + "value": { + "code": "CUSTOMERS_INVALID_PHONE", + "description": "The phone number provided is not valid. Check the number and try again.", + "errors": [], + "message": "invalid_phone_number", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "CUSTOMERS_INVALID_TAX_ID": { + "summary": "CUSTOMERS_INVALID_TAX_ID", + "value": { + "code": "CUSTOMERS_INVALID_TAX_ID", + "description": "The tax ID provided is not valid. Check the value and try again.", + "errors": [], + "message": "invalid_cpf_or_rg_tax_id", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "required": [ - "data", - "pagination" - ] - } - } - } - }, - "400": { - "description": "Possible error codes: `TRANSFERS_NOT_ENABLED`, `VALIDATION_FAILED`. See the Error responses section for retry semantics.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, - "examples": { - "TRANSFERS_NOT_ENABLED": { - "summary": "TRANSFERS_NOT_ENABLED", + "CUSTOMERS_ONBOARDING_INCOMPLETE": { + "summary": "CUSTOMERS_ONBOARDING_INCOMPLETE", + "value": { + "code": "CUSTOMERS_ONBOARDING_INCOMPLETE", + "description": "Onboarding is not complete yet. Finish the remaining steps before continuing.", + "errors": [], + "message": "onboarding_incomplete", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "FILES_UNREADABLE": { + "summary": "FILES_UNREADABLE", "value": { + "code": "FILES_UNREADABLE", + "description": "We could not read the uploaded file. Check the file and try again.", + "errors": [], + "message": "file_download_failed", "success": false, - "code": "TRANSFERS_NOT_ENABLED", - "message": "wallets_and_transfers_not_enabled", - "description": "Wallets and transfers are not enabled for this account. Contact support to enable them.", + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "QUOTES_ALREADY_USED": { + "summary": "QUOTES_ALREADY_USED", + "value": { + "code": "QUOTES_ALREADY_USED", + "description": "This quote was already used. Request a new quote.", + "errors": [], + "message": "quote_already_used", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "QUOTES_EXPIRED": { + "summary": "QUOTES_EXPIRED", + "value": { + "code": "QUOTES_EXPIRED", + "description": "This quote has expired. Request a new quote and try again.", "errors": [], + "message": "quote_expired", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED": { + "summary": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", + "value": { + "code": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", + "description": "Additional documents are required to create this virtual account. Upload the requested documents.", + "errors": [], + "message": "id_doc_front_file_required", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { + "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "value": { + "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", + "errors": [], + "message": "virtual_account_provision_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `BANK_ACCOUNTS_INCOMPLETE`, `BLOCKCHAIN_NETWORK_NOT_SUPPORTED`, `CUSTOMERS_COUNTRY_NOT_SUPPORTED`, `CUSTOMERS_INVALID_PHONE`, `CUSTOMERS_INVALID_TAX_ID`, `CUSTOMERS_ONBOARDING_INCOMPLETE`, `FILES_UNREADABLE`, `QUOTES_ALREADY_USED`, `QUOTES_EXPIRED`, `VALIDATION_FAILED`, `VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED`, `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, - "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", + "422": { "content": { "application/json": { + "examples": { + "CUSTOMERS_INVALID_DATA": { + "summary": "CUSTOMERS_INVALID_DATA", + "value": { + "code": "CUSTOMERS_INVALID_DATA", + "description": "The customer data was rejected by the banking provider. Check the highlighted fields and try again.", + "errors": [], + "message": "invalid_customer_data", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } + }, "schema": { "$ref": "#/components/schemas/Error" - }, + } + } + }, + "description": "Possible error codes: `CUSTOMERS_INVALID_DATA`. See the Error responses section for retry semantics." + }, + "429": { + "content": { + "application/json": { "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { + "FILES_UNREADABLE": { + "summary": "FILES_UNREADABLE", + "value": { + "code": "FILES_UNREADABLE", + "description": "We could not read the uploaded file. Check the file and try again.", + "errors": [], + "message": "file_download_failed", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { + "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "value": { + "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", + "errors": [], + "message": "virtual_account_provision_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `FILES_UNREADABLE`, `INTERNAL_ERROR`, `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics." + }, + "502": { + "content": { + "application/json": { + "examples": { + "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { + "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "value": { + "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", + "errors": [], + "message": "virtual_account_provision_failed", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } + }, + "schema": { + "$ref": "#/components/schemas/Error" + } + } + }, + "description": "Possible error codes: `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics." } - } - }, - "post": { - "x-sdk": true, + }, + "summary": "Create Payout on Solana", "tags": [ - "Transfers" + "Payouts" ], - "summary": "Create Transfer", + "x-sdk": true + } + }, + "/v1/instances/{instance_id}/payouts/stellar": { + "post": { "parameters": [ { + "in": "path", + "name": "instance_id", + "required": true, "schema": { - "type": "string", - "minLength": 15, + "example": "in_000000000000", "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, - "name": "instance_id", - "in": "path" + "minLength": 15, + "type": "string" + } }, { + "in": "header", + "name": "Idempotency-Key", + "required": false, "schema": { - "type": "string", - "maxLength": 255, "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" - }, - "required": false, - "name": "Idempotency-Key", - "in": "header" + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "maxLength": 255, + "type": "string" + } } ], "requestBody": { - "description": "Start transfer", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateTransferIn" + "$ref": "#/components/schemas/PayoutOnStellarIn" } } - } + }, + "description": "Start payout on stellar blockchain" }, "responses": { "200": { - "description": "Transfer started with success", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateTransferOut" + "$ref": "#/components/schemas/PayoutOnEvmOut" } } - } + }, + "description": "Payout started with success" }, "400": { - "description": "Possible error codes: `BANK_ACCOUNTS_INCOMPLETE`, `BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED`, `BLOCKCHAIN_NETWORK_NOT_SUPPORTED`, `CUSTOMERS_COUNTRY_NOT_SUPPORTED`, `CUSTOMERS_INVALID_PHONE`, `CUSTOMERS_INVALID_TAX_ID`, `FILES_UNREADABLE`, `PAYOUTS_AMOUNT_BELOW_MINIMUM`, `PAYOUTS_INSUFFICIENT_BALANCE`, `QUOTES_EXPIRED`, `QUOTES_RATE_UNAVAILABLE`, `TRANSFERS_NOT_ENABLED`, `VALIDATION_FAILED`, `VALIDATION_MISSING_REQUIRED_FIELDS`, `VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED`, `VIRTUAL_ACCOUNTS_NOT_FOUND`, `VIRTUAL_ACCOUNTS_PROVISION_FAILED`, `VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "BANK_ACCOUNTS_INCOMPLETE": { "summary": "BANK_ACCOUNTS_INCOMPLETE", "value": { - "success": false, "code": "BANK_ACCOUNTS_INCOMPLETE", - "message": "sepa_bank_account_incomplete", "description": "The bank account details are incomplete for this payment method. Provide the missing fields.", "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED": { - "summary": "BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED", - "value": { + "message": "sepa_bank_account_incomplete", "success": false, - "code": "BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED", - "message": "unsupported_banking_partner", - "description": "This banking option is not supported for this operation.", - "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "BLOCKCHAIN_NETWORK_NOT_SUPPORTED": { - "summary": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", + "BLOCKCHAIN_TX_FAILED": { + "summary": "BLOCKCHAIN_TX_FAILED", "value": { - "success": false, - "code": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", - "message": "network_not_supported_on_dev_instance", - "description": "This network or token combination is not supported for this operation.", + "code": "BLOCKCHAIN_TX_FAILED", + "description": "The blockchain transaction failed. Try again, and contact support if the problem persists.", "errors": [], + "message": "transaction_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "CUSTOMERS_COUNTRY_NOT_SUPPORTED": { "summary": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", "value": { - "success": false, "code": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", - "message": "country_not_supported", "description": "This country is not supported for this operation.", "errors": [], + "message": "country_not_supported", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "CUSTOMERS_INVALID_PHONE": { "summary": "CUSTOMERS_INVALID_PHONE", "value": { - "success": false, "code": "CUSTOMERS_INVALID_PHONE", - "message": "invalid_phone_number", "description": "The phone number provided is not valid. Check the number and try again.", "errors": [], + "message": "invalid_phone_number", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "CUSTOMERS_INVALID_TAX_ID": { "summary": "CUSTOMERS_INVALID_TAX_ID", "value": { - "success": false, "code": "CUSTOMERS_INVALID_TAX_ID", - "message": "invalid_cpf_or_rg_tax_id", "description": "The tax ID provided is not valid. Check the value and try again.", "errors": [], + "message": "invalid_cpf_or_rg_tax_id", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "CUSTOMERS_ONBOARDING_INCOMPLETE": { + "summary": "CUSTOMERS_ONBOARDING_INCOMPLETE", + "value": { + "code": "CUSTOMERS_ONBOARDING_INCOMPLETE", + "description": "Onboarding is not complete yet. Finish the remaining steps before continuing.", + "errors": [], + "message": "onboarding_incomplete", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "FILES_UNREADABLE": { "summary": "FILES_UNREADABLE", "value": { - "success": false, "code": "FILES_UNREADABLE", - "message": "file_download_failed", "description": "We could not read the uploaded file. Check the file and try again.", "errors": [], + "message": "file_download_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "PAYOUTS_AMOUNT_BELOW_MINIMUM": { "summary": "PAYOUTS_AMOUNT_BELOW_MINIMUM", "value": { - "success": false, "code": "PAYOUTS_AMOUNT_BELOW_MINIMUM", - "message": "swift_minimum_is_100_usd", "description": "The amount is below the minimum for this payment rail.", "errors": [], + "message": "swift_minimum_is_100_usd", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "PAYOUTS_INSUFFICIENT_BALANCE": { - "summary": "PAYOUTS_INSUFFICIENT_BALANCE", + "QUOTES_ALREADY_USED": { + "summary": "QUOTES_ALREADY_USED", "value": { - "success": false, - "code": "PAYOUTS_INSUFFICIENT_BALANCE", - "message": "not_enough_balance", - "description": "There is not enough balance to complete this payout. Fund your balance and try again.", + "code": "QUOTES_ALREADY_USED", + "description": "This quote was already used. Request a new quote.", "errors": [], + "message": "quote_already_used", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "QUOTES_EXPIRED": { "summary": "QUOTES_EXPIRED", "value": { - "success": false, "code": "QUOTES_EXPIRED", - "message": "quote_expired", "description": "This quote has expired. Request a new quote and try again.", "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "QUOTES_RATE_UNAVAILABLE": { - "summary": "QUOTES_RATE_UNAVAILABLE", - "value": { - "success": false, - "code": "QUOTES_RATE_UNAVAILABLE", - "message": "fx_rate_unavailable", - "description": "An exchange rate is temporarily unavailable. Try again shortly.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "TRANSFERS_NOT_ENABLED": { - "summary": "TRANSFERS_NOT_ENABLED", - "value": { + "message": "quote_expired", "success": false, - "code": "TRANSFERS_NOT_ENABLED", - "message": "wallets_and_transfers_not_enabled", - "description": "Wallets and transfers are not enabled for this account. Contact support to enable them.", - "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VALIDATION_MISSING_REQUIRED_FIELDS": { - "summary": "VALIDATION_MISSING_REQUIRED_FIELDS", - "value": { + "message": "validation_failed", "success": false, - "code": "VALIDATION_MISSING_REQUIRED_FIELDS", - "message": "missing_required_fields", - "description": "Required fields are missing. Provide the missing fields and try again.", - "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED": { "summary": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", "value": { - "success": false, "code": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", - "message": "id_doc_front_file_required", "description": "Additional documents are required to create this virtual account. Upload the requested documents.", "errors": [], + "message": "id_doc_front_file_required", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "VIRTUAL_ACCOUNTS_NOT_FOUND": { "summary": "VIRTUAL_ACCOUNTS_NOT_FOUND", "value": { - "success": false, "code": "VIRTUAL_ACCOUNTS_NOT_FOUND", - "message": "virtual_account_not_found", "description": "The requested virtual account was not found.", "errors": [], + "message": "virtual_account_not_found", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", "value": { - "success": false, "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "message": "virtual_account_provision_failed", "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED": { - "summary": "VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED", - "value": { + "message": "virtual_account_provision_failed", "success": false, - "code": "VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED", - "message": "us_state_not_supported", - "description": "Virtual accounts are not available for this country or region.", - "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `BANK_ACCOUNTS_INCOMPLETE`, `BLOCKCHAIN_TX_FAILED`, `CUSTOMERS_COUNTRY_NOT_SUPPORTED`, `CUSTOMERS_INVALID_PHONE`, `CUSTOMERS_INVALID_TAX_ID`, `CUSTOMERS_ONBOARDING_INCOMPLETE`, `FILES_UNREADABLE`, `PAYOUTS_AMOUNT_BELOW_MINIMUM`, `QUOTES_ALREADY_USED`, `QUOTES_EXPIRED`, `VALIDATION_FAILED`, `VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED`, `VIRTUAL_ACCOUNTS_NOT_FOUND`, `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - } - } - } - }, - "404": { - "description": "Possible error codes: `WALLETS_NOT_FOUND`. See the Error responses section for retry semantics.", - "content": { - "application/json": { + }, "schema": { "$ref": "#/components/schemas/Error" - }, - "examples": { - "WALLETS_NOT_FOUND": { - "summary": "WALLETS_NOT_FOUND", - "value": { - "success": false, - "code": "WALLETS_NOT_FOUND", - "message": "wallet_not_found", - "description": "The requested wallet was not found.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "422": { - "description": "Possible error codes: `CUSTOMERS_INVALID_DATA`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "CUSTOMERS_INVALID_DATA": { "summary": "CUSTOMERS_INVALID_DATA", "value": { - "success": false, "code": "CUSTOMERS_INVALID_DATA", - "message": "invalid_customer_data", "description": "The customer data was rejected by the banking provider. Check the highlighted fields and try again.", "errors": [], + "message": "invalid_customer_data", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `CUSTOMERS_INVALID_DATA`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `FILES_UNREADABLE`, `INTERNAL_ERROR`, `QUOTES_RATE_UNAVAILABLE`, `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "FILES_UNREADABLE": { "summary": "FILES_UNREADABLE", "value": { - "success": false, "code": "FILES_UNREADABLE", - "message": "file_download_failed", "description": "We could not read the uploaded file. Check the file and try again.", "errors": [], + "message": "file_download_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "QUOTES_RATE_UNAVAILABLE": { - "summary": "QUOTES_RATE_UNAVAILABLE", - "value": { + "message": "internal_error", "success": false, - "code": "QUOTES_RATE_UNAVAILABLE", - "message": "fx_rate_unavailable", - "description": "An exchange rate is temporarily unavailable. Try again shortly.", - "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", "value": { - "success": false, "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "message": "virtual_account_provision_failed", "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", "errors": [], + "message": "virtual_account_provision_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `FILES_UNREADABLE`, `INTERNAL_ERROR`, `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics." }, "502": { - "description": "Possible error codes: `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", "value": { - "success": false, "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "message": "virtual_account_provision_failed", "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", "errors": [], + "message": "virtual_account_provision_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - } - } - } - }, - "503": { - "description": "Possible error codes: `QUOTES_RATE_UNAVAILABLE`. See the Error responses section for retry semantics.", - "content": { - "application/json": { + }, "schema": { "$ref": "#/components/schemas/Error" - }, - "examples": { - "QUOTES_RATE_UNAVAILABLE": { - "summary": "QUOTES_RATE_UNAVAILABLE", - "value": { - "success": false, - "code": "QUOTES_RATE_UNAVAILABLE", - "message": "fx_rate_unavailable", - "description": "An exchange rate is temporarily unavailable. Try again shortly.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } } } - } + }, + "description": "Possible error codes: `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics." } - } + }, + "summary": "Create Payout on Stellar", + "tags": [ + "Payouts" + ], + "x-sdk": true } }, - "/v1/instances/{instance_id}/webhook-endpoints": { + "/v1/instances/{instance_id}/payouts/stellar/authorize": { "post": { - "x-sdk": true, - "tags": [ - "Webhook Endpoints" - ], - "summary": "Register Webhook", "parameters": [ { + "in": "path", + "name": "instance_id", + "required": true, "schema": { - "type": "string", - "minLength": 15, + "example": "in_000000000000", "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, - "name": "instance_id", - "in": "path" + "minLength": 15, + "type": "string" + } }, { + "in": "header", + "name": "Idempotency-Key", + "required": false, "schema": { - "type": "string", - "maxLength": 255, "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" - }, - "required": false, - "name": "Idempotency-Key", - "in": "header" + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "maxLength": 255, + "type": "string" + } } ], "requestBody": { - "description": "Create a new webhook endpoint", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WebhookEndpointIn" + "$ref": "#/components/schemas/PayoutOnStellarAuthorizeIn" } } } }, "responses": { "200": { - "description": "Create webhook endpoint", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WebhookEndpointOut" + "properties": { + "transaction_hash": { + "type": "string" + } + }, + "required": [ + "transaction_hash" + ], + "type": "object" } } - } + }, + "description": "Payout started with success" }, "400": { - "description": "Possible error codes: `VALIDATION_FAILED`, `WEBHOOKS_LIMIT_REACHED`, `WEBHOOKS_URL_INVALID`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "VALIDATION_FAILED": { - "summary": "VALIDATION_FAILED", + "QUOTES_INVALID_STATE": { + "summary": "QUOTES_INVALID_STATE", "value": { - "success": false, - "code": "VALIDATION_FAILED", - "message": "validation_failed", - "description": "The request contains invalid fields. Check the errors list for details.", + "code": "QUOTES_INVALID_STATE", + "description": "This quote cannot be authorized in its current state. Request a new quote and try again.", "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "WEBHOOKS_LIMIT_REACHED": { - "summary": "WEBHOOKS_LIMIT_REACHED", - "value": { + "message": "quote_invalid_state", "success": false, - "code": "WEBHOOKS_LIMIT_REACHED", - "message": "webhook_endpoint_limit_reached", - "description": "You reached the maximum number of webhook endpoints.", - "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "WEBHOOKS_URL_INVALID": { - "summary": "WEBHOOKS_URL_INVALID", + "VALIDATION_FAILED": { + "summary": "VALIDATION_FAILED", "value": { - "success": false, - "code": "WEBHOOKS_URL_INVALID", - "message": "webhook_url_invalid", - "description": "The webhook URL is not valid. Use a reachable HTTPS URL.", + "code": "VALIDATION_FAILED", + "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `QUOTES_INVALID_STATE`, `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } - }, - "get": { - "x-sdk": true, + }, + "summary": "Authorize Token Stellar", "tags": [ - "Webhook Endpoints" + "Payouts" ], - "summary": "Retrieve Webhooks", + "x-sdk": true + } + }, + "/v1/instances/{instance_id}/payouts/{id}": { + "get": { "parameters": [ { + "in": "path", + "name": "instance_id", + "required": true, "schema": { - "type": "string", - "minLength": 15, + "example": "in_000000000000", "maxLength": 15, - "example": "in_000000000000" - }, + "minLength": 15, + "type": "string" + } + }, + { + "in": "path", + "name": "id", "required": true, - "name": "instance_id", - "in": "path" + "schema": { + "example": "pa_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + } } ], "responses": { "200": { - "description": "Get webhook endpoints", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/WebhookEndpoint" - } + "$ref": "#/components/schemas/PayoutOut" } } - } + }, + "description": "List payouts" }, "400": { - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, - "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", + "404": { "content": { "application/json": { + "examples": { + "PAYOUTS_NOT_FOUND": { + "summary": "PAYOUTS_NOT_FOUND", + "value": { + "code": "PAYOUTS_NOT_FOUND", + "description": "The requested payout was not found.", + "errors": [], + "message": "payout_not_found", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } + }, "schema": { "$ref": "#/components/schemas/Error" - }, + } + } + }, + "description": "Possible error codes: `PAYOUTS_NOT_FOUND`. See the Error responses section for retry semantics." + }, + "429": { + "content": { + "application/json": { "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } - } - }, - "/v1/instances/{instance_id}/webhook-endpoints/{id}": { - "delete": { - "x-sdk": true, + }, + "summary": "Retrieve Payout", "tags": [ - "Webhook Endpoints" + "Payouts" ], - "summary": "Remove Webhook", + "x-sdk": true + } + }, + "/v1/instances/{instance_id}/payouts/{id}/documents": { + "post": { + "description": "Submit compliance documents for SWIFT payouts requiring review. Includes optional payment description.", "parameters": [ { + "in": "path", + "name": "instance_id", + "required": true, "schema": { - "type": "string", - "minLength": 15, + "example": "in_000000000000", "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, - "name": "instance_id", - "in": "path" + "minLength": 15, + "type": "string" + } }, { + "in": "path", + "name": "id", + "required": true, "schema": { - "type": "string", - "minLength": 15, + "example": "pa_000000000000", "maxLength": 15, - "example": "we_000000000000" - }, - "required": true, - "name": "id", - "in": "path" + "minLength": 15, + "type": "string" + } }, { + "in": "header", + "name": "Idempotency-Key", + "required": false, "schema": { - "type": "string", - "maxLength": 255, "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" - }, - "required": false, - "name": "Idempotency-Key", - "in": "header" + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "maxLength": 255, + "type": "string" + } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SubmitPayoutDocumentsIn" + } + } + }, + "description": "Document details and optional payment description" + }, "responses": { "200": { - "description": "Delete webhook endpoint", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Success" } } - } + }, + "description": "Documents submitted successfully" }, "400": { - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { + "FILES_UNREADABLE": { + "summary": "FILES_UNREADABLE", + "value": { + "code": "FILES_UNREADABLE", + "description": "We could not read the uploaded file. Check the file and try again.", + "errors": [], + "message": "file_download_failed", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "PAYOUTS_DOCUMENTS_NOT_ACCEPTED": { + "summary": "PAYOUTS_DOCUMENTS_NOT_ACCEPTED", + "value": { + "code": "PAYOUTS_DOCUMENTS_NOT_ACCEPTED", + "description": "Document upload is only available for international wire payouts.", + "errors": [], + "message": "document_upload_only_for_swift_payouts", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `FILES_UNREADABLE`, `PAYOUTS_DOCUMENTS_NOT_ACCEPTED`, `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, - "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", + "404": { "content": { "application/json": { + "examples": { + "PAYOUTS_NOT_FOUND": { + "summary": "PAYOUTS_NOT_FOUND", + "value": { + "code": "PAYOUTS_NOT_FOUND", + "description": "The requested payout was not found.", + "errors": [], + "message": "payout_not_found", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } + }, "schema": { "$ref": "#/components/schemas/Error" - }, + } + } + }, + "description": "Possible error codes: `PAYOUTS_NOT_FOUND`. See the Error responses section for retry semantics." + }, + "429": { + "content": { + "application/json": { "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { + "FILES_UNREADABLE": { + "summary": "FILES_UNREADABLE", + "value": { + "code": "FILES_UNREADABLE", + "description": "We could not read the uploaded file. Check the file and try again.", + "errors": [], + "message": "file_download_failed", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `FILES_UNREADABLE`, `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } - } - }, - "/v1/instances/{instance_id}/webhook-endpoints/{id}/secret": { - "get": { - "x-sdk": true, + }, + "summary": "Submit Payout Documents", "tags": [ - "Webhook Endpoints" + "Payouts" ], - "summary": "Retrieve Webhook Secret", + "x-sdk": true + } + }, + "/v1/instances/{instance_id}/prepare-delegate-solana": { + "post": { + "description": "Prepares a delegation transaction for Solana token transfers. You can either provide a `quote_id` (recommended) to automatically use the correct token amount and address from the quote, or manually provide `owner_address`, `token_address`, and `amount`.", "parameters": [ { + "in": "path", + "name": "instance_id", + "required": true, "schema": { - "type": "string", - "minLength": 15, + "example": "in_000000000000", "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, - "name": "instance_id", - "in": "path" + "minLength": 15, + "type": "string" + } }, { + "in": "header", + "name": "Idempotency-Key", + "required": false, "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "we_000000000000" - }, - "required": true, - "name": "id", - "in": "path" + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "maxLength": 255, + "type": "string" + } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "properties": { + "amount": { + "description": "The token amount to delegate in USDC/USDT units (e.g., \"10.5\" for 10.5 USDC). Required if quote_id is not provided. Note: This should be the TOKEN amount, not the local currency amount.", + "example": "10.5", + "type": "string" + }, + "owner_address": { + "description": "The Solana wallet address that owns the tokens", + "example": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", + "type": "string" + }, + "quote_id": { + "description": "The quote ID. When provided, the API will automatically use the sender_amount and token_address from the quote. This is the recommended approach.", + "example": "qu_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + }, + "token_address": { + "description": "The SPL token mint address. Required if quote_id is not provided.", + "example": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", + "type": "string" + } + }, + "required": [ + "owner_address" + ], + "type": "object" + } + } + } + }, "responses": { "200": { - "description": "Get webhook endpoint secret", "content": { "application/json": { "schema": { - "type": "object", "properties": { - "key": { - "type": "string", - "example": "whsec_000000000000" + "debug": {}, + "success": { + "type": "boolean" + }, + "transaction": { + "type": "string" } }, "required": [ - "key" - ] + "success" + ], + "type": "object" } } - } + }, + "description": "Prepare delegation transaction" }, "400": { - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { + "BLOCKCHAIN_NETWORK_NOT_SUPPORTED": { + "summary": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", + "value": { + "code": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", + "description": "This network or token combination is not supported for this operation.", + "errors": [], + "message": "network_not_supported_on_dev_instance", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "QUOTES_EXPIRED": { + "summary": "QUOTES_EXPIRED", + "value": { + "code": "QUOTES_EXPIRED", + "description": "This quote has expired. Request a new quote and try again.", + "errors": [], + "message": "quote_expired", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VALIDATION_MISSING_REQUIRED_FIELDS": { + "summary": "VALIDATION_MISSING_REQUIRED_FIELDS", + "value": { + "code": "VALIDATION_MISSING_REQUIRED_FIELDS", + "description": "Required fields are missing. Provide the missing fields and try again.", + "errors": [], + "message": "missing_required_fields", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `BLOCKCHAIN_NETWORK_NOT_SUPPORTED`, `QUOTES_EXPIRED`, `VALIDATION_FAILED`, `VALIDATION_MISSING_REQUIRED_FIELDS`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, - "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", + "404": { "content": { "application/json": { + "examples": { + "QUOTES_NOT_FOUND": { + "summary": "QUOTES_NOT_FOUND", + "value": { + "code": "QUOTES_NOT_FOUND", + "description": "The requested quote was not found.", + "errors": [], + "message": "quote_not_found", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } + }, "schema": { "$ref": "#/components/schemas/Error" - }, + } + } + }, + "description": "Possible error codes: `QUOTES_NOT_FOUND`. See the Error responses section for retry semantics." + }, + "429": { + "content": { + "application/json": { "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } - } - }, - "/v1/instances/{instance_id}/webhook-endpoints/portal-access": { - "get": { - "x-sdk": true, + }, + "summary": "Prepare Solana Delegate", "tags": [ - "Webhook Endpoints" + "Solana" ], - "summary": "Retrieve Webhook Portal Access", + "x-sdk": true + } + }, + "/v1/instances/{instance_id}/quotes": { + "post": { "parameters": [ { + "in": "path", + "name": "instance_id", + "required": true, "schema": { - "type": "string", - "minLength": 15, + "example": "in_000000000000", "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, - "name": "instance_id", - "in": "path" + "minLength": 15, + "type": "string" + } + }, + { + "in": "header", + "name": "Idempotency-Key", + "required": false, + "schema": { + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "maxLength": 255, + "type": "string" + } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/QuoteIn" + } + } + }, + "description": "Create a new quote" + }, "responses": { "200": { - "description": "Get webhook portal access url", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PortalAccessOut" + "$ref": "#/components/schemas/QuoteOut" } } - } + }, + "description": "Quote creation details" }, "400": { - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { + "BANK_ACCOUNTS_INCOMPLETE": { + "summary": "BANK_ACCOUNTS_INCOMPLETE", + "value": { + "code": "BANK_ACCOUNTS_INCOMPLETE", + "description": "The bank account details are incomplete for this payment method. Provide the missing fields.", + "errors": [], + "message": "sepa_bank_account_incomplete", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "BANK_ACCOUNTS_NOT_APPROVED": { + "summary": "BANK_ACCOUNTS_NOT_APPROVED", + "value": { + "code": "BANK_ACCOUNTS_NOT_APPROVED", + "description": "This bank account is not approved yet.", + "errors": [], + "message": "bank_account_not_approved", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "BLOCKCHAIN_NETWORK_NOT_SUPPORTED": { + "summary": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", + "value": { + "code": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", + "description": "This network or token combination is not supported for this operation.", + "errors": [], + "message": "network_not_supported_on_dev_instance", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "CUSTOMERS_COUNTRY_NOT_SUPPORTED": { + "summary": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", + "value": { + "code": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", + "description": "This country is not supported for this operation.", + "errors": [], + "message": "country_not_supported", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "CUSTOMERS_KYC_NOT_APPROVED": { + "summary": "CUSTOMERS_KYC_NOT_APPROVED", + "value": { + "code": "CUSTOMERS_KYC_NOT_APPROVED", + "description": "This customer has not completed verification yet. Complete the verification before continuing.", + "errors": [], + "message": "kyc_not_approved", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "FEES_PARTNER_FEE_EXCEEDED": { + "summary": "FEES_PARTNER_FEE_EXCEEDED", + "value": { + "code": "FEES_PARTNER_FEE_EXCEEDED", + "description": "The partner fee exceeds the allowed maximum for this transaction.", + "errors": [], + "message": "partner_fee_exceeded", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "FILES_UNREADABLE": { + "summary": "FILES_UNREADABLE", + "value": { + "code": "FILES_UNREADABLE", + "description": "We could not read the uploaded file. Check the file and try again.", + "errors": [], + "message": "file_download_failed", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "LIMITS_AMOUNT_OUT_OF_RANGE": { + "summary": "LIMITS_AMOUNT_OUT_OF_RANGE", + "value": { + "code": "LIMITS_AMOUNT_OUT_OF_RANGE", + "description": "The amount is outside the allowed range. The message includes the allowed range.", + "errors": [], + "message": "limits_amount_out_of_range", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "LIMITS_VOLUME_EXCEEDED": { + "summary": "LIMITS_VOLUME_EXCEEDED", + "value": { + "code": "LIMITS_VOLUME_EXCEEDED", + "description": "You exceeded your transaction volume limit. The message includes the remaining amount available.", + "errors": [], + "message": "limits_volume_exceeded", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "PAYOUTS_AMOUNT_BELOW_MINIMUM": { + "summary": "PAYOUTS_AMOUNT_BELOW_MINIMUM", + "value": { + "code": "PAYOUTS_AMOUNT_BELOW_MINIMUM", + "description": "The amount is below the minimum for this payment rail.", + "errors": [], + "message": "swift_minimum_is_100_usd", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "QUOTES_RATE_UNAVAILABLE": { + "summary": "QUOTES_RATE_UNAVAILABLE", + "value": { + "code": "QUOTES_RATE_UNAVAILABLE", + "description": "An exchange rate is temporarily unavailable. Try again shortly.", + "errors": [], + "message": "fx_rate_unavailable", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "TOS_NOT_ACCEPTED": { + "summary": "TOS_NOT_ACCEPTED", + "value": { + "code": "TOS_NOT_ACCEPTED", + "description": "The terms of service must be accepted before continuing.", + "errors": [], + "message": "please_accept_terms_of_service", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VIRTUAL_ACCOUNTS_NOT_APPROVED": { + "summary": "VIRTUAL_ACCOUNTS_NOT_APPROVED", + "value": { + "code": "VIRTUAL_ACCOUNTS_NOT_APPROVED", + "description": "This virtual account is not approved yet.", + "errors": [], + "message": "virtual_account_not_approved", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VIRTUAL_ACCOUNTS_NOT_FOUND": { + "summary": "VIRTUAL_ACCOUNTS_NOT_FOUND", + "value": { + "code": "VIRTUAL_ACCOUNTS_NOT_FOUND", + "description": "The requested virtual account was not found.", + "errors": [], + "message": "virtual_account_not_found", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `BANK_ACCOUNTS_INCOMPLETE`, `BANK_ACCOUNTS_NOT_APPROVED`, `BLOCKCHAIN_NETWORK_NOT_SUPPORTED`, `CUSTOMERS_COUNTRY_NOT_SUPPORTED`, `CUSTOMERS_KYC_NOT_APPROVED`, `FEES_PARTNER_FEE_EXCEEDED`, `FILES_UNREADABLE`, `LIMITS_AMOUNT_OUT_OF_RANGE`, `LIMITS_VOLUME_EXCEEDED`, `PAYOUTS_AMOUNT_BELOW_MINIMUM`, `QUOTES_RATE_UNAVAILABLE`, `TOS_NOT_ACCEPTED`, `VALIDATION_FAILED`, `VIRTUAL_ACCOUNTS_NOT_APPROVED`, `VIRTUAL_ACCOUNTS_NOT_FOUND`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, - "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", + "404": { "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "AUTH_RATE_LIMITED": { - "summary": "AUTH_RATE_LIMITED", + "BANK_ACCOUNTS_NOT_FOUND": { + "summary": "BANK_ACCOUNTS_NOT_FOUND", "value": { + "code": "BANK_ACCOUNTS_NOT_FOUND", + "description": "The requested bank account was not found.", + "errors": [], + "message": "bank_account_not_found", "success": false, - "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", - "description": "Too many requests. Wait a moment and try again.", + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "CUSTOMERS_NOT_FOUND": { + "summary": "CUSTOMERS_NOT_FOUND", + "value": { + "code": "CUSTOMERS_NOT_FOUND", + "description": "The requested customer was not found.", "errors": [], + "message": "customer_not_found", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } - } - } - } - } - }, - "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, - "examples": { - "INTERNAL_ERROR": { - "summary": "INTERNAL_ERROR", + }, + "FEES_NOT_FOUND": { + "summary": "FEES_NOT_FOUND", "value": { + "code": "FEES_NOT_FOUND", + "description": "The requested fee configuration was not found.", + "errors": [], + "message": "partner_fee_not_found", "success": false, - "code": "INTERNAL_ERROR", - "message": "internal_error", - "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "INSTANCES_NOT_FOUND": { + "summary": "INSTANCES_NOT_FOUND", + "value": { + "code": "INSTANCES_NOT_FOUND", + "description": "The requested instance was not found.", "errors": [], + "message": "instance_not_found", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - } - } - } - } - } - } - }, - "/v1/instances/{instance_id}/billing/fees": { - "get": { - "x-sdk": true, - "tags": [ - "Fees" - ], - "summary": "Get Instance Fees", - "description": "Get all fees for an instance, sorted by payment method (fiat first, then blockchain)", - "parameters": [ - { - "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "description": "Instance id", - "example": "in_000000000000" - }, - "required": true, - "name": "instance_id", - "in": "path" - } - ], - "responses": { - "200": { - "description": "Instance fees retrieved and sorted", - "content": { - "application/json": { + }, "schema": { - "$ref": "#/components/schemas/GetFeesOut" + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `BANK_ACCOUNTS_NOT_FOUND`, `CUSTOMERS_NOT_FOUND`, `FEES_NOT_FOUND`, `INSTANCES_NOT_FOUND`. See the Error responses section for retry semantics." }, - "400": { - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", + "429": { "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "VALIDATION_FAILED": { - "summary": "VALIDATION_FAILED", + "AUTH_RATE_LIMITED": { + "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, - "code": "VALIDATION_FAILED", - "message": "validation_failed", - "description": "The request contains invalid fields. Check the errors list for details.", + "code": "AUTH_RATE_LIMITED", + "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, - "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", + "500": { "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "AUTH_UNAUTHORIZED": { - "summary": "AUTH_UNAUTHORIZED", + "FILES_UNREADABLE": { + "summary": "FILES_UNREADABLE", "value": { - "success": false, - "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", - "description": "Authentication failed. Check your API key or session and try again.", + "code": "FILES_UNREADABLE", + "description": "We could not read the uploaded file. Check the file and try again.", "errors": [], + "message": "file_download_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } - } - } - } - } - }, - "403": { - "description": "User not allowed", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "message": { - "type": "string" - } - }, - "required": [ - "message" - ] - } - } - } - }, - "404": { - "description": "Instance not found", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "message": { - "type": "string" - } }, - "required": [ - "message" - ] - } - } - } - }, - "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, - "examples": { - "AUTH_RATE_LIMITED": { - "summary": "AUTH_RATE_LIMITED", + "INTERNAL_ERROR": { + "summary": "INTERNAL_ERROR", "value": { - "success": false, - "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", - "description": "Too many requests. Wait a moment and try again.", + "code": "INTERNAL_ERROR", + "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `FILES_UNREADABLE`, `INTERNAL_ERROR`. See the Error responses section for retry semantics." }, - "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", + "503": { "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "INTERNAL_ERROR": { - "summary": "INTERNAL_ERROR", + "QUOTES_RATE_UNAVAILABLE": { + "summary": "QUOTES_RATE_UNAVAILABLE", "value": { - "success": false, - "code": "INTERNAL_ERROR", - "message": "internal_error", - "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", + "code": "QUOTES_RATE_UNAVAILABLE", + "description": "An exchange rate is temporarily unavailable. Try again shortly.", "errors": [], + "message": "fx_rate_unavailable", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `QUOTES_RATE_UNAVAILABLE`. See the Error responses section for retry semantics." } - } + }, + "summary": "Create Quote", + "tags": [ + "Payouts Quotes" + ], + "x-sdk": true } }, - "/v1/instances/{instance_id}/partner-fees": { + "/v1/instances/{instance_id}/quotes/fx": { "post": { - "x-sdk": true, - "tags": [ - "Partner Fees" - ], - "summary": "Add Partner Fee", "parameters": [ { + "in": "path", + "name": "instance_id", + "required": true, "schema": { - "type": "string", - "minLength": 15, + "example": "in_000000000000", "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, - "name": "instance_id", - "in": "path" + "minLength": 15, + "type": "string" + } }, { + "in": "header", + "name": "Idempotency-Key", + "required": false, "schema": { - "type": "string", - "maxLength": 255, "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" - }, - "required": false, - "name": "Idempotency-Key", - "in": "header" + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "maxLength": 255, + "type": "string" + } } ], "requestBody": { - "description": "Create a new blockchain wallet", "content": { "application/json": { "schema": { - "type": "object", "properties": { - "name": { - "type": "string", - "example": "Display Name" - }, - "payout_percentage_fee": { - "type": "number", - "minimum": 0, - "maximum": 1000 - }, - "payout_flat_fee": { - "type": "number", - "minimum": 0, - "maximum": 100000 + "currency_type": { + "description": "", + "enum": [ + "sender", + "receiver" + ], + "example": "sender", + "type": "string" }, - "payin_percentage_fee": { - "type": "number", - "minimum": 0, - "maximum": 1000 + "from": { + "enum": [ + "USDC", + "USDT", + "USDB" + ], + "example": "USDC", + "type": "string" }, - "payin_flat_fee": { - "type": "number", - "minimum": 0, - "maximum": 100000 + "request_amount": { + "description": "1000 represents 10.00, 2050 represents 20.50", + "example": 1000, + "minimum": 500, + "type": "integer" }, - "virtual_account_set": { - "type": [ - "boolean", - "null" + "to": { + "enum": [ + "BRL", + "USD", + "MXN", + "COP", + "ARS", + "EUR" ], - "default": false, - "example": false + "example": "BRL", + "type": "string" } }, "required": [ - "name", - "payout_percentage_fee", - "payout_flat_fee", - "payin_percentage_fee", - "payin_flat_fee" - ] + "from", + "to", + "request_amount", + "currency_type" + ], + "type": "object" } } - } + }, + "description": "Check FX rate" }, "responses": { "200": { - "description": "Add blockchain wallet", "content": { "application/json": { "schema": { - "type": "object", "properties": { - "id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "fe_000000000000" - }, - "instance_id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "in_000000000000" - }, - "name": { - "type": "string", - "example": "Display Name" + "blindpay_quotation": { + "description": "1 USD = 4.85 BRL (commercial quotation - (blindpay taxes))", + "example": 485, + "type": [ + "number", + "null" + ] }, - "payout_percentage_fee": { - "type": "number", - "minimum": 0, - "maximum": 1000 + "commercial_quotation": { + "description": "1 USD = 4.95 BRL", + "example": 495, + "type": [ + "number", + "null" + ] }, - "payout_flat_fee": { - "type": "number", - "minimum": 0, - "maximum": 100000 + "instance_flat_fee": { + "description": "0.5 USDC", + "example": 50, + "type": [ + "number", + "null" + ] }, - "payin_percentage_fee": { - "type": "number", + "instance_percentage_fee": { + "maximum": 10000, "minimum": 0, - "maximum": 1000 + "type": "number" }, - "payin_flat_fee": { - "type": "number", - "minimum": 0, - "maximum": 100000 + "result_amount": { + "minimum": 1, + "type": "number" } }, "required": [ - "id", - "instance_id", - "name", - "payout_percentage_fee", - "payout_flat_fee", - "payin_percentage_fee", - "payin_flat_fee" - ] + "commercial_quotation", + "blindpay_quotation", + "result_amount", + "instance_percentage_fee" + ], + "type": "object" } } - } + }, + "description": "Check FX rate response" }, "400": { - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { + "BANK_ACCOUNTS_INCOMPLETE": { + "summary": "BANK_ACCOUNTS_INCOMPLETE", + "value": { + "code": "BANK_ACCOUNTS_INCOMPLETE", + "description": "The bank account details are incomplete for this payment method. Provide the missing fields.", + "errors": [], + "message": "sepa_bank_account_incomplete", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "QUOTES_RATE_UNAVAILABLE": { + "summary": "QUOTES_RATE_UNAVAILABLE", + "value": { + "code": "QUOTES_RATE_UNAVAILABLE", + "description": "An exchange rate is temporarily unavailable. Try again shortly.", + "errors": [], + "message": "fx_rate_unavailable", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `BANK_ACCOUNTS_INCOMPLETE`, `QUOTES_RATE_UNAVAILABLE`, `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + }, + "503": { + "content": { + "application/json": { + "examples": { + "QUOTES_RATE_UNAVAILABLE": { + "summary": "QUOTES_RATE_UNAVAILABLE", + "value": { + "code": "QUOTES_RATE_UNAVAILABLE", + "description": "An exchange rate is temporarily unavailable. Try again shortly.", + "errors": [], + "message": "fx_rate_unavailable", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } + }, + "schema": { + "$ref": "#/components/schemas/Error" + } + } + }, + "description": "Possible error codes: `QUOTES_RATE_UNAVAILABLE`. See the Error responses section for retry semantics." } - } - }, - "get": { - "x-sdk": true, + }, + "summary": "Get FX Rate", "tags": [ - "Partner Fees" + "Payouts Quotes" ], - "summary": "Retrieve Partner Fees", + "x-sdk": true + } + }, + "/v1/instances/{instance_id}/rfi": { + "get": { + "description": "Returns the open (pending) RFI for this instance, or null if the instance has no pending RFI.", "parameters": [ { + "in": "path", + "name": "instance_id", + "required": true, "schema": { - "type": "string", - "minLength": 15, + "example": "in_000000000000", "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, - "name": "instance_id", - "in": "path" + "minLength": 15, + "type": "string" + } } ], "responses": { "200": { - "description": "Get blockchain wallets", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "fe_000000000000" - }, - "instance_id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "in_000000000000" - }, - "name": { - "type": "string", - "example": "Display Name" - }, - "payout_percentage_fee": { - "type": "number", - "minimum": 0, - "maximum": 1000 - }, - "payout_flat_fee": { - "type": "number", - "minimum": 0, - "maximum": 100000 - }, - "payin_percentage_fee": { - "type": "number", - "minimum": 0, - "maximum": 1000 - }, - "payin_flat_fee": { - "type": "number", - "minimum": 0, - "maximum": 100000 - } - }, - "required": [ - "id", - "instance_id", - "name", - "payout_percentage_fee", - "payout_flat_fee", - "payin_percentage_fee", - "payin_flat_fee" - ] - } + "$ref": "#/components/schemas/InstanceRfi" } } - } + }, + "description": "Open instance RFI, or null if none" }, "400": { - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { + "COMPLIANCE_RFI_INVALID": { + "summary": "COMPLIANCE_RFI_INVALID", + "value": { + "code": "COMPLIANCE_RFI_INVALID", + "description": "The information request could not be processed. Check the submitted fields.", + "errors": [], + "message": "rfi_request_corrupt", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `COMPLIANCE_RFI_INVALID`, `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } - } - }, - "/v1/instances/{instance_id}/partner-fees/{id}": { - "get": { - "x-sdk": true, + }, + "summary": "Get Open RFI for Instance", "tags": [ - "Partner Fees" + "Instances" ], - "summary": "Retrieve Partner Fee", + "x-sdk": true + }, + "post": { + "description": "Submit a flat response object for the open instance RFI. Standalone: submitting does not change any instance or onboarding status. Returns `{ success: false, reason }` when no pending RFI exists, callers should refetch the RFI state instead of retrying.", "parameters": [ { - "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, + "in": "path", "name": "instance_id", - "in": "path" - }, - { + "required": true, "schema": { - "type": "string", - "minLength": 15, + "example": "in_000000000000", "maxLength": 15, - "example": "fe_000000000000" - }, - "required": true, - "name": "id", - "in": "path" + "minLength": 15, + "type": "string" + } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "additionalProperties": {}, + "type": "object" + } + } + } + }, "responses": { "200": { - "description": "Get blockchain wallets", "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "fe_000000000000" - }, - "instance_id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "in_000000000000" - }, - "name": { - "type": "string", - "example": "Display Name" - }, - "payout_percentage_fee": { - "type": "number", - "minimum": 0, - "maximum": 1000 - }, - "payout_flat_fee": { - "type": "number", - "minimum": 0, - "maximum": 100000 - }, - "payin_percentage_fee": { - "type": "number", - "minimum": 0, - "maximum": 1000 + "anyOf": [ + { + "properties": { + "success": { + "enum": [ + true + ], + "type": "boolean" + } + }, + "required": [ + "success" + ], + "type": "object" }, - "payin_flat_fee": { - "type": "number", - "minimum": 0, - "maximum": 100000 + { + "properties": { + "reason": { + "enum": [ + "no_pending_rfi", + "already_resolved" + ], + "type": "string" + }, + "success": { + "enum": [ + false + ], + "type": "boolean" + } + }, + "required": [ + "success", + "reason" + ], + "type": "object" } - }, - "required": [ - "id", - "instance_id", - "name", - "payout_percentage_fee", - "payout_flat_fee", - "payin_percentage_fee", - "payin_flat_fee" ] } } - } + }, + "description": "RFI submitted (success: true) or rejected because no pending RFI exists (success: false)" }, "400": { - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { + "COMPLIANCE_RFI_INVALID": { + "summary": "COMPLIANCE_RFI_INVALID", + "value": { + "code": "COMPLIANCE_RFI_INVALID", + "description": "The information request could not be processed. Check the submitted fields.", + "errors": [], + "message": "rfi_request_corrupt", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `COMPLIANCE_RFI_INVALID`, `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } - }, - "delete": { - "x-sdk": true, + }, + "summary": "Submit Instance RFI Response", "tags": [ - "Partner Fees" + "Instances" ], - "summary": "Remove Partner Fee", + "x-sdk": true + } + }, + "/v1/instances/{instance_id}/transfer-quotes": { + "post": { "parameters": [ { - "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, + "in": "path", "name": "instance_id", - "in": "path" - }, - { + "required": true, "schema": { - "type": "string", - "minLength": 15, + "example": "in_000000000000", "maxLength": 15, - "example": "fe_000000000000" - }, - "required": true, - "name": "id", - "in": "path" + "minLength": 15, + "type": "string" + } }, { + "in": "header", + "name": "Idempotency-Key", + "required": false, "schema": { - "type": "string", - "maxLength": 255, "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" - }, - "required": false, - "name": "Idempotency-Key", - "in": "header" + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "maxLength": 255, + "type": "string" + } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateTransferQuoteIn" + } + } + }, + "description": "Create a new quote" + }, "responses": { "200": { - "description": "Delete blockchain wallet", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Success" + "$ref": "#/components/schemas/CreateTransferQuoteOut" } } - } + }, + "description": "Transfer Quote creation details" }, "400": { - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { + "BLOCKCHAIN_NETWORK_NOT_SUPPORTED": { + "summary": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", + "value": { + "code": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", + "description": "This network or token combination is not supported for this operation.", + "errors": [], + "message": "network_not_supported_on_dev_instance", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "CUSTOMERS_KYC_NOT_APPROVED": { + "summary": "CUSTOMERS_KYC_NOT_APPROVED", + "value": { + "code": "CUSTOMERS_KYC_NOT_APPROVED", + "description": "This customer has not completed verification yet. Complete the verification before continuing.", + "errors": [], + "message": "kyc_not_approved", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `BLOCKCHAIN_NETWORK_NOT_SUPPORTED`, `CUSTOMERS_KYC_NOT_APPROVED`, `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } - } - }, - "/v1/upload": { - "post": { - "x-sdk": true, + }, + "summary": "Create Transfer Quote", "tags": [ - "Upload" + "Transfer Quotes" ], - "summary": "Upload File", + "x-sdk": true + } + }, + "/v1/instances/{instance_id}/transfers": { + "get": { "parameters": [ { + "in": "path", + "name": "instance_id", + "required": true, "schema": { + "example": "in_000000000000", + "maxLength": 15, + "minLength": 15, "type": "string" - }, + } + }, + { + "in": "query", + "name": "limit", "required": false, - "name": "instance_id", - "in": "query" - } - ], - "requestBody": { - "description": "Upload file to instance", - "content": { - "multipart/form-data": { - "schema": { - "$ref": "#/components/schemas/UploadIn" - } + "schema": { + "description": "Number of items to return", + "enum": [ + "10", + "50", + "100", + "200", + "500", + "1000" + ], + "example": "50", + "type": "string" + } + }, + { + "in": "query", + "name": "offset", + "required": false, + "schema": { + "description": "Number of items to skip", + "enum": [ + "0", + "10", + "50", + "100", + "200", + "500", + "1000" + ], + "example": "0", + "type": "string" + } + }, + { + "in": "query", + "name": "starting_after", + "required": false, + "schema": { + "description": "A cursor for use in pagination. starting_after is an object ID that defines your place in the list.", + "example": "pi_123", + "type": "string" + } + }, + { + "in": "query", + "name": "ending_before", + "required": false, + "schema": { + "description": "A cursor for use in pagination. ending_before is an object ID that defines your place in the list.", + "example": "pi_123", + "type": "string" } } - }, + ], "responses": { "200": { - "description": "File uploaded successfully", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UploadOut" + "properties": { + "data": { + "items": { + "$ref": "#/components/schemas/TransferOut" + }, + "type": "array" + }, + "pagination": { + "$ref": "#/components/schemas/PaginationMetadata" + } + }, + "required": [ + "data", + "pagination" + ], + "type": "object" } } - } + }, + "description": "List transfers" }, "400": { - "description": "Possible error codes: `FILES_TOO_LARGE`, `FILES_TYPE_NOT_ALLOWED`, `FILES_UNREADABLE`, `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "FILES_TOO_LARGE": { - "summary": "FILES_TOO_LARGE", - "value": { - "success": false, - "code": "FILES_TOO_LARGE", - "message": "file_size_exceeded", - "description": "The file is too large. Upload a smaller file.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "FILES_TYPE_NOT_ALLOWED": { - "summary": "FILES_TYPE_NOT_ALLOWED", + "TRANSFERS_NOT_ENABLED": { + "summary": "TRANSFERS_NOT_ENABLED", "value": { - "success": false, - "code": "FILES_TYPE_NOT_ALLOWED", - "message": "file_type_not_allowed", - "description": "This file type is not allowed. Upload a supported file type.", + "code": "TRANSFERS_NOT_ENABLED", + "description": "Wallets and transfers are not enabled for this account. Contact support to enable them.", "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "FILES_UNREADABLE": { - "summary": "FILES_UNREADABLE", - "value": { + "message": "wallets_and_transfers_not_enabled", "success": false, - "code": "FILES_UNREADABLE", - "message": "file_download_failed", - "description": "We could not read the uploaded file. Check the file and try again.", - "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `TRANSFERS_NOT_ENABLED`, `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `FILES_UNREADABLE`, `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "FILES_UNREADABLE": { - "summary": "FILES_UNREADABLE", - "value": { - "success": false, - "code": "FILES_UNREADABLE", - "message": "file_download_failed", - "description": "We could not read the uploaded file. Check the file and try again.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } - } - }, - "/v1/upload/analyze": { - "post": { - "x-sdk": true, + }, + "summary": "Retrieve Transfers", "tags": [ - "Upload" + "Transfers" ], - "summary": "Analyze Document", + "x-sdk": true + }, + "post": { "parameters": [ { + "in": "path", + "name": "instance_id", + "required": true, "schema": { - "type": "string", - "description": "Instance ID. When provided, the request must be authenticated with an API key scoped to this instance. When omitted, a dashboard (Clerk) session is required." - }, + "example": "in_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + } + }, + { + "in": "header", + "name": "Idempotency-Key", "required": false, - "name": "instance_id", - "in": "query" + "schema": { + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "maxLength": 255, + "type": "string" + } } ], "requestBody": { - "description": "Document to read and analyze with AI", "content": { - "multipart/form-data": { + "application/json": { "schema": { - "$ref": "#/components/schemas/UploadAnalyzeIn" + "$ref": "#/components/schemas/CreateTransferIn" } } - } + }, + "description": "Start transfer" }, "responses": { "200": { - "description": "Document analyzed successfully", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UploadAnalyzeOut" + "$ref": "#/components/schemas/CreateTransferOut" } } - } + }, + "description": "Transfer started with success" }, "400": { - "description": "Possible error codes: `FILES_EMPTY`, `FILES_TOO_LARGE`, `FILES_TYPE_NOT_ALLOWED`, `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "FILES_EMPTY": { - "summary": "FILES_EMPTY", + "BANK_ACCOUNTS_INCOMPLETE": { + "summary": "BANK_ACCOUNTS_INCOMPLETE", "value": { + "code": "BANK_ACCOUNTS_INCOMPLETE", + "description": "The bank account details are incomplete for this payment method. Provide the missing fields.", + "errors": [], + "message": "sepa_bank_account_incomplete", "success": false, - "code": "FILES_EMPTY", - "message": "file_empty", - "description": "The uploaded file is empty. Upload a valid file.", + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED": { + "summary": "BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED", + "value": { + "code": "BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED", + "description": "This banking option is not supported for this operation.", + "errors": [], + "message": "unsupported_banking_partner", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "BLOCKCHAIN_NETWORK_NOT_SUPPORTED": { + "summary": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", + "value": { + "code": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", + "description": "This network or token combination is not supported for this operation.", + "errors": [], + "message": "network_not_supported_on_dev_instance", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "CUSTOMERS_COUNTRY_NOT_SUPPORTED": { + "summary": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", + "value": { + "code": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", + "description": "This country is not supported for this operation.", + "errors": [], + "message": "country_not_supported", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "CUSTOMERS_INVALID_PHONE": { + "summary": "CUSTOMERS_INVALID_PHONE", + "value": { + "code": "CUSTOMERS_INVALID_PHONE", + "description": "The phone number provided is not valid. Check the number and try again.", + "errors": [], + "message": "invalid_phone_number", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "CUSTOMERS_INVALID_TAX_ID": { + "summary": "CUSTOMERS_INVALID_TAX_ID", + "value": { + "code": "CUSTOMERS_INVALID_TAX_ID", + "description": "The tax ID provided is not valid. Check the value and try again.", + "errors": [], + "message": "invalid_cpf_or_rg_tax_id", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "FILES_UNREADABLE": { + "summary": "FILES_UNREADABLE", + "value": { + "code": "FILES_UNREADABLE", + "description": "We could not read the uploaded file. Check the file and try again.", + "errors": [], + "message": "file_download_failed", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "PAYOUTS_AMOUNT_BELOW_MINIMUM": { + "summary": "PAYOUTS_AMOUNT_BELOW_MINIMUM", + "value": { + "code": "PAYOUTS_AMOUNT_BELOW_MINIMUM", + "description": "The amount is below the minimum for this payment rail.", + "errors": [], + "message": "swift_minimum_is_100_usd", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "PAYOUTS_INSUFFICIENT_BALANCE": { + "summary": "PAYOUTS_INSUFFICIENT_BALANCE", + "value": { + "code": "PAYOUTS_INSUFFICIENT_BALANCE", + "description": "There is not enough balance to complete this payout. Fund your balance and try again.", "errors": [], + "message": "not_enough_balance", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "FILES_TOO_LARGE": { - "summary": "FILES_TOO_LARGE", + "QUOTES_EXPIRED": { + "summary": "QUOTES_EXPIRED", "value": { - "success": false, - "code": "FILES_TOO_LARGE", - "message": "file_size_exceeded", - "description": "The file is too large. Upload a smaller file.", + "code": "QUOTES_EXPIRED", + "description": "This quote has expired. Request a new quote and try again.", "errors": [], + "message": "quote_expired", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "FILES_TYPE_NOT_ALLOWED": { - "summary": "FILES_TYPE_NOT_ALLOWED", + "QUOTES_RATE_UNAVAILABLE": { + "summary": "QUOTES_RATE_UNAVAILABLE", "value": { + "code": "QUOTES_RATE_UNAVAILABLE", + "description": "An exchange rate is temporarily unavailable. Try again shortly.", + "errors": [], + "message": "fx_rate_unavailable", "success": false, - "code": "FILES_TYPE_NOT_ALLOWED", - "message": "file_type_not_allowed", - "description": "This file type is not allowed. Upload a supported file type.", + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "TRANSFERS_NOT_ENABLED": { + "summary": "TRANSFERS_NOT_ENABLED", + "value": { + "code": "TRANSFERS_NOT_ENABLED", + "description": "Wallets and transfers are not enabled for this account. Contact support to enable them.", "errors": [], + "message": "wallets_and_transfers_not_enabled", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VALIDATION_MISSING_REQUIRED_FIELDS": { + "summary": "VALIDATION_MISSING_REQUIRED_FIELDS", + "value": { + "code": "VALIDATION_MISSING_REQUIRED_FIELDS", + "description": "Required fields are missing. Provide the missing fields and try again.", + "errors": [], + "message": "missing_required_fields", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED": { + "summary": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", + "value": { + "code": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", + "description": "Additional documents are required to create this virtual account. Upload the requested documents.", + "errors": [], + "message": "id_doc_front_file_required", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VIRTUAL_ACCOUNTS_NOT_FOUND": { + "summary": "VIRTUAL_ACCOUNTS_NOT_FOUND", + "value": { + "code": "VIRTUAL_ACCOUNTS_NOT_FOUND", + "description": "The requested virtual account was not found.", + "errors": [], + "message": "virtual_account_not_found", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { + "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "value": { + "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", + "errors": [], + "message": "virtual_account_provision_failed", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED": { + "summary": "VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED", + "value": { + "code": "VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED", + "description": "Virtual accounts are not available for this country or region.", + "errors": [], + "message": "us_state_not_supported", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `BANK_ACCOUNTS_INCOMPLETE`, `BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED`, `BLOCKCHAIN_NETWORK_NOT_SUPPORTED`, `CUSTOMERS_COUNTRY_NOT_SUPPORTED`, `CUSTOMERS_INVALID_PHONE`, `CUSTOMERS_INVALID_TAX_ID`, `FILES_UNREADABLE`, `PAYOUTS_AMOUNT_BELOW_MINIMUM`, `PAYOUTS_INSUFFICIENT_BALANCE`, `QUOTES_EXPIRED`, `QUOTES_RATE_UNAVAILABLE`, `TRANSFERS_NOT_ENABLED`, `VALIDATION_FAILED`, `VALIDATION_MISSING_REQUIRED_FIELDS`, `VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED`, `VIRTUAL_ACCOUNTS_NOT_FOUND`, `VIRTUAL_ACCOUNTS_PROVISION_FAILED`, `VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, - "422": { - "description": "Possible error codes: `FILES_ANALYSIS_FAILED`. See the Error responses section for retry semantics.", + "404": { "content": { "application/json": { + "examples": { + "WALLETS_NOT_FOUND": { + "summary": "WALLETS_NOT_FOUND", + "value": { + "code": "WALLETS_NOT_FOUND", + "description": "The requested wallet was not found.", + "errors": [], + "message": "wallet_not_found", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } + }, "schema": { "$ref": "#/components/schemas/Error" - }, + } + } + }, + "description": "Possible error codes: `WALLETS_NOT_FOUND`. See the Error responses section for retry semantics." + }, + "422": { + "content": { + "application/json": { "examples": { - "FILES_ANALYSIS_FAILED": { - "summary": "FILES_ANALYSIS_FAILED", + "CUSTOMERS_INVALID_DATA": { + "summary": "CUSTOMERS_INVALID_DATA", "value": { - "success": false, - "code": "FILES_ANALYSIS_FAILED", - "message": "analysis_failed", - "description": "The document could not be analyzed. Try again, and contact support if the problem persists.", + "code": "CUSTOMERS_INVALID_DATA", + "description": "The customer data was rejected by the banking provider. Check the highlighted fields and try again.", "errors": [], + "message": "invalid_customer_data", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `CUSTOMERS_INVALID_DATA`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { + "FILES_UNREADABLE": { + "summary": "FILES_UNREADABLE", + "value": { + "code": "FILES_UNREADABLE", + "description": "We could not read the uploaded file. Check the file and try again.", + "errors": [], + "message": "file_download_failed", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "QUOTES_RATE_UNAVAILABLE": { + "summary": "QUOTES_RATE_UNAVAILABLE", + "value": { + "code": "QUOTES_RATE_UNAVAILABLE", + "description": "An exchange rate is temporarily unavailable. Try again shortly.", + "errors": [], + "message": "fx_rate_unavailable", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { + "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "value": { + "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", + "errors": [], + "message": "virtual_account_provision_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `FILES_UNREADABLE`, `INTERNAL_ERROR`, `QUOTES_RATE_UNAVAILABLE`, `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics." }, - "503": { - "description": "Possible error codes: `FILES_ANALYSIS_FAILED`. See the Error responses section for retry semantics.", + "502": { "content": { "application/json": { + "examples": { + "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { + "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "value": { + "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", + "errors": [], + "message": "virtual_account_provision_failed", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } + }, "schema": { "$ref": "#/components/schemas/Error" - }, + } + } + }, + "description": "Possible error codes: `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics." + }, + "503": { + "content": { + "application/json": { "examples": { - "FILES_ANALYSIS_FAILED": { - "summary": "FILES_ANALYSIS_FAILED", + "QUOTES_RATE_UNAVAILABLE": { + "summary": "QUOTES_RATE_UNAVAILABLE", "value": { - "success": false, - "code": "FILES_ANALYSIS_FAILED", - "message": "analysis_failed", - "description": "The document could not be analyzed. Try again, and contact support if the problem persists.", + "code": "QUOTES_RATE_UNAVAILABLE", + "description": "An exchange rate is temporarily unavailable. Try again shortly.", "errors": [], + "message": "fx_rate_unavailable", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `QUOTES_RATE_UNAVAILABLE`. See the Error responses section for retry semantics." } - } + }, + "summary": "Create Transfer", + "tags": [ + "Transfers" + ], + "x-sdk": true } }, - "/v1/available/bank-details": { + "/v1/instances/{instance_id}/transfers/{id}": { "get": { - "x-sdk": true, - "tags": [ - "Available" - ], - "summary": "Bank Details", - "security": [], "parameters": [ { + "in": "path", + "name": "instance_id", + "required": true, "schema": { - "type": "string", - "enum": [ - "wire", - "ach", - "pix", - "pix_safe", - "ted", - "spei_bitso", - "transfers_bitso", - "ach_cop_bitso", - "international_swift", - "rtp", - "sepa" - ] - }, + "example": "in_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + } + }, + { + "in": "path", + "name": "id", "required": true, - "name": "rail", - "in": "query" + "schema": { + "example": "pa_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + } } ], "responses": { "200": { - "description": "Retrieve bank details by rail", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AvailableBankDetails" + "$ref": "#/components/schemas/TransferOut" } } - } + }, + "description": "List transfers" }, "400": { - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { + "TRANSFERS_NOT_ENABLED": { + "summary": "TRANSFERS_NOT_ENABLED", + "value": { + "code": "TRANSFERS_NOT_ENABLED", + "description": "Wallets and transfers are not enabled for this account. Contact support to enable them.", + "errors": [], + "message": "wallets_and_transfers_not_enabled", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `TRANSFERS_NOT_ENABLED`, `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } + }, + "summary": "Retrieve Transfer", + "tags": [ + "Transfers" + ], + "x-sdk": true } }, - "/v1/available/rails": { + "/v1/instances/{instance_id}/webhook-endpoints": { "get": { - "x-sdk": true, - "tags": [ - "Available" + "parameters": [ + { + "in": "path", + "name": "instance_id", + "required": true, + "schema": { + "example": "in_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + } + } ], - "summary": "Rails", - "security": [], "responses": { "200": { - "description": "Retrieve available rails", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AvailableRails" + "items": { + "$ref": "#/components/schemas/WebhookEndpoint" + }, + "type": "array" } } - } + }, + "description": "Get webhook endpoints" }, "400": { - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } - } - }, - "/v1/available/naics": { - "get": { - "x-sdk": true, + }, + "summary": "Retrieve Webhooks", "tags": [ - "Available" + "Webhook Endpoints" ], - "summary": "NAICS list", - "security": [], + "x-sdk": true + }, + "post": { + "parameters": [ + { + "in": "path", + "name": "instance_id", + "required": true, + "schema": { + "example": "in_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + } + }, + { + "in": "header", + "name": "Idempotency-Key", + "required": false, + "schema": { + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "maxLength": 255, + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WebhookEndpointIn" + } + } + }, + "description": "Create a new webhook endpoint" + }, "responses": { "200": { - "description": "Retrieve NAICS (business industry) list", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AvailableNaicsList" + "$ref": "#/components/schemas/WebhookEndpointOut" } } - } + }, + "description": "Create webhook endpoint" }, "400": { - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "WEBHOOKS_LIMIT_REACHED": { + "summary": "WEBHOOKS_LIMIT_REACHED", + "value": { + "code": "WEBHOOKS_LIMIT_REACHED", + "description": "You reached the maximum number of webhook endpoints.", + "errors": [], + "message": "webhook_endpoint_limit_reached", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "WEBHOOKS_URL_INVALID": { + "summary": "WEBHOOKS_URL_INVALID", + "value": { + "code": "WEBHOOKS_URL_INVALID", + "description": "The webhook URL is not valid. Use a reachable HTTPS URL.", + "errors": [], + "message": "webhook_url_invalid", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `VALIDATION_FAILED`, `WEBHOOKS_LIMIT_REACHED`, `WEBHOOKS_URL_INVALID`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } + }, + "summary": "Register Webhook", + "tags": [ + "Webhook Endpoints" + ], + "x-sdk": true } }, - "/v1/available/swift/{swift}": { + "/v1/instances/{instance_id}/webhook-endpoints/portal-access": { "get": { - "x-sdk": true, - "tags": [ - "Available" - ], - "summary": "Swift code bank details", "parameters": [ { - "schema": { - "anyOf": [ - { - "type": "string", - "minLength": 8, - "maxLength": 8, - "pattern": "^[A-Z0-9]+$" - }, - { - "type": "string", - "minLength": 11, - "maxLength": 11, - "pattern": "^[A-Z0-9]+$" - } - ], - "example": "BOFAUS3NLMA" - }, + "in": "path", + "name": "instance_id", "required": true, - "name": "swift", - "in": "path" + "schema": { + "example": "in_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + } } ], "responses": { "200": { - "description": "Swift code bank details", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SwiftCodeResponse" + "$ref": "#/components/schemas/PortalAccessOut" } } - } + }, + "description": "Get webhook portal access url" }, "400": { - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } - } - }, - "/v1/instances/{instance_id}/mint-usdb-solana": { - "post": { - "x-sdk": true, + }, + "summary": "Retrieve Webhook Portal Access", "tags": [ - "Solana" + "Webhook Endpoints" ], - "summary": "Mint USDB on Solana", + "x-sdk": true + } + }, + "/v1/instances/{instance_id}/webhook-endpoints/{id}": { + "delete": { "parameters": [ { + "in": "path", + "name": "instance_id", + "required": true, "schema": { - "type": "string", - "minLength": 15, + "example": "in_000000000000", "maxLength": 15, - "example": "in_000000000000" - }, + "minLength": 15, + "type": "string" + } + }, + { + "in": "path", + "name": "id", "required": true, - "name": "instance_id", - "in": "path" + "schema": { + "example": "we_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" + } }, { + "in": "header", + "name": "Idempotency-Key", + "required": false, "schema": { - "type": "string", - "maxLength": 255, "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" - }, - "required": false, - "name": "Idempotency-Key", - "in": "header" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "address": { - "type": "string" - }, - "amount": { - "type": "string" - } - }, - "required": [ - "address", - "amount" - ] - } + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "maxLength": 255, + "type": "string" } } - }, + ], "responses": { "200": { - "description": "Mint USDB on Solana", "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "success": { - "type": "boolean" - }, - "signature": { - "type": "string" - }, - "error": { - "type": "string" - } - }, - "required": [ - "success" - ] + "$ref": "#/components/schemas/Success" } } - } + }, + "description": "Delete webhook endpoint" }, "400": { - "description": "Possible error codes: `BLOCKCHAIN_TX_FAILED`, `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "BLOCKCHAIN_TX_FAILED": { - "summary": "BLOCKCHAIN_TX_FAILED", - "value": { - "success": false, - "code": "BLOCKCHAIN_TX_FAILED", - "message": "transaction_failed", - "description": "The blockchain transaction failed. Try again, and contact support if the problem persists.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } - } - }, - "/v1/instances/{instance_id}/prepare-delegate-solana": { - "post": { - "x-sdk": true, + }, + "summary": "Remove Webhook", "tags": [ - "Solana" + "Webhook Endpoints" ], - "summary": "Prepare Solana Delegate", - "description": "Prepares a delegation transaction for Solana token transfers. You can either provide a `quote_id` (recommended) to automatically use the correct token amount and address from the quote, or manually provide `owner_address`, `token_address`, and `amount`.", + "x-sdk": true + } + }, + "/v1/instances/{instance_id}/webhook-endpoints/{id}/secret": { + "get": { "parameters": [ { + "in": "path", + "name": "instance_id", + "required": true, "schema": { - "type": "string", - "minLength": 15, + "example": "in_000000000000", "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, - "name": "instance_id", - "in": "path" + "minLength": 15, + "type": "string" + } }, { + "in": "path", + "name": "id", + "required": true, "schema": { - "type": "string", - "maxLength": 255, - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" - }, - "required": false, - "name": "Idempotency-Key", - "in": "header" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "owner_address": { - "type": "string", - "description": "The Solana wallet address that owns the tokens", - "example": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" - }, - "quote_id": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "description": "The quote ID. When provided, the API will automatically use the sender_amount and token_address from the quote. This is the recommended approach.", - "example": "qu_000000000000" - }, - "token_address": { - "type": "string", - "description": "The SPL token mint address. Required if quote_id is not provided.", - "example": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" - }, - "amount": { - "type": "string", - "description": "The token amount to delegate in USDC/USDT units (e.g., \"10.5\" for 10.5 USDC). Required if quote_id is not provided. Note: This should be the TOKEN amount, not the local currency amount.", - "example": "10.5" - } - }, - "required": [ - "owner_address" - ] - } + "example": "we_000000000000", + "maxLength": 15, + "minLength": 15, + "type": "string" } } - }, + ], "responses": { "200": { - "description": "Prepare delegation transaction", "content": { "application/json": { "schema": { - "type": "object", "properties": { - "success": { - "type": "boolean" - }, - "transaction": { + "key": { + "example": "whsec_000000000000", "type": "string" - }, - "debug": {} + } }, "required": [ - "success" - ] + "key" + ], + "type": "object" } } - } + }, + "description": "Get webhook endpoint secret" }, "400": { - "description": "Possible error codes: `BLOCKCHAIN_NETWORK_NOT_SUPPORTED`, `QUOTES_EXPIRED`, `VALIDATION_FAILED`, `VALIDATION_MISSING_REQUIRED_FIELDS`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "BLOCKCHAIN_NETWORK_NOT_SUPPORTED": { - "summary": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", - "value": { - "success": false, - "code": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", - "message": "network_not_supported_on_dev_instance", - "description": "This network or token combination is not supported for this operation.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "QUOTES_EXPIRED": { - "summary": "QUOTES_EXPIRED", - "value": { - "success": false, - "code": "QUOTES_EXPIRED", - "message": "quote_expired", - "description": "This quote has expired. Request a new quote and try again.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VALIDATION_MISSING_REQUIRED_FIELDS": { - "summary": "VALIDATION_MISSING_REQUIRED_FIELDS", - "value": { + "message": "validation_failed", "success": false, - "code": "VALIDATION_MISSING_REQUIRED_FIELDS", - "message": "missing_required_fields", - "description": "Required fields are missing. Provide the missing fields and try again.", - "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - } - } - } - }, - "404": { - "description": "Possible error codes: `QUOTES_NOT_FOUND`. See the Error responses section for retry semantics.", - "content": { - "application/json": { + }, "schema": { "$ref": "#/components/schemas/Error" - }, - "examples": { - "QUOTES_NOT_FOUND": { - "summary": "QUOTES_NOT_FOUND", - "value": { - "success": false, - "code": "QUOTES_NOT_FOUND", - "message": "quote_not_found", - "description": "The requested quote was not found.", - "errors": [], - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } + }, + "summary": "Retrieve Webhook Secret", + "tags": [ + "Webhook Endpoints" + ], + "x-sdk": true } }, - "/v1/instances/{instance_id}/create-asset-trustline": { + "/v1/upload": { "post": { - "x-sdk": true, - "tags": [ - "Stellar" - ], - "summary": "Create Asset Trustline", "parameters": [ { - "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, + "in": "query", "name": "instance_id", - "in": "path" - }, - { - "schema": { - "type": "string", - "maxLength": 255, - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" - }, "required": false, - "name": "Idempotency-Key", - "in": "header" + "schema": { + "type": "string" + } } ], "requestBody": { "content": { - "application/json": { + "multipart/form-data": { "schema": { - "type": "object", - "properties": { - "address": { - "type": "string" - } - }, - "required": [ - "address" - ] + "$ref": "#/components/schemas/UploadIn" } } - } + }, + "description": "Upload file to instance" }, "responses": { "200": { - "description": "Create asset trustline", "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "xdr": { - "type": "string" - } - }, - "required": [ - "xdr" - ] + "$ref": "#/components/schemas/UploadOut" } } - } + }, + "description": "File uploaded successfully" }, "400": { - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { + "FILES_TOO_LARGE": { + "summary": "FILES_TOO_LARGE", + "value": { + "code": "FILES_TOO_LARGE", + "description": "The file is too large. Upload a smaller file.", + "errors": [], + "message": "file_size_exceeded", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "FILES_TYPE_NOT_ALLOWED": { + "summary": "FILES_TYPE_NOT_ALLOWED", + "value": { + "code": "FILES_TYPE_NOT_ALLOWED", + "description": "This file type is not allowed. Upload a supported file type.", + "errors": [], + "message": "file_type_not_allowed", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "FILES_UNREADABLE": { + "summary": "FILES_UNREADABLE", + "value": { + "code": "FILES_UNREADABLE", + "description": "We could not read the uploaded file. Check the file and try again.", + "errors": [], + "message": "file_download_failed", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `FILES_TOO_LARGE`, `FILES_TYPE_NOT_ALLOWED`, `FILES_UNREADABLE`, `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { + "FILES_UNREADABLE": { + "summary": "FILES_UNREADABLE", + "value": { + "code": "FILES_UNREADABLE", + "description": "We could not read the uploaded file. Check the file and try again.", + "errors": [], + "message": "file_download_failed", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `FILES_UNREADABLE`, `INTERNAL_ERROR`. See the Error responses section for retry semantics." } - } + }, + "summary": "Upload File", + "tags": [ + "Upload" + ], + "x-sdk": true } }, - "/v1/instances/{instance_id}/mint-usdb-stellar": { + "/v1/upload/analyze": { "post": { - "x-sdk": true, - "tags": [ - "Stellar" - ], - "summary": "Mint USDB on Stellar", "parameters": [ { - "schema": { - "type": "string", - "minLength": 15, - "maxLength": 15, - "example": "in_000000000000" - }, - "required": true, + "in": "query", "name": "instance_id", - "in": "path" - }, - { - "schema": { - "type": "string", - "maxLength": 255, - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" - }, "required": false, - "name": "Idempotency-Key", - "in": "header" + "schema": { + "description": "Instance ID. When provided, the request must be authenticated with an API key scoped to this instance. When omitted, a dashboard (Clerk) session is required.", + "type": "string" + } } ], "requestBody": { "content": { - "application/json": { + "multipart/form-data": { "schema": { - "type": "object", - "properties": { - "address": { - "type": "string" - }, - "amount": { - "type": "string" - }, - "signedXdr": { - "type": "string" - } - }, - "required": [ - "address", - "amount" - ] + "$ref": "#/components/schemas/UploadAnalyzeIn" } } - } + }, + "description": "Document to read and analyze with AI" }, "responses": { "200": { - "description": "Mint USDB", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Success" + "$ref": "#/components/schemas/UploadAnalyzeOut" } } - } + }, + "description": "Document analyzed successfully" }, "400": { - "description": "Possible error codes: `BLOCKCHAIN_TX_FAILED`, `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { - "BLOCKCHAIN_TX_FAILED": { - "summary": "BLOCKCHAIN_TX_FAILED", + "FILES_EMPTY": { + "summary": "FILES_EMPTY", "value": { + "code": "FILES_EMPTY", + "description": "The uploaded file is empty. Upload a valid file.", + "errors": [], + "message": "file_empty", "success": false, - "code": "BLOCKCHAIN_TX_FAILED", - "message": "transaction_failed", - "description": "The blockchain transaction failed. Try again, and contact support if the problem persists.", + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "FILES_TOO_LARGE": { + "summary": "FILES_TOO_LARGE", + "value": { + "code": "FILES_TOO_LARGE", + "description": "The file is too large. Upload a smaller file.", + "errors": [], + "message": "file_size_exceeded", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "FILES_TYPE_NOT_ALLOWED": { + "summary": "FILES_TYPE_NOT_ALLOWED", + "value": { + "code": "FILES_TYPE_NOT_ALLOWED", + "description": "This file type is not allowed. Upload a supported file type.", "errors": [], + "message": "file_type_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { - "success": false, "code": "VALIDATION_FAILED", - "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], + "message": "validation_failed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `FILES_EMPTY`, `FILES_TOO_LARGE`, `FILES_TYPE_NOT_ALLOWED`, `VALIDATION_FAILED`. See the Error responses section for retry semantics." }, "401": { - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { - "success": false, "code": "AUTH_UNAUTHORIZED", - "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], + "message": "unauthorized", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, "403": { - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { - "success": false, "code": "AUTH_FORBIDDEN", - "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], + "message": "user_not_allowed", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." }, - "429": { - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", + "422": { "content": { "application/json": { + "examples": { + "FILES_ANALYSIS_FAILED": { + "summary": "FILES_ANALYSIS_FAILED", + "value": { + "code": "FILES_ANALYSIS_FAILED", + "description": "The document could not be analyzed. Try again, and contact support if the problem persists.", + "errors": [], + "message": "analysis_failed", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } + }, "schema": { "$ref": "#/components/schemas/Error" - }, + } + } + }, + "description": "Possible error codes: `FILES_ANALYSIS_FAILED`. See the Error responses section for retry semantics." + }, + "429": { + "content": { + "application/json": { "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { - "success": false, "code": "AUTH_RATE_LIMITED", - "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], + "message": "api_key_rate_limit_exceeded", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." }, "500": { - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { - "success": false, "code": "INTERNAL_ERROR", - "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], + "message": "internal_error", + "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + }, + "schema": { + "$ref": "#/components/schemas/Error" } } - } + }, + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + }, + "503": { + "content": { + "application/json": { + "examples": { + "FILES_ANALYSIS_FAILED": { + "summary": "FILES_ANALYSIS_FAILED", + "value": { + "code": "FILES_ANALYSIS_FAILED", + "description": "The document could not be analyzed. Try again, and contact support if the problem persists.", + "errors": [], + "message": "analysis_failed", + "success": false, + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } + }, + "schema": { + "$ref": "#/components/schemas/Error" + } + } + }, + "description": "Possible error codes: `FILES_ANALYSIS_FAILED`. See the Error responses section for retry semantics." } - } + }, + "summary": "Analyze Document", + "tags": [ + "Upload" + ], + "x-sdk": true } } }, + "security": [ + { + "Bearer": [] + } + ], + "tags": [ + { + "name": "Instances" + }, + { + "name": "Terms Of Service" + }, + { + "name": "Customers" + }, + { + "name": "Bank Accounts" + }, + { + "name": "Virtual Accounts" + }, + { + "name": "Blockchain Wallets" + }, + { + "name": "Offramp Wallets" + }, + { + "name": "Payouts Quotes" + }, + { + "name": "Payouts" + }, + { + "name": "Payin Quotes" + }, + { + "name": "Payins" + }, + { + "name": "Wallets" + }, + { + "name": "Transfer Quotes" + }, + { + "name": "Transfers" + }, + { + "name": "Webhook Endpoints" + }, + { + "name": "Fees" + }, + { + "name": "Partner Fees" + }, + { + "name": "Upload" + }, + { + "name": "Available" + }, + { + "name": "Solana" + }, + { + "name": "Stellar" + }, + { + "description": "## Error responses\n\nEvery error response uses this envelope:\n\n```json\n{\n \"success\": false,\n \"code\": \"QUOTES_EXPIRED\",\n \"message\": \"quote_expired\",\n \"description\": \"This quote has expired. Request a new quote and try again.\",\n \"errors\": [],\n \"trace_id\": \"0af7651916cd43dd8448eb211c80319c\"\n}\n```\n\n- `code` is a stable identifier, safe to build programmatic handling on.\n- `message` is a legacy machine string kept for backward compatibility. Prefer `code`.\n- `description` is human-readable text, safe to show to end users.\n- `trace_id` identifies the request. Include it when contacting support.\n\nRetry semantics per code: `retryable` means the same request can be retried as is, `terminal` means do not retry, and `actionable` means the request succeeds only after you fix something (for example funding a balance or correcting bank details).\n\nThe Status column shows the HTTP status a code typically responds with; the per-endpoint error tabs list the exact status each endpoint returns.\n\n### Error codes\n\n| Code | Status | Retry | Description |\n| --- | --- | --- | --- |\n| `AUTH_EMAIL_ALREADY_REGISTERED` | 409 | terminal | This email address is already registered. |\n| `AUTH_FORBIDDEN` | 403 | terminal | You do not have permission to perform this action. |\n| `AUTH_IP_BLOCKED` | 403 | terminal | Requests from this IP address are not allowed for this API key. |\n| `AUTH_RATE_LIMITED` | 429 | retryable | Too many requests. Wait a moment and try again. |\n| `AUTH_SERVICE_UNAVAILABLE` | 503 | retryable | The authentication service is temporarily unavailable. Try again shortly. |\n| `AUTH_TOKEN_INVALID` | 401 | actionable | This link or token is invalid or has expired. Request a new one. |\n| `AUTH_UNAUTHORIZED` | 401 | actionable | Authentication failed. Check your API key or session and try again. |\n| `BANK_ACCOUNTS_INCOMPLETE` | 400 | actionable | The bank account details are incomplete for this payment method. Provide the missing fields. |\n| `BANK_ACCOUNTS_INVALID_BANK_CODE` | 400 | actionable | The bank code provided is not valid for this payment rail. The message lists where to fetch the valid codes. |\n| `BANK_ACCOUNTS_INVALID_ROUTING` | 400 | actionable | The routing number provided is not valid. Check the number and try again. |\n| `BANK_ACCOUNTS_NOT_APPROVED` | 403 | actionable | This bank account is not approved yet. |\n| `BANK_ACCOUNTS_NOT_FOUND` | 404 | actionable | The requested bank account was not found. |\n| `BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED` | 400 | terminal | This banking option is not supported for this operation. |\n| `BANK_ACCOUNTS_RTP_NOT_SUPPORTED` | 400 | terminal | The provided routing number does not support instant payments. |\n| `BILLING_INVOICE_NOT_FOUND` | 404 | actionable | The requested invoice was not found. |\n| `BILLING_INVOICE_NOT_PAYABLE` | 409 | terminal | This invoice cannot be paid or collected in its current state. |\n| `BILLING_NOT_AVAILABLE` | 403 | terminal | Billing is not available for development instances. |\n| `BLOCKCHAIN_CALL_FAILED` | 400 | retryable | The blockchain call could not be completed. Check the transaction details and try again. |\n| `BLOCKCHAIN_NETWORK_NOT_SUPPORTED` | 400 | terminal | This network or token combination is not supported for this operation. |\n| `BLOCKCHAIN_TOKEN_NOT_SUPPORTED` | 400 | actionable | This token is not supported for this instance type. Development instances settle in USDB; production instances settle in USDC or USDT. |\n| `BLOCKCHAIN_TX_FAILED` | 502 | retryable | The blockchain transaction failed. Try again, and contact support if the problem persists. |\n| `COMPLIANCE_RFI_IN_PROGRESS` | 409 | actionable | An information request is already in progress. Resolve it before continuing. |\n| `COMPLIANCE_RFI_INVALID` | 400 | actionable | The information request could not be processed. Check the submitted fields. |\n| `CUSTOMERS_ALREADY_APPROVED` | 409 | terminal | This customer is already approved. |\n| `CUSTOMERS_BUSINESS_ENHANCED_NOT_AVAILABLE` | 400 | terminal | Enhanced verification is not available for business customers. Use standard verification (kyc_type: standard) for businesses. |\n| `CUSTOMERS_COUNTRY_NOT_SUPPORTED` | 400 | terminal | This country is not supported for this operation. |\n| `CUSTOMERS_ENHANCED_KYC_REQUIRED` | 400 | actionable | Individuals from high-risk countries must use enhanced verification (kyc_type: enhanced); standard verification is not available for them. See https://www.blindpay.com/docs/kb/supported-countries for country tiers. |\n| `CUSTOMERS_ID_DOCUMENT_INVALID` | 400 | actionable | The identity document is not an accepted passport or national ID. Provide a valid passport or national ID for this customer (a driver license is not accepted for high-risk countries). |\n| `CUSTOMERS_INVALID_DATA` | 422 | actionable | The customer data was rejected by the banking provider. Check the highlighted fields and try again. |\n| `CUSTOMERS_INVALID_PHONE` | 400 | actionable | The phone number provided is not valid. Check the number and try again. |\n| `CUSTOMERS_INVALID_TAX_ID` | 400 | actionable | The tax ID provided is not valid. Check the value and try again. |\n| `CUSTOMERS_KYC_NOT_APPROVED` | 403 | actionable | This customer has not completed verification yet. Complete the verification before continuing. |\n| `CUSTOMERS_NOT_FOUND` | 404 | actionable | The requested customer was not found. |\n| `CUSTOMERS_ONBOARDING_INCOMPLETE` | 400 | actionable | Onboarding is not complete yet. Finish the remaining steps before continuing. |\n| `DATA_INTEGRITY_ERROR` | 422 | terminal | This record could not be loaded because it contains invalid stored data. Contact support with the ID below. |\n| `FEES_NOT_FOUND` | 404 | actionable | The requested fee configuration was not found. |\n| `FEES_PARTNER_FEE_EXCEEDED` | 400 | actionable | The partner fee exceeds the allowed maximum for this transaction. |\n| `FILES_ANALYSIS_FAILED` | 502 | retryable | The document could not be analyzed. Try again, and contact support if the problem persists. |\n| `FILES_EMPTY` | 400 | actionable | The uploaded file is empty. Upload a valid file. |\n| `FILES_TOO_LARGE` | 400 | actionable | The file is too large. Upload a smaller file. |\n| `FILES_TYPE_NOT_ALLOWED` | 400 | actionable | This file type is not allowed. Upload a supported file type. |\n| `FILES_UNREADABLE` | 400 | actionable | We could not read the uploaded file. Check the file and try again. |\n| `INSTANCES_BLOCKED` | 403 | terminal | This account is blocked. Contact support for assistance. |\n| `INSTANCES_LIMIT_REACHED` | 400 | terminal | You reached the maximum number of instances allowed for your account. |\n| `INSTANCES_NOT_FOUND` | 404 | actionable | The requested instance was not found. |\n| `INTERNAL_ERROR` | 500 | retryable | Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists. |\n| `LIMITS_AMOUNT_OUT_OF_RANGE` | 400 | actionable | The amount is outside the allowed range. The message includes the allowed range. |\n| `LIMITS_VOLUME_EXCEEDED` | 400 | actionable | You exceeded your transaction volume limit. The message includes the remaining amount available. |\n| `PAYINS_ALREADY_TERMINAL` | 409 | terminal | This payin already reached a final status and cannot be changed. |\n| `PAYINS_METHOD_NOT_SUPPORTED` | 400 | terminal | This payment method is not supported for this operation. |\n| `PAYINS_NOT_FOUND` | 404 | actionable | The requested payin was not found. |\n| `PAYINS_TAX_ID_REQUIRED` | 400 | actionable | A tax ID is required for this payment method. Provide the tax ID and try again. |\n| `PAYOUTS_ALLOWANCE_NOT_CONFIRMED` | 400 | retryable | The token approval for this payout has not been confirmed on-chain yet, or the approved amount is lower than the payout amount. Wait for the approval transaction to confirm and execute the quote again. |\n| `PAYOUTS_AMOUNT_BELOW_MINIMUM` | 400 | actionable | The amount is below the minimum for this payment rail. |\n| `PAYOUTS_DOCUMENTS_NOT_ACCEPTED` | 400 | terminal | Document upload is only available for international wire payouts. |\n| `PAYOUTS_INSUFFICIENT_BALANCE` | 400 | actionable | There is not enough balance to complete this payout. Fund your balance and try again. |\n| `PAYOUTS_NOT_FOUND` | 404 | actionable | The requested payout was not found. |\n| `QUOTES_ALREADY_USED` | 409 | actionable | This quote was already used. Request a new quote. |\n| `QUOTES_EXPIRED` | 400 | actionable | This quote has expired. Request a new quote and try again. |\n| `QUOTES_INSUFFICIENT_LIQUIDITY` | 400 | actionable | There is not enough market liquidity to fill this amount right now. Try a smaller amount or try again later. |\n| `QUOTES_INVALID_STATE` | 400 | actionable | This quote cannot be authorized in its current state. Request a new quote and try again. |\n| `QUOTES_NOT_FOUND` | 404 | actionable | The requested quote was not found. |\n| `QUOTES_OTC_NOT_SUPPORTED` | 400 | actionable | This OTC configuration is not supported. OTC requires BRL with USDT, and either the sender amount with fees not covered, or the receiver amount with fees covered. |\n| `QUOTES_RATE_UNAVAILABLE` | 502 | retryable | An exchange rate is temporarily unavailable. Try again shortly. |\n| `REQUEST_REJECTED` | 400 | actionable | The request was rejected. Check the error message for details. |\n| `TOS_ALREADY_ACCEPTED` | 409 | terminal | These terms of service were already accepted. |\n| `TOS_NOT_ACCEPTED` | 400 | actionable | The terms of service must be accepted before continuing. |\n| `TOS_NOT_FOUND` | 404 | actionable | The requested terms of service record was not found. |\n| `TRANSFERS_NOT_ENABLED` | 403 | terminal | Wallets and transfers are not enabled for this account. Contact support to enable them. |\n| `VALIDATION_FAILED` | 400 | actionable | The request contains invalid fields. Check the errors list for details. |\n| `VALIDATION_INVALID_REQUEST` | 400 | actionable | The request is not valid for this operation. Check the parameters and try again. |\n| `VALIDATION_MISSING_BODY` | 400 | actionable | The request body is missing or malformed. Send valid JSON with the Content-Type: application/json header. |\n| `VALIDATION_MISSING_REQUIRED_FIELDS` | 400 | actionable | Required fields are missing. Provide the missing fields and try again. |\n| `VIRTUAL_ACCOUNTS_DISABLED` | 403 | terminal | Virtual accounts are not enabled for this account. Contact support to enable them. |\n| `VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED` | 400 | actionable | Additional documents are required to create this virtual account. Upload the requested documents. |\n| `VIRTUAL_ACCOUNTS_NOT_APPROVED` | 403 | actionable | This virtual account is not approved yet. |\n| `VIRTUAL_ACCOUNTS_NOT_FOUND` | 404 | actionable | The requested virtual account was not found. |\n| `VIRTUAL_ACCOUNTS_PROVISION_FAILED` | 502 | retryable | We could not create the virtual account. Try again, and contact support if the problem persists. |\n| `VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED` | 400 | terminal | Virtual accounts are not available for this country or region. |\n| `WALLETS_ATTACHED_TO_VIRTUAL_ACCOUNT` | 400 | terminal | This wallet is attached to a virtual account and cannot be deleted. Delete the virtual account first. |\n| `WALLETS_BALANCE_UNAVAILABLE` | 503 | retryable | The wallet balance is temporarily unavailable. Try again shortly. |\n| `WALLETS_NOT_FOUND` | 404 | actionable | The requested wallet was not found. |\n| `WEBHOOKS_LIMIT_REACHED` | 400 | terminal | You reached the maximum number of webhook endpoints. |\n| `WEBHOOKS_SIGNATURE_INVALID` | 401 | terminal | The webhook signature is missing or invalid. |\n| `WEBHOOKS_URL_INVALID` | 400 | actionable | The webhook URL is not valid. Use a reachable HTTPS URL. |\n", + "name": "Errors" + } + ], "webhooks": { "bankAccount.new": { "post": { "requestBody": { - "description": "Add bank account from blindpay", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BankAccountWebhookOut" } } - } + }, + "description": "Add bank account from blindpay" }, "responses": { "200": { @@ -53354,14 +53514,14 @@ "blockchainWallet.new": { "post": { "requestBody": { - "description": "Add blockchain wallet from blindpay", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BlockchainWalletWebhookOut" } } - } + }, + "description": "Add blockchain wallet from blindpay" }, "responses": { "200": { @@ -53370,39 +53530,39 @@ } } }, - "customer.new": { + "customer.delete": { "post": { "requestBody": { - "description": "Create customer from blindpay", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomerNewWebhookOut" + "$ref": "#/components/schemas/CustomerDeleteWebhookOut" } } } }, "responses": { "200": { - "description": "Customer created" + "description": "Customer deleted" } } } }, - "customer.delete": { + "customer.new": { "post": { "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomerDeleteWebhookOut" + "$ref": "#/components/schemas/CustomerNewWebhookOut" } } - } + }, + "description": "Create customer from blindpay" }, "responses": { "200": { - "description": "Customer deleted" + "description": "Customer created" } } } @@ -53410,14 +53570,14 @@ "customer.update": { "post": { "requestBody": { - "description": "Update customer from blindpay", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerUpdateWebhookOut" } } - } + }, + "description": "Update customer from blindpay" }, "responses": { "200": { @@ -53429,14 +53589,14 @@ "limitIncrease.new": { "post": { "requestBody": { - "description": "Create limit increase from blindpay", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LimitIncreaseNewWebhookOut" } } - } + }, + "description": "Create limit increase from blindpay" }, "responses": { "200": { @@ -53463,40 +53623,40 @@ } } }, - "payin.new": { + "payin.complete": { "post": { "requestBody": { - "description": "Create payin from blindpay", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PayinNewWebhookOut" + "$ref": "#/components/schemas/PayinCompleteWebhookOut" } } - } + }, + "description": "Update payin from blindpay" }, "responses": { "200": { - "description": "Payin created" + "description": "Payin completed" } } } }, - "payin.complete": { + "payin.new": { "post": { "requestBody": { - "description": "Update payin from blindpay", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PayinCompleteWebhookOut" + "$ref": "#/components/schemas/PayinNewWebhookOut" } } - } + }, + "description": "Create payin from blindpay" }, "responses": { "200": { - "description": "Payin completed" + "description": "Payin created" } } } @@ -53504,14 +53664,14 @@ "payin.partnerFee": { "post": { "requestBody": { - "description": "Update payin from blindpay", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PayinPartnerFeeWebhookOut" } } - } + }, + "description": "Update payin from blindpay" }, "responses": { "200": { @@ -53523,14 +53683,14 @@ "payin.update": { "post": { "requestBody": { - "description": "Update payin from blindpay", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PayinUpdateWebhookOut" } } - } + }, + "description": "Update payin from blindpay" }, "responses": { "200": { @@ -53539,40 +53699,40 @@ } } }, - "payout.new": { + "payout.complete": { "post": { "requestBody": { - "description": "Create payout from blindpay", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PayoutNewWebhookOut" + "$ref": "#/components/schemas/PayoutCompleteWebhookOut" } } - } + }, + "description": "Update payout from blindpay" }, "responses": { "200": { - "description": "Payout created" + "description": "Payout completed" } } } }, - "payout.complete": { + "payout.new": { "post": { "requestBody": { - "description": "Update payout from blindpay", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PayoutCompleteWebhookOut" + "$ref": "#/components/schemas/PayoutNewWebhookOut" } } - } + }, + "description": "Create payout from blindpay" }, "responses": { "200": { - "description": "Payout completed" + "description": "Payout created" } } } @@ -53580,14 +53740,14 @@ "payout.partnerFee": { "post": { "requestBody": { - "description": "Update payout partner fee from blindpay", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PayoutPartnerFeeWebhookOut" } } - } + }, + "description": "Update payout partner fee from blindpay" }, "responses": { "200": { @@ -53599,14 +53759,14 @@ "payout.update": { "post": { "requestBody": { - "description": "Update payout from blindpay", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PayoutUpdateWebhookOut" } } - } + }, + "description": "Update payout from blindpay" }, "responses": { "200": { @@ -53618,14 +53778,14 @@ "tos.accept": { "post": { "requestBody": { - "description": "Accept terms of service", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TosAcceptWebhookOut" } } - } + }, + "description": "Accept terms of service" }, "responses": { "200": { @@ -53634,40 +53794,40 @@ } } }, - "transfer.new": { + "transfer.complete": { "post": { "requestBody": { - "description": "Create transfer from blindpay", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateTransferOut" } } - } + }, + "description": "Update transfer from blindpay" }, "responses": { "200": { - "description": "Transfer created" + "description": "Transfer completed" } } } }, - "transfer.complete": { + "transfer.new": { "post": { "requestBody": { - "description": "Update transfer from blindpay", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateTransferOut" } } - } + }, + "description": "Create transfer from blindpay" }, "responses": { "200": { - "description": "Transfer completed" + "description": "Transfer created" } } } @@ -53675,14 +53835,14 @@ "transfer.update": { "post": { "requestBody": { - "description": "Update transfer from blindpay", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateTransferOut" } } - } + }, + "description": "Update transfer from blindpay" }, "responses": { "200": { @@ -53691,40 +53851,40 @@ } } }, - "virtualAccount.new": { + "virtualAccount.complete": { "post": { "requestBody": { - "description": "Virtual account created from blindpay", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VirtualAccountOut" } } - } + }, + "description": "Virtual account activated/complete from blindpay" }, "responses": { "200": { - "description": "Virtual account created" + "description": "Virtual account complete" } } } }, - "virtualAccount.complete": { + "virtualAccount.new": { "post": { "requestBody": { - "description": "Virtual account activated/complete from blindpay", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VirtualAccountOut" } } - } + }, + "description": "Virtual account created from blindpay" }, "responses": { "200": { - "description": "Virtual account complete" + "description": "Virtual account created" } } } @@ -53732,14 +53892,14 @@ "wallet.inbound": { "post": { "requestBody": { - "description": "Wallet inbound", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletInboundSchemaOut" } } - } + }, + "description": "Wallet inbound" }, "responses": { "200": { @@ -53751,14 +53911,14 @@ "wallet.new": { "post": { "requestBody": { - "description": "Create a wallet for a customer", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletOut" } } - } + }, + "description": "Create a wallet for a customer" }, "responses": { "200": { @@ -53768,4 +53928,4 @@ } } } -} \ No newline at end of file +} diff --git a/src/blindpay/resources/payins/quotes.py b/src/blindpay/resources/payins/quotes.py index df67a64..9cc2dd7 100644 --- a/src/blindpay/resources/payins/quotes.py +++ b/src/blindpay/resources/payins/quotes.py @@ -10,7 +10,7 @@ StablecoinToken, ) -PaymentMethod = Literal["ach", "wire", "pix", "spei", "rtp", "ted"] +PaymentMethod = Literal["ach", "wire", "pix", "spei", "rtp", "ted", "international_swift", "pse", "transfers"] class PayerRules(TypedDict, total=False): diff --git a/src/blindpay/resources/quotes/quotes.py b/src/blindpay/resources/quotes/quotes.py index f4ea7ca..9d14b4d 100644 --- a/src/blindpay/resources/quotes/quotes.py +++ b/src/blindpay/resources/quotes/quotes.py @@ -39,6 +39,7 @@ class CreateQuoteInput(TypedDict): transaction_document_file: Optional[str] transaction_document_id: Optional[str] transaction_document_type: TransactionDocumentType + refund_wallet_address: Optional[str] class CreateQuoteResponse(TypedDict): diff --git a/src/blindpay/types.py b/src/blindpay/types.py index 0dfcb40..5110269 100644 --- a/src/blindpay/types.py +++ b/src/blindpay/types.py @@ -388,7 +388,7 @@ class TrackingPartnerFee(TypedDict): "other", ] -BankingPartner = Literal["cfsb", "citi", "hsbc", "jpmorgan"] +BankingPartner = Literal["cfsb", "citi", "hsbc", "jpmorgan", "portage"] PaymentMethod = Literal["ach", "wire", "pix", "spei", "transfers", "pse", "international_swift", "rtp", "ted"] diff --git a/tests/resources/test_quotes.py b/tests/resources/test_quotes.py index 6ddaf7e..b1ca135 100644 --- a/tests/resources/test_quotes.py +++ b/tests/resources/test_quotes.py @@ -53,6 +53,7 @@ async def test_create_quote(self): "transaction_document_file": None, "transaction_document_id": None, "transaction_document_type": "invoice", + "refund_wallet_address": None, } ) @@ -73,6 +74,7 @@ async def test_create_quote(self): "transaction_document_file": None, "transaction_document_id": None, "transaction_document_type": "invoice", + "refund_wallet_address": None, }, ) @@ -158,6 +160,7 @@ def test_create_quote(self): "transaction_document_file": None, "transaction_document_id": None, "transaction_document_type": "invoice", + "refund_wallet_address": None, } ) @@ -178,6 +181,7 @@ def test_create_quote(self): "transaction_document_file": None, "transaction_document_id": None, "transaction_document_type": "invoice", + "refund_wallet_address": None, }, ) From c858f1ce81ffa45d532e0563d565ab8c65edaf56 Mon Sep 17 00:00:00 2001 From: Eric Viana Date: Mon, 3 Aug 2026 20:26:22 -0300 Subject: [PATCH 3/9] fix(api-sync): snapshot refresh copies raw spec bytes instead of reformatting cmd_apply was re-serializing the whole spec via json.dumps(..., sort_keys=True) to refresh spec-snapshot.json, which reorders every key in a 1.6MB file on every apply and buries the real (few-line) drift under tens of thousands of unrelated diff lines. Writing spec_path.read_bytes() straight through keeps whatever formatting the upstream filter already produced and makes future applies show only the lines that actually changed. Claude-Session: https://claude.ai/code/session_01F1stiNzuNtJXoXtiW9ZCbs --- .api-sync/spec-snapshot.json | 72240 ++++++++++++++++----------------- .api-sync/sync.py | 6 +- 2 files changed, 36125 insertions(+), 36121 deletions(-) diff --git a/.api-sync/spec-snapshot.json b/.api-sync/spec-snapshot.json index e0de32b..98de756 100644 --- a/.api-sync/spec-snapshot.json +++ b/.api-sync/spec-snapshot.json @@ -1,1044 +1,626 @@ { + "openapi": "3.1.0", + "info": { + "version": "1.0.0", + "title": "BlindPay API" + }, + "tags": [ + { + "name": "Instances" + }, + { + "name": "Terms Of Service" + }, + { + "name": "Customers" + }, + { + "name": "Bank Accounts" + }, + { + "name": "Virtual Accounts" + }, + { + "name": "Blockchain Wallets" + }, + { + "name": "Offramp Wallets" + }, + { + "name": "Payouts Quotes" + }, + { + "name": "Payouts" + }, + { + "name": "Payin Quotes" + }, + { + "name": "Payins" + }, + { + "name": "Wallets" + }, + { + "name": "Transfer Quotes" + }, + { + "name": "Transfers" + }, + { + "name": "Webhook Endpoints" + }, + { + "name": "Fees" + }, + { + "name": "Partner Fees" + }, + { + "name": "Upload" + }, + { + "name": "Available" + }, + { + "name": "Solana" + }, + { + "name": "Stellar" + }, + { + "name": "Errors", + "description": "## Error responses\n\nEvery error response uses this envelope:\n\n```json\n{\n \"success\": false,\n \"code\": \"QUOTES_EXPIRED\",\n \"message\": \"quote_expired\",\n \"description\": \"This quote has expired. Request a new quote and try again.\",\n \"errors\": [],\n \"trace_id\": \"0af7651916cd43dd8448eb211c80319c\"\n}\n```\n\n- `code` is a stable identifier, safe to build programmatic handling on.\n- `message` is a legacy machine string kept for backward compatibility. Prefer `code`.\n- `description` is human-readable text, safe to show to end users.\n- `trace_id` identifies the request. Include it when contacting support.\n\nRetry semantics per code: `retryable` means the same request can be retried as is, `terminal` means do not retry, and `actionable` means the request succeeds only after you fix something (for example funding a balance or correcting bank details).\n\nThe Status column shows the HTTP status a code typically responds with; the per-endpoint error tabs list the exact status each endpoint returns.\n\n### Error codes\n\n| Code | Status | Retry | Description |\n| --- | --- | --- | --- |\n| `AUTH_EMAIL_ALREADY_REGISTERED` | 409 | terminal | This email address is already registered. |\n| `AUTH_FORBIDDEN` | 403 | terminal | You do not have permission to perform this action. |\n| `AUTH_IP_BLOCKED` | 403 | terminal | Requests from this IP address are not allowed for this API key. |\n| `AUTH_RATE_LIMITED` | 429 | retryable | Too many requests. Wait a moment and try again. |\n| `AUTH_SERVICE_UNAVAILABLE` | 503 | retryable | The authentication service is temporarily unavailable. Try again shortly. |\n| `AUTH_TOKEN_INVALID` | 401 | actionable | This link or token is invalid or has expired. Request a new one. |\n| `AUTH_UNAUTHORIZED` | 401 | actionable | Authentication failed. Check your API key or session and try again. |\n| `BANK_ACCOUNTS_INCOMPLETE` | 400 | actionable | The bank account details are incomplete for this payment method. Provide the missing fields. |\n| `BANK_ACCOUNTS_INVALID_BANK_CODE` | 400 | actionable | The bank code provided is not valid for this payment rail. The message lists where to fetch the valid codes. |\n| `BANK_ACCOUNTS_INVALID_ROUTING` | 400 | actionable | The routing number provided is not valid. Check the number and try again. |\n| `BANK_ACCOUNTS_NOT_APPROVED` | 403 | actionable | This bank account is not approved yet. |\n| `BANK_ACCOUNTS_NOT_FOUND` | 404 | actionable | The requested bank account was not found. |\n| `BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED` | 400 | terminal | This banking option is not supported for this operation. |\n| `BANK_ACCOUNTS_RTP_NOT_SUPPORTED` | 400 | terminal | The provided routing number does not support instant payments. |\n| `BILLING_INVOICE_NOT_FOUND` | 404 | actionable | The requested invoice was not found. |\n| `BILLING_INVOICE_NOT_PAYABLE` | 409 | terminal | This invoice cannot be paid or collected in its current state. |\n| `BILLING_NOT_AVAILABLE` | 403 | terminal | Billing is not available for development instances. |\n| `BLOCKCHAIN_CALL_FAILED` | 400 | retryable | The blockchain call could not be completed. Check the transaction details and try again. |\n| `BLOCKCHAIN_NETWORK_NOT_SUPPORTED` | 400 | terminal | This network or token combination is not supported for this operation. |\n| `BLOCKCHAIN_TOKEN_NOT_SUPPORTED` | 400 | actionable | This token is not supported for this instance type. Development instances settle in USDB; production instances settle in USDC or USDT. |\n| `BLOCKCHAIN_TX_FAILED` | 502 | retryable | The blockchain transaction failed. Try again, and contact support if the problem persists. |\n| `COMPLIANCE_RFI_IN_PROGRESS` | 409 | actionable | An information request is already in progress. Resolve it before continuing. |\n| `COMPLIANCE_RFI_INVALID` | 400 | actionable | The information request could not be processed. Check the submitted fields. |\n| `CUSTOMERS_ALREADY_APPROVED` | 409 | terminal | This customer is already approved. |\n| `CUSTOMERS_BUSINESS_ENHANCED_NOT_AVAILABLE` | 400 | terminal | Enhanced verification is not available for business customers. Use standard verification (kyc_type: standard) for businesses. |\n| `CUSTOMERS_COUNTRY_NOT_SUPPORTED` | 400 | terminal | This country is not supported for this operation. |\n| `CUSTOMERS_ENHANCED_KYC_REQUIRED` | 400 | actionable | Individuals from high-risk countries must use enhanced verification (kyc_type: enhanced); standard verification is not available for them. See https://www.blindpay.com/docs/kb/supported-countries for country tiers. |\n| `CUSTOMERS_ID_DOCUMENT_INVALID` | 400 | actionable | The identity document is not an accepted passport or national ID. Provide a valid passport or national ID for this customer (a driver license is not accepted for high-risk countries). |\n| `CUSTOMERS_INVALID_DATA` | 422 | actionable | The customer data was rejected by the banking provider. Check the highlighted fields and try again. |\n| `CUSTOMERS_INVALID_PHONE` | 400 | actionable | The phone number provided is not valid. Check the number and try again. |\n| `CUSTOMERS_INVALID_TAX_ID` | 400 | actionable | The tax ID provided is not valid. Check the value and try again. |\n| `CUSTOMERS_KYC_NOT_APPROVED` | 403 | actionable | This customer has not completed verification yet. Complete the verification before continuing. |\n| `CUSTOMERS_NOT_FOUND` | 404 | actionable | The requested customer was not found. |\n| `CUSTOMERS_ONBOARDING_INCOMPLETE` | 400 | actionable | Onboarding is not complete yet. Finish the remaining steps before continuing. |\n| `DATA_INTEGRITY_ERROR` | 422 | terminal | This record could not be loaded because it contains invalid stored data. Contact support with the ID below. |\n| `FEES_NOT_FOUND` | 404 | actionable | The requested fee configuration was not found. |\n| `FEES_PARTNER_FEE_EXCEEDED` | 400 | actionable | The partner fee exceeds the allowed maximum for this transaction. |\n| `FILES_ANALYSIS_FAILED` | 502 | retryable | The document could not be analyzed. Try again, and contact support if the problem persists. |\n| `FILES_EMPTY` | 400 | actionable | The uploaded file is empty. Upload a valid file. |\n| `FILES_TOO_LARGE` | 400 | actionable | The file is too large. Upload a smaller file. |\n| `FILES_TYPE_NOT_ALLOWED` | 400 | actionable | This file type is not allowed. Upload a supported file type. |\n| `FILES_UNREADABLE` | 400 | actionable | We could not read the uploaded file. Check the file and try again. |\n| `INSTANCES_BLOCKED` | 403 | terminal | This account is blocked. Contact support for assistance. |\n| `INSTANCES_LIMIT_REACHED` | 400 | terminal | You reached the maximum number of instances allowed for your account. |\n| `INSTANCES_NOT_FOUND` | 404 | actionable | The requested instance was not found. |\n| `INTERNAL_ERROR` | 500 | retryable | Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists. |\n| `LIMITS_AMOUNT_OUT_OF_RANGE` | 400 | actionable | The amount is outside the allowed range. The message includes the allowed range. |\n| `LIMITS_VOLUME_EXCEEDED` | 400 | actionable | You exceeded your transaction volume limit. The message includes the remaining amount available. |\n| `PAYINS_ALREADY_TERMINAL` | 409 | terminal | This payin already reached a final status and cannot be changed. |\n| `PAYINS_METHOD_NOT_SUPPORTED` | 400 | terminal | This payment method is not supported for this operation. |\n| `PAYINS_NOT_FOUND` | 404 | actionable | The requested payin was not found. |\n| `PAYINS_TAX_ID_REQUIRED` | 400 | actionable | A tax ID is required for this payment method. Provide the tax ID and try again. |\n| `PAYOUTS_ALLOWANCE_NOT_CONFIRMED` | 400 | retryable | The token approval for this payout has not been confirmed on-chain yet, or the approved amount is lower than the payout amount. Wait for the approval transaction to confirm and execute the quote again. |\n| `PAYOUTS_AMOUNT_BELOW_MINIMUM` | 400 | actionable | The amount is below the minimum for this payment rail. |\n| `PAYOUTS_DOCUMENTS_NOT_ACCEPTED` | 400 | terminal | Document upload is only available for international wire payouts. |\n| `PAYOUTS_INSUFFICIENT_BALANCE` | 400 | actionable | There is not enough balance to complete this payout. Fund your balance and try again. |\n| `PAYOUTS_NOT_FOUND` | 404 | actionable | The requested payout was not found. |\n| `QUOTES_ALREADY_USED` | 409 | actionable | This quote was already used. Request a new quote. |\n| `QUOTES_EXPIRED` | 400 | actionable | This quote has expired. Request a new quote and try again. |\n| `QUOTES_INSUFFICIENT_LIQUIDITY` | 400 | actionable | There is not enough market liquidity to fill this amount right now. Try a smaller amount or try again later. |\n| `QUOTES_INVALID_STATE` | 400 | actionable | This quote cannot be authorized in its current state. Request a new quote and try again. |\n| `QUOTES_NOT_FOUND` | 404 | actionable | The requested quote was not found. |\n| `QUOTES_OTC_NOT_SUPPORTED` | 400 | actionable | This OTC configuration is not supported. OTC requires BRL with USDT, and either the sender amount with fees not covered, or the receiver amount with fees covered. |\n| `QUOTES_RATE_UNAVAILABLE` | 502 | retryable | An exchange rate is temporarily unavailable. Try again shortly. |\n| `REQUEST_REJECTED` | 400 | actionable | The request was rejected. Check the error message for details. |\n| `TOS_ALREADY_ACCEPTED` | 409 | terminal | These terms of service were already accepted. |\n| `TOS_NOT_ACCEPTED` | 400 | actionable | The terms of service must be accepted before continuing. |\n| `TOS_NOT_FOUND` | 404 | actionable | The requested terms of service record was not found. |\n| `TRANSFERS_NOT_ENABLED` | 403 | terminal | Wallets and transfers are not enabled for this account. Contact support to enable them. |\n| `VALIDATION_FAILED` | 400 | actionable | The request contains invalid fields. Check the errors list for details. |\n| `VALIDATION_INVALID_REQUEST` | 400 | actionable | The request is not valid for this operation. Check the parameters and try again. |\n| `VALIDATION_MISSING_BODY` | 400 | actionable | The request body is missing or malformed. Send valid JSON with the Content-Type: application/json header. |\n| `VALIDATION_MISSING_REQUIRED_FIELDS` | 400 | actionable | Required fields are missing. Provide the missing fields and try again. |\n| `VIRTUAL_ACCOUNTS_DISABLED` | 403 | terminal | Virtual accounts are not enabled for this account. Contact support to enable them. |\n| `VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED` | 400 | actionable | Additional documents are required to create this virtual account. Upload the requested documents. |\n| `VIRTUAL_ACCOUNTS_NOT_APPROVED` | 403 | actionable | This virtual account is not approved yet. |\n| `VIRTUAL_ACCOUNTS_NOT_FOUND` | 404 | actionable | The requested virtual account was not found. |\n| `VIRTUAL_ACCOUNTS_PROVISION_FAILED` | 502 | retryable | We could not create the virtual account. Try again, and contact support if the problem persists. |\n| `VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED` | 400 | terminal | Virtual accounts are not available for this country or region. |\n| `WALLETS_ATTACHED_TO_VIRTUAL_ACCOUNT` | 400 | terminal | This wallet is attached to a virtual account and cannot be deleted. Delete the virtual account first. |\n| `WALLETS_BALANCE_UNAVAILABLE` | 503 | retryable | The wallet balance is temporarily unavailable. Try again shortly. |\n| `WALLETS_NOT_FOUND` | 404 | actionable | The requested wallet was not found. |\n| `WEBHOOKS_LIMIT_REACHED` | 400 | terminal | You reached the maximum number of webhook endpoints. |\n| `WEBHOOKS_SIGNATURE_INVALID` | 401 | terminal | The webhook signature is missing or invalid. |\n| `WEBHOOKS_URL_INVALID` | 400 | actionable | The webhook URL is not valid. Use a reachable HTTPS URL. |\n" + } + ], + "security": [ + { + "Bearer": [] + } + ], "components": { - "parameters": {}, + "securitySchemes": { + "Bearer": { + "type": "http", + "scheme": "bearer", + "bearerFormat": "JWT" + } + }, "schemas": { - "AcceptTosIn": { + "BlockchainWalletWebhookOut": { + "type": "object", "properties": { - "customer_id": { - "example": "re_000000000000", - "maxLength": 15, - "minLength": 15, - "type": [ - "string", - "null" + "webhook_event": { + "type": "string", + "enum": [ + "blockchainWallet.new" ] }, - "idempotency_key": { - "example": "123e4567-e89b-12d3-a456-426614174000", - "format": "uuid", - "type": "string" + "id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "bw_000000000000" }, - "session": { + "name": { "type": [ "string", "null" - ] + ], + "example": "Wallet Display Name" }, - "session_token": { - "example": "SESSION_TOKEN_FROM_INITIATE_TOS_RESPONSE", - "type": "string" - } - }, - "required": [ - "session_token", - "idempotency_key" - ], - "type": "object" - }, - "AcceptTosOut": { - "properties": { - "customer_id": { - "example": "re_000000000000", - "maxLength": 15, - "minLength": 15, + "network": { "type": [ "string", "null" - ] - }, - "idempotency_key": { - "example": "123e4567-e89b-12d3-a456-426614174000", - "format": "uuid", - "type": "string" - }, - "tos_id": { - "example": "to_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - }, - "version": { + ], "enum": [ - "1.0.0", - "1.0.1" + "base", + "sepolia", + "arbitrum_sepolia", + "base_sepolia", + "arbitrum", + "polygon", + "polygon_amoy", + "ethereum", + "stellar", + "stellar_testnet", + "tron", + "solana", + "solana_devnet" ], - "example": "1.0.0", + "example": "polygon" + }, + "address": { "type": [ "string", "null" - ] - } - }, - "required": [ - "tos_id", - "idempotency_key" - ], - "type": "object" - }, - "AdditionalInfoItem": { - "example": { - "label": "EIN_LETTER", - "value": "https://example.com/ein.pdf" - }, - "properties": { - "label": { - "enum": [ - "EIN_LETTER", - "KYC_PROVIDER_DOCUMENT", - "FLOW_OF_FUNDS", - "BANK_STATEMENT", - "TAX_RETURN", - "AUDITED_FINANCIALS", - "OPERATING_AGREEMENT", - "BOARD_RESOLUTION", - "CERTIFICATE_OF_GOOD_STANDING", - "BUSINESS_LICENSE", - "MSB_LICENSE", - "POWER_OF_ATTORNEY", - "TRUST_DEED", - "SHAREHOLDER_REGISTRY", - "BENEFICIAL_OWNER_DECLARATION", - "COMPLIANCE_QUESTIONNAIRE", - "PROOF_OF_EMPLOYMENT", - "REFERENCE_LETTER", - "OTHER" ], - "type": "string" - }, - "value": { - "minLength": 1, - "type": "string" - } - }, - "required": [ - "label", - "value" - ], - "type": "object" - }, - "AddonItemSchema": { - "properties": { - "amount": { - "description": "Addon amount in cents", - "example": 50000, - "type": "integer" + "example": "0xDD6a3aD0949396e57C7738ba8FC1A46A5a1C372C" }, - "description": { - "description": "Addon description", - "example": "Swift", + "signature_tx_hash": { "type": [ "string", "null" - ] - }, - "id": { - "description": "Recurring item or invoice item ID", - "example": "ri_000000000000", - "type": "string" + ], + "example": "0x3c499c542cef5e3811e1192ce70d8cc03d5c3359" }, - "name": { - "description": "Addon name", - "example": "Swift", - "type": "string" + "is_account_abstraction": { + "type": [ + "boolean", + "null" + ], + "example": false }, - "quantity": { - "description": "Addon quantity", - "example": 1, - "type": "integer" + "customer_id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "re_000000000000" } }, "required": [ + "webhook_event", "id", "name", - "amount", - "quantity" - ], - "type": "object" + "network", + "customer_id" + ] }, - "ApiKeyPublic": { + "BankAccountWebhookOut": { + "type": "object", "properties": { - "created_at": { - "example": "2021-01-01T00:00:00Z", - "format": "date-time", - "type": [ - "string", - "null" + "webhook_event": { + "type": "string", + "enum": [ + "bankAccount.new" ] }, "id": { - "example": "ap_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - }, - "instance_id": { - "example": "in_000000000000", "maxLength": 15, - "minLength": 15, - "type": "string" - }, - "ip_whitelist": { - "example": [ - "127.0.0.1", - "192.168.0.1" - ], - "items": { - "format": "ip", - "type": "string" - }, - "type": [ - "array", - "null" - ] - }, - "last_used_at": { - "example": "2021-01-01T00:00:00Z" - }, - "name": { - "example": "API Key Name", - "minLength": 1, - "type": "string" + "example": "ba_000000000000" }, - "permission": { + "type": { + "type": "string", "enum": [ - "full_access" + "wire", + "ach", + "pix", + "pix_safe", + "ted", + "spei_bitso", + "transfers_bitso", + "ach_cop_bitso", + "international_swift", + "rtp", + "sepa" ], - "example": "full_access", - "type": "string" + "example": "wire" }, - "token": { - "example": "token", - "type": "string" + "name": { + "type": "string", + "example": "Bank Account Name" }, - "updated_at": { - "example": "2021-01-01T00:00:00Z", - "format": "date-time", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "id", - "name", - "permission", - "token", - "instance_id" - ], - "type": "object" - }, - "AuditActor": { - "properties": { - "email": { + "pix_key": { "type": [ "string", "null" - ] + ], + "example": "14947677768" }, - "id": { + "beneficiary_name": { "type": [ "string", "null" - ] + ], + "maxLength": 128, + "example": "Individual full name or business name" }, - "image_url": { + "routing_number": { "type": [ "string", "null" - ] + ], + "example": "012345678" }, - "name": { + "account_number": { "type": [ "string", "null" - ] - } - }, - "required": [ - "id", - "name", - "email", - "image_url" - ], - "type": [ - "object", - "null" - ] - }, - "AuditLog": { - "properties": { - "actor_type": { - "enum": [ - "user", - "api_key" ], - "example": "user", - "type": "string" + "example": "1001001234" }, - "api_key_id": { - "example": null, + "account_type": { "type": [ "string", "null" - ] + ], + "enum": [ + "checking", + "saving" + ], + "example": "checking" }, - "country": { - "example": "US", + "account_class": { "type": [ "string", "null" - ] + ], + "enum": [ + "individual", + "business" + ], + "example": "individual" }, - "created_at": { - "example": "2021-01-01T00:00:00Z", - "format": "date-time", + "address_line_1": { "type": [ "string", "null" - ] - }, - "entity_id": { - "example": "pi_000000000000", - "type": "string" - }, - "entity_type": { - "example": "payin", - "type": "string" - }, - "feature": { - "example": "payin", - "type": "string" - }, - "has_passkey": { - "example": true, - "type": [ - "boolean", - "null" - ] - }, - "id": { - "example": "al_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - }, - "instance_id": { - "example": "in_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" + ], + "example": "Address line 1" }, - "ip_address": { - "example": "177.137.230.244", + "address_line_2": { "type": [ "string", "null" - ] - }, - "metadata": { - "additionalProperties": {}, - "example": {}, - "type": "object" - }, - "operation": { - "enum": [ - "create", - "update", - "delete" ], - "example": "create", - "type": "string" + "example": "Address line 2" }, - "request_id": { - "example": "abcd1234", + "city": { "type": [ "string", "null" - ] - }, - "role": { - "example": "admin", - "type": "string" + ], + "example": "City" }, - "user_agent": { - "example": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)", + "state_province_region": { "type": [ "string", "null" - ] + ], + "example": "State/Province/Region" }, - "user_id": { - "example": "us_000000000000", + "country": { "type": [ "string", "null" - ] - } - }, - "required": [ - "id", - "instance_id", - "actor_type", - "user_id", - "api_key_id", - "role", - "feature", - "operation", - "entity_type", - "entity_id", - "metadata", - "ip_address", - "user_agent", - "country", - "has_passkey", - "request_id" - ], - "type": "object" - }, - "AuditLogOut": { - "allOf": [ - { - "$ref": "#/components/schemas/AuditLog" - }, - { - "properties": { - "actor": { - "$ref": "#/components/schemas/AuditActor" - } - }, - "required": [ - "actor" ], - "type": "object" - } - ] - }, - "AvailableBankDetails": { - "items": { - "properties": { - "items": { - "items": { - "properties": { - "is_active": { - "example": true, - "type": "boolean" - }, - "label": { - "example": "United States of America", - "type": "string" - }, - "value": { - "example": "US", - "type": "string" - } - }, - "required": [ - "label", - "value" - ], - "type": "object" - }, - "type": "array" - }, - "key": { - "enum": [ - "type", - "name", - "status", - "recipient_relationship", - "swift_payment_code", - "pix_key", - "force_cpf_cnpj", - "beneficiary_name", - "routing_number", - "account_number", - "account_type", - "account_class", - "address_line_1", - "address_line_2", - "city", - "state_province_region", - "country", - "postal_code", - "checkbook_account_id", - "checkbook_user_key", - "onemoney_external_account_id", - "pix_safe_bank_code", - "pix_safe_branch_code", - "pix_safe_cpf_cnpj", - "ted_bank_code", - "ted_branch_code", - "ted_cpf_cnpj", - "spei_protocol", - "spei_institution_code", - "spei_clabe", - "transfers_type", - "transfers_account", - "ach_cop_beneficiary_first_name", - "ach_cop_beneficiary_last_name", - "ach_cop_document_id", - "ach_cop_document_type", - "ach_cop_email", - "ach_cop_bank_code", - "ach_cop_bank_account", - "swift_code_bic", - "swift_account_holder_name", - "swift_account_number_iban", - "swift_beneficiary_address_line_1", - "swift_beneficiary_address_line_2", - "swift_beneficiary_country", - "swift_beneficiary_city", - "swift_beneficiary_state_province_region", - "swift_beneficiary_postal_code", - "swift_bank_name", - "swift_bank_address_line_1", - "swift_bank_address_line_2", - "swift_bank_country", - "swift_bank_city", - "swift_bank_state_province_region", - "swift_bank_postal_code", - "swift_ifsc_branch_code", - "swift_intermediary_bank_swift_code_bic", - "swift_intermediary_bank_account_number_iban", - "swift_intermediary_bank_name", - "swift_intermediary_bank_country", - "sepa_iban", - "sepa_beneficiary_bic", - "sepa_beneficiary_legal_name", - "sepa_beneficiary_address_line_1", - "sepa_beneficiary_address_line_2", - "sepa_beneficiary_city", - "sepa_beneficiary_state_province_region", - "sepa_beneficiary_postal_code", - "sepa_beneficiary_country", - "business_industry", - "phone_number", - "tax_id", - "date_of_birth" - ], - "example": "account_number", - "type": "string" - }, - "label": { - "example": "Account Number", - "type": "string" - }, - "regex": { - "example": "^[0-9]{9}$", - "type": "string" - }, - "required": { - "example": false, - "type": [ - "boolean", - "null" - ] - }, - "requiredWhen": { - "example": { - "field": "country", - "operator": "in", - "values": [ - "US", - "GB" - ] - }, - "properties": { - "field": { - "enum": [ - "type", - "name", - "status", - "recipient_relationship", - "swift_payment_code", - "pix_key", - "force_cpf_cnpj", - "beneficiary_name", - "routing_number", - "account_number", - "account_type", - "account_class", - "address_line_1", - "address_line_2", - "city", - "state_province_region", - "country", - "postal_code", - "checkbook_account_id", - "checkbook_user_key", - "onemoney_external_account_id", - "pix_safe_bank_code", - "pix_safe_branch_code", - "pix_safe_cpf_cnpj", - "ted_bank_code", - "ted_branch_code", - "ted_cpf_cnpj", - "spei_protocol", - "spei_institution_code", - "spei_clabe", - "transfers_type", - "transfers_account", - "ach_cop_beneficiary_first_name", - "ach_cop_beneficiary_last_name", - "ach_cop_document_id", - "ach_cop_document_type", - "ach_cop_email", - "ach_cop_bank_code", - "ach_cop_bank_account", - "swift_code_bic", - "swift_account_holder_name", - "swift_account_number_iban", - "swift_beneficiary_address_line_1", - "swift_beneficiary_address_line_2", - "swift_beneficiary_country", - "swift_beneficiary_city", - "swift_beneficiary_state_province_region", - "swift_beneficiary_postal_code", - "swift_bank_name", - "swift_bank_address_line_1", - "swift_bank_address_line_2", - "swift_bank_country", - "swift_bank_city", - "swift_bank_state_province_region", - "swift_bank_postal_code", - "swift_ifsc_branch_code", - "swift_intermediary_bank_swift_code_bic", - "swift_intermediary_bank_account_number_iban", - "swift_intermediary_bank_name", - "swift_intermediary_bank_country", - "sepa_iban", - "sepa_beneficiary_bic", - "sepa_beneficiary_legal_name", - "sepa_beneficiary_address_line_1", - "sepa_beneficiary_address_line_2", - "sepa_beneficiary_city", - "sepa_beneficiary_state_province_region", - "sepa_beneficiary_postal_code", - "sepa_beneficiary_country", - "business_industry", - "phone_number", - "tax_id", - "date_of_birth" - ], - "example": "country", - "type": "string" - }, - "operator": { - "enum": [ - "in", - "eq", - "notIn", - "notEq" - ], - "example": "in", - "type": "string" - }, - "values": { - "example": [ - "US", - "GB" - ], - "items": { - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "field", - "operator", - "values" - ], - "type": "object" - } + "enum": [ + "AF", + "AL", + "DZ", + "AS", + "AD", + "AO", + "AI", + "AQ", + "AG", + "AR", + "AM", + "AW", + "AU", + "AT", + "AZ", + "BS", + "BH", + "BD", + "BB", + "BY", + "BE", + "BZ", + "BJ", + "BM", + "BT", + "BO", + "BQ", + "BA", + "BW", + "BV", + "BR", + "IO", + "BN", + "BG", + "BF", + "BI", + "CV", + "KH", + "CM", + "CA", + "KY", + "CF", + "TD", + "CL", + "CN", + "CX", + "CC", + "CO", + "KM", + "CD", + "CG", + "CK", + "CR", + "HR", + "CU", + "CW", + "CY", + "CZ", + "CI", + "DK", + "DJ", + "DM", + "DO", + "EC", + "EG", + "SV", + "GQ", + "ER", + "EE", + "SZ", + "ET", + "FK", + "FO", + "FJ", + "FI", + "FR", + "GF", + "PF", + "TF", + "GA", + "GM", + "GE", + "DE", + "GH", + "GI", + "GR", + "GL", + "GD", + "GP", + "GU", + "GT", + "GG", + "GN", + "GW", + "GY", + "HT", + "HM", + "VA", + "HN", + "HK", + "HU", + "IS", + "IN", + "ID", + "IR", + "IQ", + "IE", + "IM", + "IL", + "IT", + "JM", + "JP", + "JE", + "JO", + "KZ", + "KE", + "KI", + "KP", + "KR", + "KW", + "KG", + "LA", + "LV", + "LB", + "LS", + "LR", + "LY", + "LI", + "LT", + "LU", + "MO", + "MG", + "MW", + "MY", + "MV", + "ML", + "MT", + "MH", + "MQ", + "MR", + "MU", + "YT", + "MX", + "FM", + "MD", + "MC", + "MN", + "ME", + "MS", + "MA", + "MZ", + "MM", + "NA", + "NR", + "NP", + "NL", + "NC", + "NZ", + "NI", + "NE", + "NG", + "NU", + "NF", + "MP", + "NO", + "OM", + "PK", + "PW", + "PS", + "PA", + "PG", + "PY", + "PE", + "PH", + "PN", + "PL", + "PT", + "PR", + "QA", + "MK", + "RO", + "RU", + "RW", + "RE", + "BL", + "SH", + "KN", + "LC", + "MF", + "PM", + "VC", + "WS", + "SM", + "ST", + "SA", + "SN", + "RS", + "SC", + "SL", + "SG", + "SX", + "SK", + "SI", + "SB", + "SO", + "ZA", + "GS", + "SS", + "ES", + "LK", + "SD", + "SR", + "SJ", + "SE", + "CH", + "SY", + "TW", + "TJ", + "TZ", + "TH", + "TL", + "TG", + "TK", + "TO", + "TT", + "TN", + "TR", + "TM", + "TC", + "TV", + "UG", + "UA", + "AE", + "GB", + "UM", + "US", + "UY", + "UZ", + "VU", + "VE", + "VN", + "VG", + "VI", + "WF", + "EH", + "YE", + "ZM", + "ZW", + "AX" + ], + "example": "US" }, - "required": [ - "label", - "regex", - "key" - ], - "type": "object" - }, - "type": "array" - }, - "AvailableNaicsList": { - "items": { - "properties": { - "label": { - "example": "(339910) Jewelry and Silverware Manufacturing", - "type": "string" - }, - "value": { - "example": "339910", - "type": "string" - } + "postal_code": { + "type": [ + "string", + "null" + ], + "example": "Postal code" }, - "required": [ - "label", - "value" - ], - "type": "object" - }, - "type": "array" - }, - "AvailableRails": { - "items": { - "properties": { - "country": { - "enum": [ - "AF", - "AL", - "DZ", - "AS", - "AD", - "AO", - "AI", - "AQ", - "AG", - "AR", - "AM", - "AW", - "AU", - "AT", - "AZ", - "BS", - "BH", - "BD", - "BB", - "BY", - "BE", - "BZ", - "BJ", - "BM", - "BT", - "BO", - "BQ", - "BA", - "BW", - "BV", - "BR", - "IO", - "BN", - "BG", - "BF", - "BI", - "CV", - "KH", - "CM", - "CA", - "KY", - "CF", - "TD", - "CL", - "CN", - "CX", - "CC", - "CO", - "KM", - "CD", - "CG", - "CK", - "CR", - "HR", - "CU", - "CW", - "CY", - "CZ", - "CI", - "DK", - "DJ", - "DM", - "DO", - "EC", - "EG", - "SV", - "GQ", - "ER", - "EE", - "SZ", - "ET", - "FK", - "FO", - "FJ", - "FI", - "FR", - "GF", - "PF", - "TF", - "GA", - "GM", - "GE", - "DE", - "GH", - "GI", - "GR", - "GL", - "GD", - "GP", - "GU", - "GT", - "GG", - "GN", - "GW", - "GY", - "HT", - "HM", - "VA", - "HN", - "HK", - "HU", - "IS", - "IN", - "ID", - "IR", - "IQ", - "IE", - "IM", - "IL", - "IT", - "JM", - "JP", - "JE", - "JO", - "KZ", - "KE", - "KI", - "KP", - "KR", - "KW", - "KG", - "LA", - "LV", - "LB", - "LS", - "LR", - "LY", - "LI", - "LT", - "LU", - "MO", - "MG", - "MW", - "MY", - "MV", - "ML", - "MT", - "MH", - "MQ", - "MR", - "MU", - "YT", - "MX", - "FM", - "MD", - "MC", - "MN", - "ME", - "MS", - "MA", - "MZ", - "MM", - "NA", - "NR", - "NP", - "NL", - "NC", - "NZ", - "NI", - "NE", - "NG", - "NU", - "NF", - "MP", - "NO", - "OM", - "PK", - "PW", - "PS", - "PA", - "PG", - "PY", - "PE", - "PH", - "PN", - "PL", - "PT", - "PR", - "QA", - "MK", - "RO", - "RU", - "RW", - "RE", - "BL", - "SH", - "KN", - "LC", - "MF", - "PM", - "VC", - "WS", - "SM", - "ST", - "SA", - "SN", - "RS", - "SC", - "SL", - "SG", - "SX", - "SK", - "SI", - "SB", - "SO", - "ZA", - "GS", - "SS", - "ES", - "LK", - "SD", - "SR", - "SJ", - "SE", - "CH", - "SY", - "TW", - "TJ", - "TZ", - "TH", - "TL", - "TG", - "TK", - "TO", - "TT", - "TN", - "TR", - "TM", - "TC", - "TV", - "UG", - "UA", - "AE", - "GB", - "UM", - "US", - "UY", - "UZ", - "VU", - "VE", - "VN", - "VG", - "VI", - "WF", - "EH", - "YE", - "ZM", - "ZW", - "AX" - ], - "example": "US", - "type": "string" - }, - "label": { - "example": "Domestic Wire", - "type": "string" - }, - "value": { - "enum": [ - "wire", - "ach", - "pix", - "pix_safe", - "ted", - "spei_bitso", - "transfers_bitso", - "ach_cop_bitso", - "international_swift", - "rtp", - "sepa" - ], - "example": "wire", - "type": "string" - } - }, - "required": [ - "label", - "value", - "country" - ], - "type": "object" - }, - "type": "array" - }, - "BankAccountOut": { - "properties": { - "account_class": { - "enum": [ - "individual", - "business" - ], - "example": "individual", + "spei_protocol": { "type": [ "string", "null" - ] + ], + "enum": [ + "clabe", + "debitcard", + "phonenum" + ], + "description": "For debitcard and phonenum the spei_institution_code is required", + "example": "clabe" }, - "account_number": { - "example": "1001001234", + "spei_institution_code": { "type": [ "string", "null" - ] - }, - "account_type": { - "enum": [ - "checking", - "saving" ], - "example": "checking", + "minLength": 5, + "maxLength": 5, + "example": "40002" + }, + "spei_clabe": { "type": [ "string", "null" - ] + ], + "example": "5482347403740546" }, - "ach_cop_bank_account": { - "example": "12345678", + "transfers_type": { "type": [ "string", "null" - ] + ], + "enum": [ + "CVU", + "CBU", + "ALIAS" + ], + "example": "CVU" }, - "ach_cop_bank_code": { - "example": "051", + "transfers_account": { "type": [ "string", "null" - ] + ], + "example": "BM123123123123" }, "ach_cop_beneficiary_first_name": { - "example": "Fernando", "type": [ "string", "null" - ] + ], + "example": "Fernando" }, "ach_cop_beneficiary_last_name": { - "example": "Guzman Alarc\u00f3n", "type": [ "string", "null" - ] + ], + "example": "Guzman Alarcón" }, "ach_cop_document_id": { - "example": "1661105408", "type": [ "string", "null" - ] + ], + "example": "1661105408" }, "ach_cop_document_type": { - "description": "CC - C\u00e9dula de Ciudadan\u00eda; CE - C\u00e9dula de Extranjer\u00eda; NIT - N\u00famero de Identificaci\u00f3n Tributaria; PASS - Passport; PEP - Permiso Especial de Permanencia", + "type": [ + "string", + "null" + ], "enum": [ "CC", "CE", @@ -1046,202 +628,71 @@ "PASS", "PEP" ], - "example": "CC", + "description": "CC - Cédula de Ciudadanía; CE - Cédula de Extranjería; NIT - Número de Identificación Tributaria; PASS - Passport; PEP - Permiso Especial de Permanencia", + "example": "CC" + }, + "ach_cop_email": { "type": [ "string", "null" - ] + ], + "example": "fernando.guzman@gmail.com" }, - "ach_cop_email": { - "example": "fernando.guzman@gmail.com", + "ach_cop_bank_code": { "type": [ "string", "null" - ] + ], + "example": "051" }, - "address_line_1": { - "example": "Address line 1", + "ach_cop_bank_account": { "type": [ "string", "null" - ] + ], + "example": "12345678" }, - "address_line_2": { - "example": "Address line 2", + "swift_code_bic": { "type": [ "string", "null" - ] + ], + "example": "123456789" }, - "beneficiary_name": { - "example": "Individual full name or business name", - "maxLength": 128, + "swift_account_holder_name": { "type": [ "string", "null" - ] + ], + "maxLength": 50, + "example": "John Doe" }, - "business_industry": { - "enum": [ - "111998", - "112120", - "113310", - "115114", - "541211", - "541810", - "541430", - "541715", - "541930", - "561422", - "561311", - "561612", - "561740", - "561730", - "236115", - "236220", - "237310", - "238210", - "811111", - "812111", - "812112", - "532111", - "624410", - "541922", - "811210", - "812199", - "611110", - "611310", - "611410", - "611710", - "211120", - "212114", - "221310", - "562111", - "562920", - "213112", - "522110", - "522210", - "522320", - "523150", - "523940", - "523999", - "524113", - "813110", - "813211", - "813219", - "551112", - "721110", - "722511", - "722513", - "561510", - "713110", - "713210", - "712110", - "711110", - "711211", - "621111", - "621210", - "622110", - "623110", - "621511", - "623220", - "541940", - "621399", - "621910", - "541110", - "311421", - "337121", - "322220", - "339920", - "334210", - "339930", - "312130", - "334111", - "334118", - "325412", - "339112", - "336110", - "336390", - "315990", - "313110", - "339910", - "516120", - "513130", - "512250", - "519130", - "711410", - "711510", - "531110", - "531120", - "531130", - "531190", - "531210", - "531311", - "531312", - "531320", - "531390", - "454110", - "445110", - "455110", - "457110", - "449210", - "444110", - "459210", - "459120", - "445320", - "458110", - "458210", - "458310", - "455219", - "424210", - "456110", - "446120", - "541511", - "541512", - "541519", - "518210", - "511210", - "517111", - "517112", - "517410", - "481111", - "483111", - "485210", - "488510", - "484121", - "493110", - "423430", - "423690", - "423110", - "423830", - "423840", - "423510", - "424690", - "424990", - "424410", - "424480", - "423940", - "541611", - "541618", - "541330", - "541990", - "541214", - "561499" + "swift_account_number_iban": { + "type": [ + "string", + "null" ], - "example": "541511", + "example": "123456789" + }, + "swift_beneficiary_address_line_1": { "type": [ "string", "null" - ] + ], + "example": "123 MAIN STREET SUITE 100" }, - "city": { - "example": "City", + "swift_beneficiary_address_line_2": { "type": [ "string", "null" - ] + ], + "example": "BUILDING A FLOOR 5" }, - "country": { + "swift_beneficiary_country": { + "type": [ + "string", + "null" + ], "enum": [ "AF", "AL", @@ -1493,210 +944,55 @@ "ZW", "AX" ], - "example": "US", + "example": "MX" + }, + "swift_beneficiary_city": { "type": [ "string", "null" - ] + ], + "example": "MEXICO CITY" }, - "created_at": { - "example": "2021-01-01T00:00:00Z", - "format": "date-time", + "swift_beneficiary_state_province_region": { "type": [ "string", "null" - ] + ], + "example": "MX" }, - "date_of_birth": { - "anyOf": [ - { - "format": "date-time", - "type": "string" - }, - { - "type": "string" - }, - { - "type": "null" - } + "swift_beneficiary_postal_code": { + "type": [ + "string", + "null" ], - "example": "1998-01-01T00:00:00Z" + "example": "11530" }, - "id": { - "example": "ba_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" + "swift_bank_name": { + "type": [ + "string", + "null" + ], + "example": "Banco Regional SA" }, - "name": { - "example": "Bank Account Name", - "type": "string" + "swift_bank_address_line_1": { + "type": [ + "string", + "null" + ], + "example": "123 Main Street, Suite 100, Downtown District, City Center CP 12345" }, - "offramp_wallets": { - "example": [ - { - "address": "TALJN9zTTEL9TVBb4WuTt6wLvPqJZr3hvb", - "external_id": "your_external_id", - "id": "ow_000000000000", - "network": "tron" - } + "swift_bank_address_line_2": { + "type": [ + "string", + "null" ], - "items": { - "properties": { - "address": { - "example": "TALJN9zTTEL9TVBb4WuTt6wLvPqJZr3hvb", - "type": "string" - }, - "circle_wallet_id": { - "example": "01234567-abcd-efgh-ijkl-012345678901", - "type": [ - "string", - "null" - ] - }, - "external_id": { - "example": "your_external_id", - "type": [ - "string", - "null" - ] - }, - "id": { - "example": "ow_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - }, - "network": { - "enum": [ - "tron", - "solana", - "solana_devnet", - "arbitrum", - "base", - "ethereum", - "polygon", - "sepolia", - "arbitrum_sepolia", - "base_sepolia", - "polygon_amoy" - ], - "example": "tron", - "type": "string" - } - }, - "required": [ - "id", - "network", - "address" - ], - "type": "object" - }, - "type": [ - "array", - "null" - ] + "example": "456 Oak Avenue, Building 7, Financial District, Business Center CP 54321" }, - "phone_number": { - "example": "+13055555555", - "type": [ - "string", - "null" - ] - }, - "pix_key": { - "example": "14947677768", - "type": [ - "string", - "null" - ] - }, - "pix_safe_bank_code": { - "example": "00416968", - "pattern": "^\\d{4,8}$", - "type": [ - "string", - "null" - ] - }, - "pix_safe_branch_code": { - "example": "0001", - "pattern": "^\\d{4}(-\\d)?$", - "type": [ - "string", - "null" - ] - }, - "pix_safe_cpf_cnpj": { - "example": "12345678901", - "type": [ - "string", - "null" - ] - }, - "postal_code": { - "example": "Postal code", + "swift_bank_country": { "type": [ "string", "null" - ] - }, - "recipient_relationship": { - "enum": [ - "first_party", - "employee", - "independent_contractor", - "vendor_or_supplier", - "subsidiary_or_affiliate", - "merchant_or_partner", - "customer", - "landlord", - "family", - "other" ], - "example": "vendor_or_supplier", - "type": [ - "string", - "null" - ] - }, - "routing_number": { - "example": "012345678", - "type": [ - "string", - "null" - ] - }, - "sepa_beneficiary_address_line_1": { - "example": "Friedrichstra\u00dfe 12", - "type": [ - "string", - "null" - ] - }, - "sepa_beneficiary_address_line_2": { - "example": "Apt 4B", - "type": [ - "string", - "null" - ] - }, - "sepa_beneficiary_bic": { - "description": "BIC/SWIFT code of the beneficiary bank", - "example": "TRWIBEB1XXX", - "type": [ - "string", - "null" - ] - }, - "sepa_beneficiary_city": { - "example": "Berlin", - "type": [ - "string", - "null" - ] - }, - "sepa_beneficiary_country": { "enum": [ "AF", "AL", @@ -1948,127 +1244,75 @@ "ZW", "AX" ], - "example": "DE", - "type": [ - "string", - "null" - ] - }, - "sepa_beneficiary_legal_name": { - "example": "Hans M\u00fcller", - "maxLength": 128, - "type": [ - "string", - "null" - ] - }, - "sepa_beneficiary_postal_code": { - "example": "10117", - "type": [ - "string", - "null" - ] - }, - "sepa_beneficiary_state_province_region": { - "example": "Berlin", - "type": [ - "string", - "null" - ] + "example": "MX" }, - "sepa_iban": { - "example": "DE89370400440532013000", - "type": [ - "string", - "null" - ] - }, - "spei_clabe": { - "example": "5482347403740546", + "swift_bank_city": { "type": [ "string", "null" - ] + ], + "example": "City" }, - "spei_institution_code": { - "example": "40002", - "maxLength": 5, - "minLength": 5, + "swift_bank_state_province_region": { "type": [ "string", "null" - ] - }, - "spei_protocol": { - "description": "For debitcard and phonenum the spei_institution_code is required", - "enum": [ - "clabe", - "debitcard", - "phonenum" ], - "example": "clabe", - "type": [ - "string", - "null" - ] + "example": "District" }, - "state_province_region": { - "example": "State/Province/Region", + "swift_bank_postal_code": { "type": [ "string", "null" - ] - }, - "status": { - "enum": [ - "verifying", - "approved", - "rejected", - "deprecated" ], - "example": "verifying", - "type": [ - "string", - "null" - ] + "example": "11530" }, - "swift_account_holder_name": { - "example": "John Doe", - "maxLength": 50, + "swift_ifsc_branch_code": { "type": [ "string", "null" - ] + ], + "pattern": "^[A-Z]{4}0[A-Z0-9]{6}$", + "example": "BARB0AHIMCI" }, - "swift_account_number_iban": { - "example": "123456789", - "type": [ - "string", - "null" - ] + "swift_intermediary_bank_swift_code_bic": { + "anyOf": [ + { + "type": "string", + "minLength": 8, + "maxLength": 8 + }, + { + "type": "string", + "minLength": 11, + "maxLength": 11 + }, + { + "type": "null" + } + ], + "example": "AEIBARB1" }, - "swift_bank_address_line_1": { - "example": "123 Main Street, Suite 100, Downtown District, City Center CP 12345", + "swift_intermediary_bank_account_number_iban": { "type": [ "string", "null" - ] + ], + "maxLength": 34, + "example": "123456789" }, - "swift_bank_address_line_2": { - "example": "456 Oak Avenue, Building 7, Financial District, Business Center CP 54321", + "swift_intermediary_bank_name": { "type": [ "string", "null" - ] + ], + "example": "Banco Regional SA" }, - "swift_bank_city": { - "example": "City", + "swift_intermediary_bank_country": { "type": [ "string", "null" - ] - }, - "swift_bank_country": { + ], "enum": [ "AF", "AL", @@ -2320,55 +1564,71 @@ "ZW", "AX" ], - "example": "MX", + "example": "US" + }, + "sepa_iban": { "type": [ "string", "null" - ] + ], + "example": "DE89370400440532013000" }, - "swift_bank_name": { - "example": "Banco Regional SA", + "sepa_beneficiary_bic": { "type": [ "string", "null" - ] + ], + "description": "BIC/SWIFT code of the beneficiary bank", + "example": "TRWIBEB1XXX" }, - "swift_bank_postal_code": { - "example": "11530", + "sepa_beneficiary_legal_name": { "type": [ "string", "null" - ] + ], + "maxLength": 128, + "example": "Hans Müller" }, - "swift_bank_state_province_region": { - "example": "District", + "sepa_beneficiary_address_line_1": { "type": [ "string", "null" - ] + ], + "example": "Friedrichstraße 12" }, - "swift_beneficiary_address_line_1": { - "example": "123 MAIN STREET SUITE 100", + "sepa_beneficiary_address_line_2": { "type": [ "string", "null" - ] + ], + "example": "Apt 4B" }, - "swift_beneficiary_address_line_2": { - "example": "BUILDING A FLOOR 5", + "sepa_beneficiary_city": { "type": [ "string", "null" - ] + ], + "example": "Berlin" }, - "swift_beneficiary_city": { - "example": "MEXICO CITY", + "sepa_beneficiary_state_province_region": { "type": [ "string", "null" - ] + ], + "example": "Berlin" }, - "swift_beneficiary_country": { + "sepa_beneficiary_postal_code": { + "type": [ + "string", + "null" + ], + "example": "10117" + }, + "sepa_beneficiary_country": { + "type": [ + "string", + "null" + ], "enum": [ "AF", "AL", @@ -2620,373 +1880,386 @@ "ZW", "AX" ], - "example": "MX", + "example": "DE" + }, + "business_industry": { "type": [ "string", "null" - ] + ], + "enum": [ + "111998", + "112120", + "113310", + "115114", + "541211", + "541810", + "541430", + "541715", + "541930", + "561422", + "561311", + "561612", + "561740", + "561730", + "236115", + "236220", + "237310", + "238210", + "811111", + "812111", + "812112", + "532111", + "624410", + "541922", + "811210", + "812199", + "611110", + "611310", + "611410", + "611710", + "211120", + "212114", + "221310", + "562111", + "562920", + "213112", + "522110", + "522210", + "522320", + "523150", + "523940", + "523999", + "524113", + "813110", + "813211", + "813219", + "551112", + "721110", + "722511", + "722513", + "561510", + "713110", + "713210", + "712110", + "711110", + "711211", + "621111", + "621210", + "622110", + "623110", + "621511", + "623220", + "541940", + "621399", + "621910", + "541110", + "311421", + "337121", + "322220", + "339920", + "334210", + "339930", + "312130", + "334111", + "334118", + "325412", + "339112", + "336110", + "336390", + "315990", + "313110", + "339910", + "516120", + "513130", + "512250", + "519130", + "711410", + "711510", + "531110", + "531120", + "531130", + "531190", + "531210", + "531311", + "531312", + "531320", + "531390", + "454110", + "445110", + "455110", + "457110", + "449210", + "444110", + "459210", + "459120", + "445320", + "458110", + "458210", + "458310", + "455219", + "424210", + "456110", + "446120", + "541511", + "541512", + "541519", + "518210", + "511210", + "517111", + "517112", + "517410", + "481111", + "483111", + "485210", + "488510", + "484121", + "493110", + "423430", + "423690", + "423110", + "423830", + "423840", + "423510", + "424690", + "424990", + "424410", + "424480", + "423940", + "541611", + "541618", + "541330", + "541990", + "541214", + "561499" + ], + "example": "541511" }, - "swift_beneficiary_postal_code": { - "example": "11530", + "phone_number": { "type": [ "string", "null" - ] + ], + "example": "+13055555555" }, - "swift_beneficiary_state_province_region": { - "example": "MX", + "tax_id": { "type": [ "string", "null" - ] + ], + "maxLength": 32, + "example": "536804398" }, - "swift_code_bic": { - "example": "123456789", + "date_of_birth": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "string" + }, + { + "type": "null" + } + ], + "example": "1998-01-01T00:00:00Z" + }, + "pix_safe_bank_code": { "type": [ "string", "null" - ] + ], + "pattern": "^\\d{4,8}$", + "example": "00416968" }, - "swift_ifsc_branch_code": { - "example": "BARB0AHIMCI", - "pattern": "^[A-Z]{4}0[A-Z0-9]{6}$", + "pix_safe_branch_code": { "type": [ "string", "null" - ] + ], + "pattern": "^\\d{4}(-\\d)?$", + "example": "0001" }, - "swift_intermediary_bank_account_number_iban": { - "example": "123456789", - "maxLength": 34, + "pix_safe_cpf_cnpj": { "type": [ "string", "null" - ] + ], + "example": "12345678901" }, - "swift_intermediary_bank_country": { - "enum": [ - "AF", - "AL", - "DZ", - "AS", - "AD", - "AO", - "AI", - "AQ", - "AG", - "AR", - "AM", - "AW", - "AU", - "AT", - "AZ", - "BS", - "BH", - "BD", - "BB", - "BY", - "BE", - "BZ", - "BJ", - "BM", - "BT", - "BO", - "BQ", - "BA", - "BW", - "BV", - "BR", - "IO", - "BN", - "BG", - "BF", - "BI", - "CV", - "KH", - "CM", - "CA", - "KY", - "CF", - "TD", - "CL", - "CN", - "CX", - "CC", - "CO", - "KM", - "CD", - "CG", - "CK", - "CR", - "HR", - "CU", - "CW", - "CY", - "CZ", - "CI", - "DK", - "DJ", - "DM", - "DO", - "EC", - "EG", - "SV", - "GQ", - "ER", - "EE", - "SZ", - "ET", - "FK", - "FO", - "FJ", - "FI", - "FR", - "GF", - "PF", - "TF", - "GA", - "GM", - "GE", - "DE", - "GH", - "GI", - "GR", - "GL", - "GD", - "GP", - "GU", - "GT", - "GG", - "GN", - "GW", - "GY", - "HT", - "HM", - "VA", - "HN", - "HK", - "HU", - "IS", - "IN", - "ID", - "IR", - "IQ", - "IE", - "IM", - "IL", - "IT", - "JM", - "JP", - "JE", - "JO", - "KZ", - "KE", - "KI", - "KP", - "KR", - "KW", - "KG", - "LA", - "LV", - "LB", - "LS", - "LR", - "LY", - "LI", - "LT", - "LU", - "MO", - "MG", - "MW", - "MY", - "MV", - "ML", - "MT", - "MH", - "MQ", - "MR", - "MU", - "YT", - "MX", - "FM", - "MD", - "MC", - "MN", - "ME", - "MS", - "MA", - "MZ", - "MM", - "NA", - "NR", - "NP", - "NL", - "NC", - "NZ", - "NI", - "NE", - "NG", - "NU", - "NF", - "MP", - "NO", - "OM", - "PK", - "PW", - "PS", - "PA", - "PG", - "PY", - "PE", - "PH", - "PN", - "PL", - "PT", - "PR", - "QA", - "MK", - "RO", - "RU", - "RW", - "RE", - "BL", - "SH", - "KN", - "LC", - "MF", - "PM", - "VC", - "WS", - "SM", - "ST", - "SA", - "SN", - "RS", - "SC", - "SL", - "SG", - "SX", - "SK", - "SI", - "SB", - "SO", - "ZA", - "GS", - "SS", - "ES", - "LK", - "SD", - "SR", - "SJ", - "SE", - "CH", - "SY", - "TW", - "TJ", - "TZ", - "TH", - "TL", - "TG", - "TK", - "TO", - "TT", - "TN", - "TR", - "TM", - "TC", - "TV", - "UG", - "UA", - "AE", - "GB", - "UM", - "US", - "UY", - "UZ", - "VU", - "VE", - "VN", - "VG", - "VI", - "WF", - "EH", - "YE", - "ZM", - "ZW", - "AX" + "ted_bank_code": { + "type": [ + "string", + "null" ], - "example": "US", + "pattern": "^\\d{3,5}$", + "example": "033" + }, + "ted_branch_code": { "type": [ "string", "null" - ] + ], + "pattern": "^\\d{4}(-\\d)?$", + "example": "0001" }, - "swift_intermediary_bank_name": { - "example": "Banco Regional SA", + "ted_cpf_cnpj": { "type": [ "string", "null" - ] + ], + "example": "12345678901" }, - "swift_intermediary_bank_swift_code_bic": { - "anyOf": [ - { - "maxLength": 8, - "minLength": 8, - "type": "string" - }, - { - "maxLength": 11, - "minLength": 11, - "type": "string" - }, - { - "type": "null" - } + "tron_wallet_hash": { + "type": [ + "string", + "null" ], - "example": "AEIBARB1" + "example": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t" }, - "swift_payment_code": { - "enum": [ - "ae_swift_str", - "ae_swift_tcs", - "ae_swift_ipc", - "ae_swift_ifs", - "ae_swift_sts", - "ae_swift_pms", - "ae_swift_its", - "ae_swift_gde", - "ae_swift_ots", - "ae_swift_tts", - "bh_swift_afa", - "bh_swift_afl", - "bh_swift_ats", - "bh_swift_cea", - "bh_swift_cel", - "bh_swift_chc", - "bh_swift_dla", - "bh_swift_dlf", - "bh_swift_dll", - "bh_swift_doe", - "bh_swift_dsa", - "bh_swift_dsf", - "bh_swift_dsl", - "bh_swift_fam", - "bh_swift_fda", - "bh_swift_fdl", - "bh_swift_fia", - "bh_swift_fil", - "bh_swift_fis", - "bh_swift_fsa", - "bh_swift_fsl", - "bh_swift_gde", - "bh_swift_gdi", - "bh_swift_gms", - "bh_swift_gos", - "bh_swift_gri", - "bh_swift_ifs", - "bh_swift_igd", - "bh_swift_iid", + "offramp_wallets": { + "type": [ + "array", + "null" + ], + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "ow_000000000000" + }, + "external_id": { + "type": [ + "string", + "null" + ], + "example": "your_external_id" + }, + "circle_wallet_id": { + "type": [ + "string", + "null" + ], + "example": "01234567-abcd-efgh-ijkl-012345678901" + }, + "network": { + "type": "string", + "enum": [ + "tron", + "solana", + "solana_devnet", + "arbitrum", + "base", + "ethereum", + "polygon", + "sepolia", + "arbitrum_sepolia", + "base_sepolia", + "polygon_amoy" + ], + "example": "tron" + }, + "address": { + "type": "string", + "example": "TALJN9zTTEL9TVBb4WuTt6wLvPqJZr3hvb" + } + }, + "required": [ + "id", + "network", + "address" + ] + }, + "example": [ + { + "address": "TALJN9zTTEL9TVBb4WuTt6wLvPqJZr3hvb", + "id": "ow_000000000000", + "network": "tron", + "external_id": "your_external_id" + } + ] + }, + "status": { + "type": [ + "string", + "null" + ], + "enum": [ + "verifying", + "approved", + "rejected", + "deprecated" + ], + "example": "verifying" + }, + "recipient_relationship": { + "type": [ + "string", + "null" + ], + "enum": [ + "first_party", + "employee", + "independent_contractor", + "vendor_or_supplier", + "subsidiary_or_affiliate", + "merchant_or_partner", + "customer", + "landlord", + "family", + "other" + ], + "example": "vendor_or_supplier" + }, + "swift_payment_code": { + "type": [ + "string", + "null" + ], + "enum": [ + "ae_swift_str", + "ae_swift_tcs", + "ae_swift_ipc", + "ae_swift_ifs", + "ae_swift_sts", + "ae_swift_pms", + "ae_swift_its", + "ae_swift_gde", + "ae_swift_ots", + "ae_swift_tts", + "bh_swift_afa", + "bh_swift_afl", + "bh_swift_ats", + "bh_swift_cea", + "bh_swift_cel", + "bh_swift_chc", + "bh_swift_dla", + "bh_swift_dlf", + "bh_swift_dll", + "bh_swift_doe", + "bh_swift_dsa", + "bh_swift_dsf", + "bh_swift_dsl", + "bh_swift_fam", + "bh_swift_fda", + "bh_swift_fdl", + "bh_swift_fia", + "bh_swift_fil", + "bh_swift_fis", + "bh_swift_fsa", + "bh_swift_fsl", + "bh_swift_gde", + "bh_swift_gdi", + "bh_swift_gms", + "bh_swift_gos", + "bh_swift_gri", + "bh_swift_ifs", + "bh_swift_igd", + "bh_swift_iid", "bh_swift_ins", "bh_swift_iod", "bh_swift_iol", @@ -3974,13265 +3247,5526 @@ "za_swift_10301", "za_swift_27201" ], - "example": "bh_swift_afl", - "type": [ - "string", - "null" - ] - }, - "tax_id": { - "example": "536804398", - "maxLength": 32, - "type": [ - "string", - "null" - ] - }, - "ted_bank_code": { - "example": "033", - "pattern": "^\\d{3,5}$", - "type": [ - "string", - "null" - ] - }, - "ted_branch_code": { - "example": "0001", - "pattern": "^\\d{4}(-\\d)?$", - "type": [ - "string", - "null" - ] - }, - "ted_cpf_cnpj": { - "example": "12345678901", - "type": [ - "string", - "null" - ] - }, - "transfers_account": { - "example": "BM123123123123", - "type": [ - "string", - "null" - ] - }, - "transfers_type": { - "enum": [ - "CVU", - "CBU", - "ALIAS" - ], - "example": "CVU", - "type": [ - "string", - "null" - ] + "example": "bh_swift_afl" }, - "tron_wallet_hash": { - "example": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t", + "created_at": { "type": [ "string", "null" - ] - }, - "type": { - "enum": [ - "wire", - "ach", - "pix", - "pix_safe", - "ted", - "spei_bitso", - "transfers_bitso", - "ach_cop_bitso", - "international_swift", - "rtp", - "sepa" ], - "example": "wire", - "type": "string" + "format": "date-time", + "example": "2021-01-01T00:00:00Z" } }, "required": [ + "webhook_event", "id", "type", "name" - ], - "type": "object" + ] }, - "BankAccountWebhookOut": { + "PayinNewWebhookOut": { + "type": "object", "properties": { - "account_class": { + "webhook_event": { + "type": "string", "enum": [ - "individual", - "business" - ], - "example": "individual", - "type": [ - "string", - "null" + "payin.new" ] }, - "account_number": { - "example": "1001001234", - "type": [ - "string", - "null" - ] + "id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "pi_000000000000" }, - "account_type": { + "status": { + "type": "string", "enum": [ - "checking", - "saving" + "processing", + "on_hold", + "failed", + "refunded", + "completed" ], - "example": "checking", - "type": [ - "string", - "null" - ] - }, - "ach_cop_bank_account": { - "example": "12345678", - "type": [ - "string", - "null" - ] - }, - "ach_cop_bank_code": { - "example": "051", - "type": [ - "string", - "null" - ] - }, - "ach_cop_beneficiary_first_name": { - "example": "Fernando", - "type": [ - "string", - "null" - ] + "description": "Payin general status", + "example": "processing" }, - "ach_cop_beneficiary_last_name": { - "example": "Guzman Alarc\u00f3n", + "pix_code": { "type": [ "string", "null" - ] + ], + "description": "PIX code", + "example": "00020101021226790014br.gov.bcb.pix2557brcode.starkinfra.com/v2/bcf07f6c4110454e9fd6f120bab13e835204000053039865802BR5915Blind Pay, Inc.6010Vila Velha62070503***6304BCAB" }, - "ach_cop_document_id": { - "example": "1661105408", + "memo_code": { "type": [ "string", "null" - ] - }, - "ach_cop_document_type": { - "description": "CC - C\u00e9dula de Ciudadan\u00eda; CE - C\u00e9dula de Extranjer\u00eda; NIT - N\u00famero de Identificaci\u00f3n Tributaria; PASS - Passport; PEP - Permiso Especial de Permanencia", - "enum": [ - "CC", - "CE", - "NIT", - "PASS", - "PEP" ], - "example": "CC", - "type": [ - "string", - "null" - ] + "description": "Memo code", + "example": "8K45GHBNT6BQ6462" }, - "ach_cop_email": { - "example": "fernando.guzman@gmail.com", + "clabe": { "type": [ "string", "null" - ] + ], + "description": "CLABE code", + "example": "014027000000000008" }, - "address_line_1": { - "example": "Address line 1", - "type": [ - "string", - "null" - ] + "partner_fee": { + "type": "integer", + "minimum": 0, + "default": 0, + "description": "Payin partner fee amount in cents", + "example": 25000 }, - "address_line_2": { - "example": "Address line 2", - "type": [ - "string", - "null" + "tracking_complete": { + "type": "object", + "properties": { + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Complete step", + "example": "on_hold" + }, + "transaction_hash": { + "type": [ + "string", + "null" + ], + "description": "Complete transaction hash", + "example": "0x123...890" + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "description": "Complete completed date", + "example": "2011-10-05T14:48:00.000Z" + } + }, + "required": [ + "step" ] }, - "beneficiary_name": { - "example": "Individual full name or business name", - "maxLength": 128, - "type": [ - "string", - "null" + "tracking_payment": { + "type": "object", + "properties": { + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Payment step", + "example": "on_hold" + }, + "provider_name": { + "type": [ + "string", + "null" + ], + "description": "Payment provider name", + "example": "blockchain" + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "description": "Payment completed date", + "example": "2011-10-05T14:48:00.000Z" + }, + "review_source": { + "type": [ + "string", + "null" + ], + "description": "Risk source that sent this payin to manual review", + "example": "seon_review" + }, + "review_context": { + "type": [ + "object", + "null" + ], + "additionalProperties": {}, + "description": "Structured risk context for manual review" + }, + "approved_risk_sources": { + "type": [ + "array", + "null" + ], + "items": { + "type": "string" + }, + "description": "Risk sources already approved by an analyst", + "example": [ + "seon_review" + ] + } + }, + "required": [ + "step" ] }, - "business_industry": { - "enum": [ - "111998", - "112120", - "113310", - "115114", - "541211", - "541810", - "541430", - "541715", - "541930", - "561422", - "561311", - "561612", - "561740", - "561730", - "236115", - "236220", - "237310", - "238210", - "811111", - "812111", - "812112", - "532111", - "624410", - "541922", - "811210", - "812199", - "611110", - "611310", - "611410", - "611710", - "211120", - "212114", - "221310", - "562111", - "562920", - "213112", - "522110", - "522210", - "522320", - "523150", - "523940", - "523999", - "524113", - "813110", - "813211", - "813219", - "551112", - "721110", - "722511", - "722513", - "561510", - "713110", - "713210", - "712110", - "711110", - "711211", - "621111", - "621210", - "622110", - "623110", - "621511", - "623220", - "541940", - "621399", - "621910", - "541110", - "311421", - "337121", - "322220", - "339920", - "334210", - "339930", - "312130", - "334111", - "334118", - "325412", - "339112", - "336110", - "336390", - "315990", - "313110", - "339910", - "516120", - "513130", - "512250", - "519130", - "711410", - "711510", - "531110", - "531120", - "531130", - "531190", - "531210", - "531311", - "531312", - "531320", - "531390", - "454110", - "445110", - "455110", - "457110", - "449210", - "444110", - "459210", - "459120", - "445320", - "458110", - "458210", - "458310", - "455219", - "424210", - "456110", - "446120", - "541511", - "541512", - "541519", - "518210", - "511210", - "517111", - "517112", - "517410", - "481111", - "483111", - "485210", - "488510", - "484121", - "493110", - "423430", - "423690", - "423110", - "423830", - "423840", - "423510", - "424690", - "424990", - "424410", - "424480", - "423940", - "541611", - "541618", - "541330", - "541990", - "541214", - "561499" + "tracking_transaction": { + "type": "object", + "properties": { + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Payin transaction step", + "example": "processing" + }, + "status": { + "type": [ + "string", + "null" + ], + "enum": [ + "failed", + "completed" + ], + "description": "Payin transaction status", + "example": "failed" + }, + "external_id": { + "type": [ + "string", + "null" + ], + "description": "Payin transaction external id", + "example": "12345678" + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "description": "Payin transaction completed date", + "example": "2011-10-05T14:48:00.000Z" + }, + "transaction_hash": { + "type": [ + "string", + "null" + ], + "description": "Blockchain transaction hash", + "example": "0x123...890" + }, + "provider_name": { + "type": [ + "string", + "null" + ], + "enum": [ + "Nvio Pagos", + "Brex", + "Stark Bank", + "JPMorgan Chase", + "HSBC", + "Inter", + "JP Morgan Chase", + "Bitso", + "Citi", + "CFSB", + "Triple A Technologies", + "Portage Bank" + ], + "description": "Payment provider name", + "example": "HSBC" + }, + "provider_transaction_id": { + "type": [ + "string", + "null" + ], + "description": "Payment provider transaction id", + "example": "" + }, + "sender_name": { + "type": [ + "string", + "null" + ], + "example": "John Doe Smith" + }, + "sender_bank_name": { + "type": [ + "string", + "null" + ], + "example": "Bank of America" + }, + "sender_tax_id": { + "type": [ + "string", + "null" + ], + "example": "123.456.789-10" + }, + "sender_bank_code": { + "type": [ + "string", + "null" + ], + "example": "00416968" + }, + "sender_account_number": { + "type": [ + "string", + "null" + ], + "example": "1234567890" + }, + "end_to_end_id": { + "type": [ + "string", + "null" + ], + "description": "BACEN Pix end-to-end transaction ID (govt Pix ID)", + "example": "E20018183202603311320vm6ALFpJpsS" + }, + "trace_number": { + "type": [ + "string", + "null" + ], + "example": "1234567890" + }, + "transaction_reference": { + "type": [ + "string", + "null" + ], + "example": "1234567890" + }, + "description": { + "type": [ + "string", + "null" + ], + "example": "Payment from John Doe Smith" + }, + "pse_instruction": { + "type": [ + "object", + "null" + ], + "properties": { + "payment_link": { + "type": "string", + "description": "PSE payment link URL", + "example": "https://pse.example.com/payment/abc123" + }, + "fid": { + "type": "string", + "description": "PSE funding identifier for webhook matching", + "example": "fid_abc123" + }, + "full_name": { + "type": "string", + "description": "PSE payer full name", + "example": "Juan Pérez García" + }, + "tax_id": { + "type": "string", + "description": "PSE payer document number", + "example": "1234567890" + }, + "document_type": { + "type": "string", + "enum": [ + "CC", + "NIT" + ], + "description": "PSE payer document type", + "example": "CC" + }, + "phone": { + "type": "string", + "description": "PSE payer phone number", + "example": "+573001234567" + }, + "email": { + "type": "string", + "description": "PSE payer email", + "example": "juan@example.com" + }, + "bank_code": { + "type": [ + "string", + "null" + ], + "description": "PSE payer bank code", + "example": "1007" + } + }, + "required": [ + "payment_link", + "fid", + "full_name", + "tax_id", + "document_type", + "phone", + "email" + ] + }, + "transfers_instruction": { + "type": [ + "object", + "null" + ], + "properties": { + "account": { + "type": "string", + "description": "CVU/CBU/Alias account number", + "example": "0000003100012389237485" + }, + "type": { + "type": "string", + "enum": [ + "CVU", + "CBU", + "ALIAS" + ], + "description": "Account type (CVU, CBU, or ALIAS)", + "example": "CVU" + }, + "tax_id": { + "type": [ + "string", + "null" + ], + "description": "CUIT/CUIL (normalized, digits only)", + "example": "20123456783" + } + }, + "required": [ + "account", + "type" + ] + }, + "ted_instruction": { + "type": [ + "object", + "null" + ], + "properties": { + "beneficiary_name": { + "type": "string", + "example": "Blind Pay, Inc." + }, + "tax_id": { + "type": "string", + "example": "57.599.376/0001-81" + }, + "bank_code": { + "type": "string", + "example": "665" + }, + "bank_name": { + "type": "string", + "example": "STARK BANK S.A." + }, + "branch_code": { + "type": "string", + "example": "5340" + }, + "account_number": { + "type": "string", + "example": "01011707084-8" + }, + "account_type": { + "type": "string", + "example": "checking" + } + }, + "required": [ + "beneficiary_name", + "tax_id", + "bank_code", + "bank_name", + "branch_code", + "account_number", + "account_type" + ] + } + }, + "required": [ + "step" + ] + }, + "billing_fee_amount": { + "type": [ + "number", + "null" ], - "example": "541511", + "description": "Billing fee in cents (charged at the end of the month)", + "example": 50 + }, + "transaction_fee_amount": { "type": [ - "string", + "number", "null" + ], + "description": "Transaction fee in cents (percentage-based fee)", + "example": 100 + }, + "blindpay_bank_details": { + "type": "object", + "properties": { + "routing_number": { + "type": "string", + "default": "121145349", + "example": "121145349" + }, + "account_number": { + "type": "string", + "default": "621327727210181", + "example": "621327727210181" + }, + "account_type": { + "type": "string", + "default": "Business checking", + "example": "Business checking" + }, + "swift_bic_code": { + "type": [ + "string", + "null" + ], + "default": "CHASUS33", + "example": "CHASUS33" + }, + "ach": { + "type": [ + "object", + "null" + ], + "properties": { + "routing_number": { + "type": "string", + "example": "123456789" + }, + "account_number": { + "type": "string", + "example": "123456789" + } + }, + "required": [ + "routing_number", + "account_number" + ] + }, + "wire": { + "type": [ + "object", + "null" + ], + "properties": { + "routing_number": { + "type": "string", + "example": "123456789" + }, + "account_number": { + "type": "string", + "example": "123456789" + } + }, + "required": [ + "routing_number", + "account_number" + ] + }, + "rtp": { + "type": [ + "object", + "null" + ], + "properties": { + "routing_number": { + "type": "string", + "example": "123456789" + }, + "account_number": { + "type": "string", + "example": "123456789" + } + }, + "required": [ + "routing_number", + "account_number" + ] + }, + "beneficiary": { + "type": "object", + "properties": { + "name": { + "type": "string", + "default": "BlindPay, Inc.", + "example": "BlindPay, Inc." + }, + "address_line_1": { + "type": "string", + "default": "8 The Green, #19364", + "example": "8 The Green, #19364" + }, + "address_line_2": { + "type": "string", + "default": "Dover, DE 19901", + "example": "Dover, DE 19901" + } + } + }, + "receiving_bank": { + "type": "object", + "properties": { + "name": { + "type": "string", + "default": "CFSB", + "example": "CFSB" + }, + "address_line_1": { + "type": "string", + "default": "1 Letterman Drive, Building A, Suite A4-700", + "example": "1 Letterman Drive, Building A, Suite A4-700" + }, + "address_line_2": { + "type": "string", + "default": "San Francisco, CA 94129", + "example": "San Francisco, CA 94129" + } + } + }, + "swift_account_number": { + "type": [ + "string", + "null" + ], + "example": "GB50TCCL04140449730892" + }, + "swift_receiving_bank": { + "type": [ + "object", + "null" + ], + "properties": { + "name": { + "type": [ + "string", + "null" + ], + "example": "JPMorgan Chase" + }, + "address_line_1": { + "type": [ + "string", + "null" + ], + "example": "270 Park Ave" + }, + "address_line_2": { + "type": [ + "string", + "null" + ], + "example": "New York, NY, 10017-2070" + } + } + } + }, + "required": [ + "beneficiary", + "receiving_bank" ] }, - "city": { - "example": "City", + "customer_id": { + "type": [ + "string", + "null" + ], + "minLength": 15, + "maxLength": 15, + "example": "re_000000000000" + }, + "receiver_amount": { + "type": [ + "number", + "null" + ], + "description": "10.10 USDC", + "example": 1010 + }, + "payment_method": { "type": [ "string", "null" + ], + "enum": [ + "ach", + "wire", + "pix", + "ted", + "spei", + "transfers", + "pse", + "international_swift", + "rtp" + ], + "example": "pix" + }, + "sender_amount": { + "type": [ + "number", + "null" + ], + "description": "52.40 BRL needs to be sent in a pix transfer", + "example": 5240 + } + }, + "required": [ + "webhook_event", + "id", + "status", + "tracking_complete", + "tracking_payment", + "tracking_transaction", + "blindpay_bank_details" + ] + }, + "PayinCompleteWebhookOut": { + "type": "object", + "properties": { + "webhook_event": { + "type": "string", + "enum": [ + "payin.complete" ] }, - "country": { + "id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "pi_000000000000" + }, + "status": { + "type": "string", "enum": [ - "AF", - "AL", - "DZ", - "AS", - "AD", - "AO", - "AI", - "AQ", - "AG", - "AR", - "AM", - "AW", - "AU", - "AT", - "AZ", - "BS", - "BH", - "BD", - "BB", - "BY", - "BE", - "BZ", - "BJ", - "BM", - "BT", - "BO", - "BQ", - "BA", - "BW", - "BV", - "BR", - "IO", - "BN", - "BG", - "BF", - "BI", - "CV", - "KH", - "CM", - "CA", - "KY", - "CF", - "TD", - "CL", - "CN", - "CX", - "CC", - "CO", - "KM", - "CD", - "CG", - "CK", - "CR", - "HR", - "CU", - "CW", - "CY", - "CZ", - "CI", - "DK", - "DJ", - "DM", - "DO", - "EC", - "EG", - "SV", - "GQ", - "ER", - "EE", - "SZ", - "ET", - "FK", - "FO", - "FJ", - "FI", - "FR", - "GF", - "PF", - "TF", - "GA", - "GM", - "GE", - "DE", - "GH", - "GI", - "GR", - "GL", - "GD", - "GP", - "GU", - "GT", - "GG", - "GN", - "GW", - "GY", - "HT", - "HM", - "VA", - "HN", - "HK", - "HU", - "IS", - "IN", - "ID", - "IR", - "IQ", - "IE", - "IM", - "IL", - "IT", - "JM", - "JP", - "JE", - "JO", - "KZ", - "KE", - "KI", - "KP", - "KR", - "KW", - "KG", - "LA", - "LV", - "LB", - "LS", - "LR", - "LY", - "LI", - "LT", - "LU", - "MO", - "MG", - "MW", - "MY", - "MV", - "ML", - "MT", - "MH", - "MQ", - "MR", - "MU", - "YT", - "MX", - "FM", - "MD", - "MC", - "MN", - "ME", - "MS", - "MA", - "MZ", - "MM", - "NA", - "NR", - "NP", - "NL", - "NC", - "NZ", - "NI", - "NE", - "NG", - "NU", - "NF", - "MP", - "NO", - "OM", - "PK", - "PW", - "PS", - "PA", - "PG", - "PY", - "PE", - "PH", - "PN", - "PL", - "PT", - "PR", - "QA", - "MK", - "RO", - "RU", - "RW", - "RE", - "BL", - "SH", - "KN", - "LC", - "MF", - "PM", - "VC", - "WS", - "SM", - "ST", - "SA", - "SN", - "RS", - "SC", - "SL", - "SG", - "SX", - "SK", - "SI", - "SB", - "SO", - "ZA", - "GS", - "SS", - "ES", - "LK", - "SD", - "SR", - "SJ", - "SE", - "CH", - "SY", - "TW", - "TJ", - "TZ", - "TH", - "TL", - "TG", - "TK", - "TO", - "TT", - "TN", - "TR", - "TM", - "TC", - "TV", - "UG", - "UA", - "AE", - "GB", - "UM", - "US", - "UY", - "UZ", - "VU", - "VE", - "VN", - "VG", - "VI", - "WF", - "EH", - "YE", - "ZM", - "ZW", - "AX" + "processing", + "on_hold", + "failed", + "refunded", + "completed" ], - "example": "US", - "type": [ - "string", - "null" - ] + "description": "Payin general status", + "example": "processing" }, - "created_at": { - "example": "2021-01-01T00:00:00Z", - "format": "date-time", + "pix_code": { "type": [ "string", "null" - ] - }, - "date_of_birth": { - "anyOf": [ - { - "format": "date-time", - "type": "string" - }, - { - "type": "string" - }, - { - "type": "null" - } - ], - "example": "1998-01-01T00:00:00Z" - }, - "id": { - "example": "ba_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - }, - "name": { - "example": "Bank Account Name", - "type": "string" - }, - "offramp_wallets": { - "example": [ - { - "address": "TALJN9zTTEL9TVBb4WuTt6wLvPqJZr3hvb", - "external_id": "your_external_id", - "id": "ow_000000000000", - "network": "tron" - } ], - "items": { - "properties": { - "address": { - "example": "TALJN9zTTEL9TVBb4WuTt6wLvPqJZr3hvb", - "type": "string" - }, - "circle_wallet_id": { - "example": "01234567-abcd-efgh-ijkl-012345678901", - "type": [ - "string", - "null" - ] - }, - "external_id": { - "example": "your_external_id", - "type": [ - "string", - "null" - ] - }, - "id": { - "example": "ow_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - }, - "network": { - "enum": [ - "tron", - "solana", - "solana_devnet", - "arbitrum", - "base", - "ethereum", - "polygon", - "sepolia", - "arbitrum_sepolia", - "base_sepolia", - "polygon_amoy" - ], - "example": "tron", - "type": "string" - } - }, - "required": [ - "id", - "network", - "address" - ], - "type": "object" - }, - "type": [ - "array", - "null" - ] - }, - "phone_number": { - "example": "+13055555555", - "type": [ - "string", - "null" - ] - }, - "pix_key": { - "example": "14947677768", - "type": [ - "string", - "null" - ] - }, - "pix_safe_bank_code": { - "example": "00416968", - "pattern": "^\\d{4,8}$", - "type": [ - "string", - "null" - ] - }, - "pix_safe_branch_code": { - "example": "0001", - "pattern": "^\\d{4}(-\\d)?$", - "type": [ - "string", - "null" - ] - }, - "pix_safe_cpf_cnpj": { - "example": "12345678901", - "type": [ - "string", - "null" - ] + "description": "PIX code", + "example": "00020101021226790014br.gov.bcb.pix2557brcode.starkinfra.com/v2/bcf07f6c4110454e9fd6f120bab13e835204000053039865802BR5915Blind Pay, Inc.6010Vila Velha62070503***6304BCAB" }, - "postal_code": { - "example": "Postal code", + "memo_code": { "type": [ "string", "null" - ] - }, - "recipient_relationship": { - "enum": [ - "first_party", - "employee", - "independent_contractor", - "vendor_or_supplier", - "subsidiary_or_affiliate", - "merchant_or_partner", - "customer", - "landlord", - "family", - "other" ], - "example": "vendor_or_supplier", - "type": [ - "string", - "null" - ] - }, - "routing_number": { - "example": "012345678", - "type": [ - "string", - "null" - ] + "description": "Memo code", + "example": "8K45GHBNT6BQ6462" }, - "sepa_beneficiary_address_line_1": { - "example": "Friedrichstra\u00dfe 12", + "clabe": { "type": [ "string", "null" - ] + ], + "description": "CLABE code", + "example": "014027000000000008" }, - "sepa_beneficiary_address_line_2": { - "example": "Apt 4B", - "type": [ - "string", - "null" - ] + "partner_fee": { + "type": "integer", + "minimum": 0, + "default": 0, + "description": "Payin partner fee amount in cents", + "example": 25000 }, - "sepa_beneficiary_bic": { - "description": "BIC/SWIFT code of the beneficiary bank", - "example": "TRWIBEB1XXX", - "type": [ - "string", - "null" + "tracking_complete": { + "type": "object", + "properties": { + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Complete step", + "example": "on_hold" + }, + "transaction_hash": { + "type": [ + "string", + "null" + ], + "description": "Complete transaction hash", + "example": "0x123...890" + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "description": "Complete completed date", + "example": "2011-10-05T14:48:00.000Z" + } + }, + "required": [ + "step" ] }, - "sepa_beneficiary_city": { - "example": "Berlin", - "type": [ - "string", - "null" + "tracking_payment": { + "type": "object", + "properties": { + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Payment step", + "example": "on_hold" + }, + "provider_name": { + "type": [ + "string", + "null" + ], + "description": "Payment provider name", + "example": "blockchain" + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "description": "Payment completed date", + "example": "2011-10-05T14:48:00.000Z" + }, + "review_source": { + "type": [ + "string", + "null" + ], + "description": "Risk source that sent this payin to manual review", + "example": "seon_review" + }, + "review_context": { + "type": [ + "object", + "null" + ], + "additionalProperties": {}, + "description": "Structured risk context for manual review" + }, + "approved_risk_sources": { + "type": [ + "array", + "null" + ], + "items": { + "type": "string" + }, + "description": "Risk sources already approved by an analyst", + "example": [ + "seon_review" + ] + } + }, + "required": [ + "step" ] }, - "sepa_beneficiary_country": { - "enum": [ - "AF", - "AL", - "DZ", - "AS", - "AD", - "AO", - "AI", - "AQ", - "AG", - "AR", - "AM", - "AW", - "AU", - "AT", - "AZ", - "BS", - "BH", - "BD", - "BB", - "BY", - "BE", - "BZ", - "BJ", - "BM", - "BT", - "BO", - "BQ", - "BA", - "BW", - "BV", - "BR", - "IO", - "BN", - "BG", - "BF", - "BI", - "CV", - "KH", - "CM", - "CA", - "KY", - "CF", - "TD", - "CL", - "CN", - "CX", - "CC", - "CO", - "KM", - "CD", - "CG", - "CK", - "CR", - "HR", - "CU", - "CW", - "CY", - "CZ", - "CI", - "DK", - "DJ", - "DM", - "DO", - "EC", - "EG", - "SV", - "GQ", - "ER", - "EE", - "SZ", - "ET", - "FK", - "FO", - "FJ", - "FI", - "FR", - "GF", - "PF", - "TF", - "GA", - "GM", - "GE", - "DE", - "GH", - "GI", - "GR", - "GL", - "GD", - "GP", - "GU", - "GT", - "GG", - "GN", - "GW", - "GY", - "HT", - "HM", - "VA", - "HN", - "HK", - "HU", - "IS", - "IN", - "ID", - "IR", - "IQ", - "IE", - "IM", - "IL", - "IT", - "JM", - "JP", - "JE", - "JO", - "KZ", - "KE", - "KI", - "KP", - "KR", - "KW", - "KG", - "LA", - "LV", - "LB", - "LS", - "LR", - "LY", - "LI", - "LT", - "LU", - "MO", - "MG", - "MW", - "MY", - "MV", - "ML", - "MT", - "MH", - "MQ", - "MR", - "MU", - "YT", - "MX", - "FM", - "MD", - "MC", - "MN", - "ME", - "MS", - "MA", - "MZ", - "MM", - "NA", - "NR", - "NP", - "NL", - "NC", - "NZ", - "NI", - "NE", - "NG", - "NU", - "NF", - "MP", - "NO", - "OM", - "PK", - "PW", - "PS", - "PA", - "PG", - "PY", - "PE", - "PH", - "PN", - "PL", - "PT", - "PR", - "QA", - "MK", - "RO", - "RU", - "RW", - "RE", - "BL", - "SH", - "KN", - "LC", - "MF", - "PM", - "VC", - "WS", - "SM", - "ST", - "SA", - "SN", - "RS", - "SC", - "SL", - "SG", - "SX", - "SK", - "SI", - "SB", - "SO", - "ZA", - "GS", - "SS", - "ES", - "LK", - "SD", - "SR", - "SJ", - "SE", - "CH", - "SY", - "TW", - "TJ", - "TZ", - "TH", - "TL", - "TG", - "TK", - "TO", - "TT", - "TN", - "TR", - "TM", - "TC", - "TV", - "UG", - "UA", - "AE", - "GB", - "UM", - "US", - "UY", - "UZ", - "VU", - "VE", - "VN", - "VG", - "VI", - "WF", - "EH", - "YE", - "ZM", - "ZW", - "AX" - ], - "example": "DE", - "type": [ - "string", - "null" - ] - }, - "sepa_beneficiary_legal_name": { - "example": "Hans M\u00fcller", - "maxLength": 128, - "type": [ - "string", - "null" - ] - }, - "sepa_beneficiary_postal_code": { - "example": "10117", - "type": [ - "string", - "null" - ] - }, - "sepa_beneficiary_state_province_region": { - "example": "Berlin", - "type": [ - "string", - "null" - ] - }, - "sepa_iban": { - "example": "DE89370400440532013000", - "type": [ - "string", - "null" - ] - }, - "spei_clabe": { - "example": "5482347403740546", - "type": [ - "string", - "null" + "tracking_transaction": { + "type": "object", + "properties": { + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Payin transaction step", + "example": "processing" + }, + "status": { + "type": [ + "string", + "null" + ], + "enum": [ + "failed", + "completed" + ], + "description": "Payin transaction status", + "example": "failed" + }, + "external_id": { + "type": [ + "string", + "null" + ], + "description": "Payin transaction external id", + "example": "12345678" + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "description": "Payin transaction completed date", + "example": "2011-10-05T14:48:00.000Z" + }, + "transaction_hash": { + "type": [ + "string", + "null" + ], + "description": "Blockchain transaction hash", + "example": "0x123...890" + }, + "provider_name": { + "type": [ + "string", + "null" + ], + "enum": [ + "Nvio Pagos", + "Brex", + "Stark Bank", + "JPMorgan Chase", + "HSBC", + "Inter", + "JP Morgan Chase", + "Bitso", + "Citi", + "CFSB", + "Triple A Technologies", + "Portage Bank" + ], + "description": "Payment provider name", + "example": "HSBC" + }, + "provider_transaction_id": { + "type": [ + "string", + "null" + ], + "description": "Payment provider transaction id", + "example": "" + }, + "sender_name": { + "type": [ + "string", + "null" + ], + "example": "John Doe Smith" + }, + "sender_bank_name": { + "type": [ + "string", + "null" + ], + "example": "Bank of America" + }, + "sender_tax_id": { + "type": [ + "string", + "null" + ], + "example": "123.456.789-10" + }, + "sender_bank_code": { + "type": [ + "string", + "null" + ], + "example": "00416968" + }, + "sender_account_number": { + "type": [ + "string", + "null" + ], + "example": "1234567890" + }, + "end_to_end_id": { + "type": [ + "string", + "null" + ], + "description": "BACEN Pix end-to-end transaction ID (govt Pix ID)", + "example": "E20018183202603311320vm6ALFpJpsS" + }, + "trace_number": { + "type": [ + "string", + "null" + ], + "example": "1234567890" + }, + "transaction_reference": { + "type": [ + "string", + "null" + ], + "example": "1234567890" + }, + "description": { + "type": [ + "string", + "null" + ], + "example": "Payment from John Doe Smith" + }, + "pse_instruction": { + "type": [ + "object", + "null" + ], + "properties": { + "payment_link": { + "type": "string", + "description": "PSE payment link URL", + "example": "https://pse.example.com/payment/abc123" + }, + "fid": { + "type": "string", + "description": "PSE funding identifier for webhook matching", + "example": "fid_abc123" + }, + "full_name": { + "type": "string", + "description": "PSE payer full name", + "example": "Juan Pérez García" + }, + "tax_id": { + "type": "string", + "description": "PSE payer document number", + "example": "1234567890" + }, + "document_type": { + "type": "string", + "enum": [ + "CC", + "NIT" + ], + "description": "PSE payer document type", + "example": "CC" + }, + "phone": { + "type": "string", + "description": "PSE payer phone number", + "example": "+573001234567" + }, + "email": { + "type": "string", + "description": "PSE payer email", + "example": "juan@example.com" + }, + "bank_code": { + "type": [ + "string", + "null" + ], + "description": "PSE payer bank code", + "example": "1007" + } + }, + "required": [ + "payment_link", + "fid", + "full_name", + "tax_id", + "document_type", + "phone", + "email" + ] + }, + "transfers_instruction": { + "type": [ + "object", + "null" + ], + "properties": { + "account": { + "type": "string", + "description": "CVU/CBU/Alias account number", + "example": "0000003100012389237485" + }, + "type": { + "type": "string", + "enum": [ + "CVU", + "CBU", + "ALIAS" + ], + "description": "Account type (CVU, CBU, or ALIAS)", + "example": "CVU" + }, + "tax_id": { + "type": [ + "string", + "null" + ], + "description": "CUIT/CUIL (normalized, digits only)", + "example": "20123456783" + } + }, + "required": [ + "account", + "type" + ] + }, + "ted_instruction": { + "type": [ + "object", + "null" + ], + "properties": { + "beneficiary_name": { + "type": "string", + "example": "Blind Pay, Inc." + }, + "tax_id": { + "type": "string", + "example": "57.599.376/0001-81" + }, + "bank_code": { + "type": "string", + "example": "665" + }, + "bank_name": { + "type": "string", + "example": "STARK BANK S.A." + }, + "branch_code": { + "type": "string", + "example": "5340" + }, + "account_number": { + "type": "string", + "example": "01011707084-8" + }, + "account_type": { + "type": "string", + "example": "checking" + } + }, + "required": [ + "beneficiary_name", + "tax_id", + "bank_code", + "bank_name", + "branch_code", + "account_number", + "account_type" + ] + } + }, + "required": [ + "step" ] }, - "spei_institution_code": { - "example": "40002", - "maxLength": 5, - "minLength": 5, + "billing_fee_amount": { "type": [ - "string", + "number", "null" - ] - }, - "spei_protocol": { - "description": "For debitcard and phonenum the spei_institution_code is required", - "enum": [ - "clabe", - "debitcard", - "phonenum" ], - "example": "clabe", - "type": [ - "string", - "null" - ] + "description": "Billing fee in cents (charged at the end of the month)", + "example": 50 }, - "state_province_region": { - "example": "State/Province/Region", + "transaction_fee_amount": { "type": [ - "string", + "number", "null" - ] - }, - "status": { - "enum": [ - "verifying", - "approved", - "rejected", - "deprecated" ], - "example": "verifying", - "type": [ - "string", - "null" - ] - }, - "swift_account_holder_name": { - "example": "John Doe", - "maxLength": 50, - "type": [ - "string", - "null" - ] - }, - "swift_account_number_iban": { - "example": "123456789", - "type": [ - "string", - "null" - ] + "description": "Transaction fee in cents (percentage-based fee)", + "example": 100 }, - "swift_bank_address_line_1": { - "example": "123 Main Street, Suite 100, Downtown District, City Center CP 12345", - "type": [ - "string", - "null" + "blindpay_bank_details": { + "type": "object", + "properties": { + "routing_number": { + "type": "string", + "default": "121145349", + "example": "121145349" + }, + "account_number": { + "type": "string", + "default": "621327727210181", + "example": "621327727210181" + }, + "account_type": { + "type": "string", + "default": "Business checking", + "example": "Business checking" + }, + "swift_bic_code": { + "type": [ + "string", + "null" + ], + "default": "CHASUS33", + "example": "CHASUS33" + }, + "ach": { + "type": [ + "object", + "null" + ], + "properties": { + "routing_number": { + "type": "string", + "example": "123456789" + }, + "account_number": { + "type": "string", + "example": "123456789" + } + }, + "required": [ + "routing_number", + "account_number" + ] + }, + "wire": { + "type": [ + "object", + "null" + ], + "properties": { + "routing_number": { + "type": "string", + "example": "123456789" + }, + "account_number": { + "type": "string", + "example": "123456789" + } + }, + "required": [ + "routing_number", + "account_number" + ] + }, + "rtp": { + "type": [ + "object", + "null" + ], + "properties": { + "routing_number": { + "type": "string", + "example": "123456789" + }, + "account_number": { + "type": "string", + "example": "123456789" + } + }, + "required": [ + "routing_number", + "account_number" + ] + }, + "beneficiary": { + "type": "object", + "properties": { + "name": { + "type": "string", + "default": "BlindPay, Inc.", + "example": "BlindPay, Inc." + }, + "address_line_1": { + "type": "string", + "default": "8 The Green, #19364", + "example": "8 The Green, #19364" + }, + "address_line_2": { + "type": "string", + "default": "Dover, DE 19901", + "example": "Dover, DE 19901" + } + } + }, + "receiving_bank": { + "type": "object", + "properties": { + "name": { + "type": "string", + "default": "CFSB", + "example": "CFSB" + }, + "address_line_1": { + "type": "string", + "default": "1 Letterman Drive, Building A, Suite A4-700", + "example": "1 Letterman Drive, Building A, Suite A4-700" + }, + "address_line_2": { + "type": "string", + "default": "San Francisco, CA 94129", + "example": "San Francisco, CA 94129" + } + } + }, + "swift_account_number": { + "type": [ + "string", + "null" + ], + "example": "GB50TCCL04140449730892" + }, + "swift_receiving_bank": { + "type": [ + "object", + "null" + ], + "properties": { + "name": { + "type": [ + "string", + "null" + ], + "example": "JPMorgan Chase" + }, + "address_line_1": { + "type": [ + "string", + "null" + ], + "example": "270 Park Ave" + }, + "address_line_2": { + "type": [ + "string", + "null" + ], + "example": "New York, NY, 10017-2070" + } + } + } + }, + "required": [ + "beneficiary", + "receiving_bank" ] }, - "swift_bank_address_line_2": { - "example": "456 Oak Avenue, Building 7, Financial District, Business Center CP 54321", + "customer_id": { "type": [ "string", "null" - ] + ], + "minLength": 15, + "maxLength": 15, + "example": "re_000000000000" }, - "swift_bank_city": { - "example": "City", + "receiver_amount": { + "type": [ + "number", + "null" + ], + "description": "10.10 USDC", + "example": 1010 + }, + "payment_method": { "type": [ "string", "null" + ], + "enum": [ + "ach", + "wire", + "pix", + "ted", + "spei", + "transfers", + "pse", + "international_swift", + "rtp" + ], + "example": "pix" + }, + "sender_amount": { + "type": [ + "number", + "null" + ], + "description": "52.40 BRL needs to be sent in a pix transfer", + "example": 5240 + } + }, + "required": [ + "webhook_event", + "id", + "status", + "tracking_complete", + "tracking_payment", + "tracking_transaction", + "blindpay_bank_details" + ] + }, + "LimitIncreaseNewWebhookOut": { + "type": "object", + "properties": { + "webhook_event": { + "type": "string", + "enum": [ + "limitIncrease.new" ] }, - "swift_bank_country": { + "id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "rl_000000000000" + }, + "status": { + "type": "string", "enum": [ - "AF", - "AL", - "DZ", - "AS", - "AD", - "AO", - "AI", - "AQ", - "AG", - "AR", - "AM", - "AW", - "AU", - "AT", - "AZ", - "BS", - "BH", - "BD", - "BB", - "BY", - "BE", - "BZ", - "BJ", - "BM", - "BT", - "BO", - "BQ", - "BA", - "BW", - "BV", - "BR", - "IO", - "BN", - "BG", - "BF", - "BI", - "CV", - "KH", - "CM", - "CA", - "KY", - "CF", - "TD", - "CL", - "CN", - "CX", - "CC", - "CO", - "KM", - "CD", - "CG", - "CK", - "CR", - "HR", - "CU", - "CW", - "CY", - "CZ", - "CI", - "DK", - "DJ", - "DM", - "DO", - "EC", - "EG", - "SV", - "GQ", - "ER", - "EE", - "SZ", - "ET", - "FK", - "FO", - "FJ", - "FI", - "FR", - "GF", - "PF", - "TF", - "GA", - "GM", - "GE", - "DE", - "GH", - "GI", - "GR", - "GL", - "GD", - "GP", - "GU", - "GT", - "GG", - "GN", - "GW", - "GY", - "HT", - "HM", - "VA", - "HN", - "HK", - "HU", - "IS", - "IN", - "ID", - "IR", - "IQ", - "IE", - "IM", - "IL", - "IT", - "JM", - "JP", - "JE", - "JO", - "KZ", - "KE", - "KI", - "KP", - "KR", - "KW", - "KG", - "LA", - "LV", - "LB", - "LS", - "LR", - "LY", - "LI", - "LT", - "LU", - "MO", - "MG", - "MW", - "MY", - "MV", - "ML", - "MT", - "MH", - "MQ", - "MR", - "MU", - "YT", - "MX", - "FM", - "MD", - "MC", - "MN", - "ME", - "MS", - "MA", - "MZ", - "MM", - "NA", - "NR", - "NP", - "NL", - "NC", - "NZ", - "NI", - "NE", - "NG", - "NU", - "NF", - "MP", - "NO", - "OM", - "PK", - "PW", - "PS", - "PA", - "PG", - "PY", - "PE", - "PH", - "PN", - "PL", - "PT", - "PR", - "QA", - "MK", - "RO", - "RU", - "RW", - "RE", - "BL", - "SH", - "KN", - "LC", - "MF", - "PM", - "VC", - "WS", - "SM", - "ST", - "SA", - "SN", - "RS", - "SC", - "SL", - "SG", - "SX", - "SK", - "SI", - "SB", - "SO", - "ZA", - "GS", - "SS", - "ES", - "LK", - "SD", - "SR", - "SJ", - "SE", - "CH", - "SY", - "TW", - "TJ", - "TZ", - "TH", - "TL", - "TG", - "TK", - "TO", - "TT", - "TN", - "TR", - "TM", - "TC", - "TV", - "UG", - "UA", - "AE", - "GB", - "UM", - "US", - "UY", - "UZ", - "VU", - "VE", - "VN", - "VG", - "VI", - "WF", - "EH", - "YE", - "ZM", - "ZW", - "AX" + "in_review", + "approved", + "rejected" ], - "example": "MX", + "example": "in_review" + }, + "per_transaction": { "type": [ - "string", + "integer", "null" - ] + ], + "maximum": 100000000000, + "example": 100000 }, - "swift_bank_name": { - "example": "Banco Regional SA", + "daily": { "type": [ - "string", + "integer", "null" - ] + ], + "maximum": 100000000000, + "example": 200000 }, - "swift_bank_postal_code": { - "example": "11530", + "monthly": { "type": [ - "string", + "integer", "null" - ] + ], + "maximum": 100000000000, + "example": 1000000 }, - "swift_bank_state_province_region": { - "example": "District", + "approved_per_transaction": { "type": [ - "string", + "integer", "null" - ] + ], + "maximum": 100000000000, + "example": 70000 }, - "swift_beneficiary_address_line_1": { - "example": "123 MAIN STREET SUITE 100", + "approved_daily": { "type": [ - "string", + "integer", "null" - ] + ], + "maximum": 100000000000, + "example": 140000 }, - "swift_beneficiary_address_line_2": { - "example": "BUILDING A FLOOR 5", + "approved_monthly": { + "type": [ + "integer", + "null" + ], + "maximum": 100000000000, + "example": 700000 + }, + "supporting_document_type": { "type": [ "string", "null" - ] + ], + "enum": [ + "individual_bank_statement", + "individual_tax_return", + "individual_proof_of_income", + "individual_pay_stub", + "individual_employment_letter", + "individual_investment_statement", + "individual_crypto_exchange_statement", + "individual_blockchain_wallet_statement", + "business_bank_statement", + "business_financial_statements", + "business_tax_return", + "business_contract", + "business_accounts_receivable", + "business_merchant_processor_statement", + "business_shareholder_loan" + ], + "example": "individual_bank_statement" }, - "swift_beneficiary_city": { - "example": "MEXICO CITY", + "supporting_document_file": { "type": [ "string", "null" - ] + ], + "format": "uri", + "example": "https://example.com/document.pdf" }, - "swift_beneficiary_country": { - "enum": [ - "AF", - "AL", - "DZ", - "AS", - "AD", - "AO", - "AI", - "AQ", - "AG", - "AR", - "AM", - "AW", - "AU", - "AT", - "AZ", - "BS", - "BH", - "BD", - "BB", - "BY", - "BE", - "BZ", - "BJ", - "BM", - "BT", - "BO", - "BQ", - "BA", - "BW", - "BV", - "BR", - "IO", - "BN", - "BG", - "BF", - "BI", - "CV", - "KH", - "CM", - "CA", - "KY", - "CF", - "TD", - "CL", - "CN", - "CX", - "CC", - "CO", - "KM", - "CD", - "CG", - "CK", - "CR", - "HR", - "CU", - "CW", - "CY", - "CZ", - "CI", - "DK", - "DJ", - "DM", - "DO", - "EC", - "EG", - "SV", - "GQ", - "ER", - "EE", - "SZ", - "ET", - "FK", - "FO", - "FJ", - "FI", - "FR", - "GF", - "PF", - "TF", - "GA", - "GM", - "GE", - "DE", - "GH", - "GI", - "GR", - "GL", - "GD", - "GP", - "GU", - "GT", - "GG", - "GN", - "GW", - "GY", - "HT", - "HM", - "VA", - "HN", - "HK", - "HU", - "IS", - "IN", - "ID", - "IR", - "IQ", - "IE", - "IM", - "IL", - "IT", - "JM", - "JP", - "JE", - "JO", - "KZ", - "KE", - "KI", - "KP", - "KR", - "KW", - "KG", - "LA", - "LV", - "LB", - "LS", - "LR", - "LY", - "LI", - "LT", - "LU", - "MO", - "MG", - "MW", - "MY", - "MV", - "ML", - "MT", - "MH", - "MQ", - "MR", - "MU", - "YT", - "MX", - "FM", - "MD", - "MC", - "MN", - "ME", - "MS", - "MA", - "MZ", - "MM", - "NA", - "NR", - "NP", - "NL", - "NC", - "NZ", - "NI", - "NE", - "NG", - "NU", - "NF", - "MP", - "NO", - "OM", - "PK", - "PW", - "PS", - "PA", - "PG", - "PY", - "PE", - "PH", - "PN", - "PL", - "PT", - "PR", - "QA", - "MK", - "RO", - "RU", - "RW", - "RE", - "BL", - "SH", - "KN", - "LC", - "MF", - "PM", - "VC", - "WS", - "SM", - "ST", - "SA", - "SN", - "RS", - "SC", - "SL", - "SG", - "SX", - "SK", - "SI", - "SB", - "SO", - "ZA", - "GS", - "SS", - "ES", - "LK", - "SD", - "SR", - "SJ", - "SE", - "CH", - "SY", - "TW", - "TJ", - "TZ", - "TH", - "TL", - "TG", - "TK", - "TO", - "TT", - "TN", - "TR", - "TM", - "TC", - "TV", - "UG", - "UA", - "AE", - "GB", - "UM", - "US", - "UY", - "UZ", - "VU", - "VE", - "VN", - "VG", - "VI", - "WF", - "EH", - "YE", - "ZM", - "ZW", - "AX" + "customer_id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "re_000000000000" + }, + "created_at": { + "type": [ + "string", + "null" ], - "example": "MX", + "format": "date-time", + "example": "2021-01-01T00:00:00Z" + }, + "updated_at": { "type": [ "string", "null" + ], + "format": "date-time", + "example": "2021-01-01T00:00:00Z" + } + }, + "required": [ + "webhook_event", + "id", + "status", + "customer_id" + ] + }, + "LimitIncreaseUpdateWebhookOut": { + "type": "object", + "properties": { + "webhook_event": { + "type": "string", + "enum": [ + "limitIncrease.update" ] }, - "swift_beneficiary_postal_code": { - "example": "11530", + "id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "rl_000000000000" + }, + "status": { + "type": "string", + "enum": [ + "in_review", + "approved", + "rejected" + ], + "example": "in_review" + }, + "per_transaction": { + "type": [ + "integer", + "null" + ], + "maximum": 100000000000, + "example": 100000 + }, + "daily": { + "type": [ + "integer", + "null" + ], + "maximum": 100000000000, + "example": 200000 + }, + "monthly": { + "type": [ + "integer", + "null" + ], + "maximum": 100000000000, + "example": 1000000 + }, + "approved_per_transaction": { + "type": [ + "integer", + "null" + ], + "maximum": 100000000000, + "example": 70000 + }, + "approved_daily": { + "type": [ + "integer", + "null" + ], + "maximum": 100000000000, + "example": 140000 + }, + "approved_monthly": { + "type": [ + "integer", + "null" + ], + "maximum": 100000000000, + "example": 700000 + }, + "supporting_document_type": { "type": [ "string", "null" - ] + ], + "enum": [ + "individual_bank_statement", + "individual_tax_return", + "individual_proof_of_income", + "individual_pay_stub", + "individual_employment_letter", + "individual_investment_statement", + "individual_crypto_exchange_statement", + "individual_blockchain_wallet_statement", + "business_bank_statement", + "business_financial_statements", + "business_tax_return", + "business_contract", + "business_accounts_receivable", + "business_merchant_processor_statement", + "business_shareholder_loan" + ], + "example": "individual_bank_statement" }, - "swift_beneficiary_state_province_region": { - "example": "MX", + "supporting_document_file": { "type": [ "string", "null" - ] + ], + "format": "uri", + "example": "https://example.com/document.pdf" }, - "swift_code_bic": { - "example": "123456789", + "customer_id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "re_000000000000" + }, + "created_at": { "type": [ "string", "null" - ] + ], + "format": "date-time", + "example": "2021-01-01T00:00:00Z" }, - "swift_ifsc_branch_code": { - "example": "BARB0AHIMCI", - "pattern": "^[A-Z]{4}0[A-Z0-9]{6}$", + "updated_at": { "type": [ "string", "null" + ], + "format": "date-time", + "example": "2021-01-01T00:00:00Z" + } + }, + "required": [ + "webhook_event", + "id", + "status", + "customer_id" + ] + }, + "PayinUpdateWebhookOut": { + "type": "object", + "properties": { + "webhook_event": { + "type": "string", + "enum": [ + "payin.update" ] }, - "swift_intermediary_bank_account_number_iban": { - "example": "123456789", - "maxLength": 34, + "id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "pi_000000000000" + }, + "status": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "failed", + "refunded", + "completed" + ], + "description": "Payin general status", + "example": "processing" + }, + "pix_code": { "type": [ "string", "null" + ], + "description": "PIX code", + "example": "00020101021226790014br.gov.bcb.pix2557brcode.starkinfra.com/v2/bcf07f6c4110454e9fd6f120bab13e835204000053039865802BR5915Blind Pay, Inc.6010Vila Velha62070503***6304BCAB" + }, + "memo_code": { + "type": [ + "string", + "null" + ], + "description": "Memo code", + "example": "8K45GHBNT6BQ6462" + }, + "clabe": { + "type": [ + "string", + "null" + ], + "description": "CLABE code", + "example": "014027000000000008" + }, + "partner_fee": { + "type": "integer", + "minimum": 0, + "default": 0, + "description": "Payin partner fee amount in cents", + "example": 25000 + }, + "tracking_complete": { + "type": "object", + "properties": { + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Complete step", + "example": "on_hold" + }, + "transaction_hash": { + "type": [ + "string", + "null" + ], + "description": "Complete transaction hash", + "example": "0x123...890" + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "description": "Complete completed date", + "example": "2011-10-05T14:48:00.000Z" + } + }, + "required": [ + "step" ] }, - "swift_intermediary_bank_country": { - "enum": [ - "AF", - "AL", - "DZ", - "AS", - "AD", - "AO", - "AI", - "AQ", - "AG", - "AR", - "AM", - "AW", - "AU", - "AT", - "AZ", - "BS", - "BH", - "BD", - "BB", - "BY", - "BE", - "BZ", - "BJ", - "BM", - "BT", - "BO", - "BQ", - "BA", - "BW", - "BV", - "BR", - "IO", - "BN", - "BG", - "BF", - "BI", - "CV", - "KH", - "CM", - "CA", - "KY", - "CF", - "TD", - "CL", - "CN", - "CX", - "CC", - "CO", - "KM", - "CD", - "CG", - "CK", - "CR", - "HR", - "CU", - "CW", - "CY", - "CZ", - "CI", - "DK", - "DJ", - "DM", - "DO", - "EC", - "EG", - "SV", - "GQ", - "ER", - "EE", - "SZ", - "ET", - "FK", - "FO", - "FJ", - "FI", - "FR", - "GF", - "PF", - "TF", - "GA", - "GM", - "GE", - "DE", - "GH", - "GI", - "GR", - "GL", - "GD", - "GP", - "GU", - "GT", - "GG", - "GN", - "GW", - "GY", - "HT", - "HM", - "VA", - "HN", - "HK", - "HU", - "IS", - "IN", - "ID", - "IR", - "IQ", - "IE", - "IM", - "IL", - "IT", - "JM", - "JP", - "JE", - "JO", - "KZ", - "KE", - "KI", - "KP", - "KR", - "KW", - "KG", - "LA", - "LV", - "LB", - "LS", - "LR", - "LY", - "LI", - "LT", - "LU", - "MO", - "MG", - "MW", - "MY", - "MV", - "ML", - "MT", - "MH", - "MQ", - "MR", - "MU", - "YT", - "MX", - "FM", - "MD", - "MC", - "MN", - "ME", - "MS", - "MA", - "MZ", - "MM", - "NA", - "NR", - "NP", - "NL", - "NC", - "NZ", - "NI", - "NE", - "NG", - "NU", - "NF", - "MP", - "NO", - "OM", - "PK", - "PW", - "PS", - "PA", - "PG", - "PY", - "PE", - "PH", - "PN", - "PL", - "PT", - "PR", - "QA", - "MK", - "RO", - "RU", - "RW", - "RE", - "BL", - "SH", - "KN", - "LC", - "MF", - "PM", - "VC", - "WS", - "SM", - "ST", - "SA", - "SN", - "RS", - "SC", - "SL", - "SG", - "SX", - "SK", - "SI", - "SB", - "SO", - "ZA", - "GS", - "SS", - "ES", - "LK", - "SD", - "SR", - "SJ", - "SE", - "CH", - "SY", - "TW", - "TJ", - "TZ", - "TH", - "TL", - "TG", - "TK", - "TO", - "TT", - "TN", - "TR", - "TM", - "TC", - "TV", - "UG", - "UA", - "AE", - "GB", - "UM", - "US", - "UY", - "UZ", - "VU", - "VE", - "VN", - "VG", - "VI", - "WF", - "EH", - "YE", - "ZM", - "ZW", - "AX" - ], - "example": "US", - "type": [ - "string", - "null" - ] - }, - "swift_intermediary_bank_name": { - "example": "Banco Regional SA", - "type": [ - "string", - "null" + "tracking_payment": { + "type": "object", + "properties": { + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Payment step", + "example": "on_hold" + }, + "provider_name": { + "type": [ + "string", + "null" + ], + "description": "Payment provider name", + "example": "blockchain" + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "description": "Payment completed date", + "example": "2011-10-05T14:48:00.000Z" + }, + "review_source": { + "type": [ + "string", + "null" + ], + "description": "Risk source that sent this payin to manual review", + "example": "seon_review" + }, + "review_context": { + "type": [ + "object", + "null" + ], + "additionalProperties": {}, + "description": "Structured risk context for manual review" + }, + "approved_risk_sources": { + "type": [ + "array", + "null" + ], + "items": { + "type": "string" + }, + "description": "Risk sources already approved by an analyst", + "example": [ + "seon_review" + ] + } + }, + "required": [ + "step" ] }, - "swift_intermediary_bank_swift_code_bic": { - "anyOf": [ - { - "maxLength": 8, - "minLength": 8, - "type": "string" + "tracking_transaction": { + "type": "object", + "properties": { + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Payin transaction step", + "example": "processing" }, - { - "maxLength": 11, - "minLength": 11, - "type": "string" + "status": { + "type": [ + "string", + "null" + ], + "enum": [ + "failed", + "completed" + ], + "description": "Payin transaction status", + "example": "failed" }, - { - "type": "null" + "external_id": { + "type": [ + "string", + "null" + ], + "description": "Payin transaction external id", + "example": "12345678" + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "description": "Payin transaction completed date", + "example": "2011-10-05T14:48:00.000Z" + }, + "transaction_hash": { + "type": [ + "string", + "null" + ], + "description": "Blockchain transaction hash", + "example": "0x123...890" + }, + "provider_name": { + "type": [ + "string", + "null" + ], + "enum": [ + "Nvio Pagos", + "Brex", + "Stark Bank", + "JPMorgan Chase", + "HSBC", + "Inter", + "JP Morgan Chase", + "Bitso", + "Citi", + "CFSB", + "Triple A Technologies", + "Portage Bank" + ], + "description": "Payment provider name", + "example": "HSBC" + }, + "provider_transaction_id": { + "type": [ + "string", + "null" + ], + "description": "Payment provider transaction id", + "example": "" + }, + "sender_name": { + "type": [ + "string", + "null" + ], + "example": "John Doe Smith" + }, + "sender_bank_name": { + "type": [ + "string", + "null" + ], + "example": "Bank of America" + }, + "sender_tax_id": { + "type": [ + "string", + "null" + ], + "example": "123.456.789-10" + }, + "sender_bank_code": { + "type": [ + "string", + "null" + ], + "example": "00416968" + }, + "sender_account_number": { + "type": [ + "string", + "null" + ], + "example": "1234567890" + }, + "end_to_end_id": { + "type": [ + "string", + "null" + ], + "description": "BACEN Pix end-to-end transaction ID (govt Pix ID)", + "example": "E20018183202603311320vm6ALFpJpsS" + }, + "trace_number": { + "type": [ + "string", + "null" + ], + "example": "1234567890" + }, + "transaction_reference": { + "type": [ + "string", + "null" + ], + "example": "1234567890" + }, + "description": { + "type": [ + "string", + "null" + ], + "example": "Payment from John Doe Smith" + }, + "pse_instruction": { + "type": [ + "object", + "null" + ], + "properties": { + "payment_link": { + "type": "string", + "description": "PSE payment link URL", + "example": "https://pse.example.com/payment/abc123" + }, + "fid": { + "type": "string", + "description": "PSE funding identifier for webhook matching", + "example": "fid_abc123" + }, + "full_name": { + "type": "string", + "description": "PSE payer full name", + "example": "Juan Pérez García" + }, + "tax_id": { + "type": "string", + "description": "PSE payer document number", + "example": "1234567890" + }, + "document_type": { + "type": "string", + "enum": [ + "CC", + "NIT" + ], + "description": "PSE payer document type", + "example": "CC" + }, + "phone": { + "type": "string", + "description": "PSE payer phone number", + "example": "+573001234567" + }, + "email": { + "type": "string", + "description": "PSE payer email", + "example": "juan@example.com" + }, + "bank_code": { + "type": [ + "string", + "null" + ], + "description": "PSE payer bank code", + "example": "1007" + } + }, + "required": [ + "payment_link", + "fid", + "full_name", + "tax_id", + "document_type", + "phone", + "email" + ] + }, + "transfers_instruction": { + "type": [ + "object", + "null" + ], + "properties": { + "account": { + "type": "string", + "description": "CVU/CBU/Alias account number", + "example": "0000003100012389237485" + }, + "type": { + "type": "string", + "enum": [ + "CVU", + "CBU", + "ALIAS" + ], + "description": "Account type (CVU, CBU, or ALIAS)", + "example": "CVU" + }, + "tax_id": { + "type": [ + "string", + "null" + ], + "description": "CUIT/CUIL (normalized, digits only)", + "example": "20123456783" + } + }, + "required": [ + "account", + "type" + ] + }, + "ted_instruction": { + "type": [ + "object", + "null" + ], + "properties": { + "beneficiary_name": { + "type": "string", + "example": "Blind Pay, Inc." + }, + "tax_id": { + "type": "string", + "example": "57.599.376/0001-81" + }, + "bank_code": { + "type": "string", + "example": "665" + }, + "bank_name": { + "type": "string", + "example": "STARK BANK S.A." + }, + "branch_code": { + "type": "string", + "example": "5340" + }, + "account_number": { + "type": "string", + "example": "01011707084-8" + }, + "account_type": { + "type": "string", + "example": "checking" + } + }, + "required": [ + "beneficiary_name", + "tax_id", + "bank_code", + "bank_name", + "branch_code", + "account_number", + "account_type" + ] } + }, + "required": [ + "step" + ] + }, + "billing_fee_amount": { + "type": [ + "number", + "null" ], - "example": "AEIBARB1" + "description": "Billing fee in cents (charged at the end of the month)", + "example": 50 }, - "swift_payment_code": { - "enum": [ - "ae_swift_str", - "ae_swift_tcs", - "ae_swift_ipc", - "ae_swift_ifs", - "ae_swift_sts", - "ae_swift_pms", - "ae_swift_its", - "ae_swift_gde", - "ae_swift_ots", - "ae_swift_tts", - "bh_swift_afa", - "bh_swift_afl", - "bh_swift_ats", - "bh_swift_cea", - "bh_swift_cel", - "bh_swift_chc", - "bh_swift_dla", - "bh_swift_dlf", - "bh_swift_dll", - "bh_swift_doe", - "bh_swift_dsa", - "bh_swift_dsf", - "bh_swift_dsl", - "bh_swift_fam", - "bh_swift_fda", - "bh_swift_fdl", - "bh_swift_fia", - "bh_swift_fil", - "bh_swift_fis", - "bh_swift_fsa", - "bh_swift_fsl", - "bh_swift_gde", - "bh_swift_gdi", - "bh_swift_gms", - "bh_swift_gos", - "bh_swift_gri", - "bh_swift_ifs", - "bh_swift_igd", - "bh_swift_iid", - "bh_swift_ins", - "bh_swift_iod", - "bh_swift_iol", - "bh_swift_ipc", - "bh_swift_ish", - "bh_swift_isl", - "bh_swift_iss", - "bh_swift_its", - "bh_swift_ldl", - "bh_swift_lds", - "bh_swift_lea", - "bh_swift_lel", - "bh_swift_lla", - "bh_swift_lll", - "bh_swift_ots", - "bh_swift_pip", - "bh_swift_pms", - "bh_swift_ppa", - "bh_swift_ppl", - "bh_swift_prr", - "bh_swift_prs", - "bh_swift_rda", - "bh_swift_rdl", - "bh_swift_rds", - "bh_swift_rea", - "bh_swift_rel", - "bh_swift_rfs", - "bh_swift_rls", - "bh_swift_sal", - "bh_swift_sco", - "bh_swift_sla", - "bh_swift_sll", - "bh_swift_str", - "bh_swift_sts", - "bh_swift_tcp", - "bh_swift_tcr", - "bh_swift_tcs", - "bh_swift_tts", - "ch_swift_ccdndr", - "ch_swift_cctfdr", - "ch_swift_cgoddr", - "ch_swift_cocadr", - "ch_swift_cstrdr", - "ch_swift_remtdr", - "cn_swift_ccdndr", - "cn_swift_cctfdr", - "cn_swift_cgoddr", - "cn_swift_cocadr", - "cn_swift_cstrdr", - "cn_swift_remtdr", - "hk_swift_charitabledonation", - "hk_swift_goods", - "hk_swift_personal", - "hk_swift_services", - "id_swift_2011", - "id_swift_2012", - "id_swift_2015", - "id_swift_2018", - "id_swift_2019", - "id_swift_2097", - "id_swift_2098", - "id_swift_2127", - "id_swift_2129", - "id_swift_2150", - "id_swift_2163", - "id_swift_2193", - "id_swift_2194", - "id_swift_2197", - "id_swift_2198", - "id_swift_2203", - "id_swift_2204", - "id_swift_2206", - "id_swift_2207", - "id_swift_2221", - "id_swift_2222", - "id_swift_2231", - "id_swift_2232", - "id_swift_2233", - "id_swift_2240", - "id_swift_2241", - "id_swift_2242", - "id_swift_2243", - "id_swift_2244", - "id_swift_2245", - "id_swift_2246", - "id_swift_2247", - "id_swift_2251", - "id_swift_2252", - "id_swift_2255", - "id_swift_2256", - "id_swift_2257", - "id_swift_2261", - "id_swift_2262", - "id_swift_2263", - "id_swift_2264", - "id_swift_2271", - "id_swift_2272", - "id_swift_2273", - "id_swift_2274", - "id_swift_2275", - "id_swift_2276", - "id_swift_2277", - "id_swift_2278", - "id_swift_2279", - "id_swift_2280", - "id_swift_2282", - "id_swift_2299", - "id_swift_2311", - "id_swift_2321", - "id_swift_2322", - "id_swift_2323", - "id_swift_2331", - "id_swift_2332", - "id_swift_2333", - "id_swift_2341", - "id_swift_2342", - "id_swift_2351", - "id_swift_2352", - "id_swift_2353", - "id_swift_2354", - "id_swift_2361", - "id_swift_2362", - "id_swift_2363", - "id_swift_2364", - "id_swift_2365", - "id_swift_2366", - "id_swift_2371", - "id_swift_2372", - "id_swift_2375", - "id_swift_2376", - "id_swift_2377", - "id_swift_2378", - "id_swift_2379", - "id_swift_2380", - "id_swift_2381", - "id_swift_2382", - "id_swift_2383", - "id_swift_2384", - "id_swift_2385", - "id_swift_2386", - "id_swift_2387", - "id_swift_2388", - "id_swift_2389", - "id_swift_2390", - "id_swift_2391", - "id_swift_2392", - "id_swift_2393", - "id_swift_2394", - "id_swift_2395", - "id_swift_2396", - "id_swift_2397", - "id_swift_2398", - "id_swift_2400", - "id_swift_2405", - "id_swift_2411", - "id_swift_2412", - "id_swift_2413", - "id_swift_2421", - "id_swift_2422", - "id_swift_2423", - "id_swift_2431", - "id_swift_2432", - "id_swift_2433", - "id_swift_2441", - "id_swift_2442", - "id_swift_2443", - "id_swift_2450", - "id_swift_2461", - "id_swift_2462", - "id_swift_2466", - "id_swift_2467", - "id_swift_2468", - "id_swift_2469", - "id_swift_2480", - "id_swift_2490", - "id_swift_2495", - "id_swift_2501", - "id_swift_2502", - "id_swift_2511", - "id_swift_2512", - "id_swift_2521", - "id_swift_2522", - "id_swift_2523", - "id_swift_2524", - "id_swift_2525", - "id_swift_2526", - "id_swift_2531", - "id_swift_2532", - "id_swift_2533", - "id_swift_2541", - "id_swift_2546", - "id_swift_2547", - "id_swift_2550", - "id_swift_2560", - "id_swift_2570", - "id_swift_2580", - "id_swift_2590", - "id_swift_2600", - "id_swift_2610", - "id_swift_2615", - "id_swift_2616", - "id_swift_2630", - "id_swift_2640", - "id_swift_2651", - "id_swift_2652", - "id_swift_2660", - "id_swift_2670", - "id_swift_2701", - "id_swift_2702", - "id_swift_2705", - "id_swift_2710", - "id_swift_2716", - "id_swift_2717", - "id_swift_2720", - "id_swift_2725", - "id_swift_2730", - "id_swift_2731", - "id_swift_2741", - "id_swift_2742", - "id_swift_2743", - "id_swift_2751", - "id_swift_2752", - "id_swift_2760", - "id_swift_2765", - "id_swift_2766", - "id_swift_2767", - "id_swift_2770", - "id_swift_2802", - "id_swift_2803", - "id_swift_2804", - "id_swift_2808", - "id_swift_2809", - "id_swift_2811", - "id_swift_2812", - "id_swift_2813", - "id_swift_2814", - "id_swift_2815", - "id_swift_2821", - "id_swift_2822", - "id_swift_2823", - "id_swift_2824", - "id_swift_2825", - "id_swift_2826", - "id_swift_2827", - "id_swift_2828", - "in_swift_p0001", - "in_swift_p0002", - "in_swift_p0003", - "in_swift_p0004", - "in_swift_p0005", - "in_swift_p0006", - "in_swift_p0007", - "in_swift_p0008", - "in_swift_p0009", - "in_swift_p0010", - "in_swift_p0011", - "in_swift_p0012", - "in_swift_p0013", - "in_swift_p0014", - "in_swift_p0015", - "in_swift_p0016", - "in_swift_p0017", - "in_swift_p0019", - "in_swift_p0020", - "in_swift_p0021", - "in_swift_p0022", - "in_swift_p0024", - "in_swift_p0025", - "in_swift_p0028", - "in_swift_p0029", - "in_swift_p0099", - "in_swift_p0101", - "in_swift_p0102", - "in_swift_p0103", - "in_swift_p0104", - "in_swift_p0105", - "in_swift_p0107", - "in_swift_p0108", - "in_swift_p0109", - "jp_swift_1001", - "jp_swift_1002", - "jp_swift_1003", - "jp_swift_1004", - "jp_swift_101", - "jp_swift_102", - "jp_swift_103", - "jp_swift_104", - "jp_swift_105", - "jp_swift_106", - "jp_swift_107", - "jp_swift_108", - "jp_swift_109", - "jp_swift_110", - "jp_swift_1101", - "jp_swift_1102", - "jp_swift_1103", - "jp_swift_1104", - "jp_swift_1105", - "jp_swift_1106", - "jp_swift_1107", - "jp_swift_1108", - "jp_swift_1109", - "jp_swift_111", - "jp_swift_1110", - "jp_swift_1111", - "jp_swift_1112", - "jp_swift_1201", - "jp_swift_1202", - "jp_swift_201", - "jp_swift_202", - "jp_swift_203", - "jp_swift_204", - "jp_swift_205", - "jp_swift_206", - "jp_swift_207", - "jp_swift_208", - "jp_swift_209", - "jp_swift_301", - "jp_swift_302", - "jp_swift_303", - "jp_swift_304", - "jp_swift_305", - "jp_swift_306", - "jp_swift_307", - "jp_swift_401", - "jp_swift_402", - "jp_swift_403", - "jp_swift_404", - "jp_swift_501", - "jp_swift_502", - "jp_swift_503", - "jp_swift_504", - "jp_swift_601", - "jp_swift_602", - "jp_swift_603", - "jp_swift_604", - "jp_swift_701", - "jp_swift_702", - "jp_swift_703", - "jp_swift_704", - "jp_swift_705", - "jp_swift_801", - "jp_swift_802", - "jp_swift_803", - "jp_swift_804", - "jp_swift_805", - "jp_swift_806", - "jp_swift_807", - "jp_swift_808", - "jp_swift_809", - "jp_swift_810", - "jp_swift_811", - "jp_swift_812", - "jp_swift_813", - "jp_swift_814", - "jp_swift_815", - "jp_swift_816", - "jp_swift_817", - "jp_swift_818", - "jp_swift_901", - "jp_swift_902", - "jp_swift_903", - "jp_swift_904", - "ke_swift_1001", - "ke_swift_1002", - "ke_swift_1101", - "ke_swift_1102", - "ke_swift_1201", - "ke_swift_1202", - "ke_swift_1206", - "ke_swift_1501", - "ke_swift_1518", - "ke_swift_1519", - "ke_swift_1527", - "ke_swift_1801", - "ke_swift_1802", - "ke_swift_1908", - "ke_swift_2101", - "ke_swift_2301", - "ke_swift_2501", - "ke_swift_2901", - "ke_swift_3001", - "ke_swift_3100", - "ke_swift_3101", - "ke_swift_3103", - "ke_swift_3200", - "ke_swift_3304", - "ke_swift_3509", - "ke_swift_3514", - "ke_swift_3801", - "ke_swift_4103", - "ke_swift_4301", - "ke_swift_4601", - "ke_swift_4702", - "ke_swift_512", - "ke_swift_6001", - "ke_swift_6002", - "ke_swift_6101", - "ke_swift_6102", - "ke_swift_6301", - "ke_swift_6401", - "ke_swift_6402", - "ke_swift_6501", - "ke_swift_6601", - "ke_swift_adtx", - "ke_swift_airb", - "ke_swift_artx", - "ke_swift_bech", - "ke_swift_bsd", - "ke_swift_bttx", - "ke_swift_busb", - "ke_swift_ccmc", - "ke_swift_cere", - "ke_swift_cfr", - "ke_swift_cgtx", - "ke_swift_chc", - "ke_swift_clot", - "ke_swift_comu", - "ke_swift_cons", - "ke_swift_cort", - "ke_swift_cotx", - "ke_swift_csdk", - "ke_swift_divd", - "ke_swift_edtx", - "ke_swift_educ", - "ke_swift_farm", - "ke_swift_foex", - "ke_swift_fuel", - "ke_swift_gokx", - "ke_swift_govt", - "ke_swift_hlfd", - "ke_swift_hlti", - "ke_swift_holi", - "ke_swift_ibld", - "ke_swift_inpc", - "ke_swift_insu", - "ke_swift_inte", - "ke_swift_intx", - "ke_swift_invs", - "ke_swift_istx", - "ke_swift_licf", - "ke_swift_lifi", - "ke_swift_loan", - "ke_swift_mach", - "ke_swift_mafc", - "ke_swift_mdcs", - "ke_swift_merc", - "ke_swift_paye", - "ke_swift_pena", - "ke_swift_pl39", - "ke_swift_pl40", - "ke_swift_pl41", - "ke_swift_pl42", - "ke_swift_pl43", - "ke_swift_pl44", - "ke_swift_pl45", - "ke_swift_pl46", - "ke_swift_pl47", - "ke_swift_pl48", - "ke_swift_pl49", - "ke_swift_pl50", - "ke_swift_pl51", - "ke_swift_pl52", - "ke_swift_pl53", - "ke_swift_ppti", - "ke_swift_prpy", - "ke_swift_psco", - "ke_swift_refu", - "ke_swift_relg", - "ke_swift_rent", - "ke_swift_ritx", - "ke_swift_rlwy", - "ke_swift_sala", - "ke_swift_savg", - "ke_swift_scho", - "ke_swift_sdtx", - "ke_swift_ship", - "ke_swift_swlf", - "ke_swift_taxr", - "ke_swift_taxs", - "ke_swift_tbil", - "ke_swift_tith", - "ke_swift_totx", - "ke_swift_trac", - "ke_swift_ubil", - "ke_swift_vatx", - "ke_swift_vipn", - "ke_swift_whld", - "ph_swift_1010101000", - "ph_swift_1010102001", - "ph_swift_1010102002", - "ph_swift_1010103001", - "ph_swift_1010103002", - "ph_swift_1010201000", - "ph_swift_1010202001", - "ph_swift_1010202002", - "ph_swift_1010203001", - "ph_swift_1010203002", - "ph_swift_1010300000", - "ph_swift_1110100001", - "ph_swift_1110200001", - "ph_swift_1110200002", - "ph_swift_1110200003", - "ph_swift_1110200004", - "ph_swift_1110300001", - "ph_swift_1110300002", - "ph_swift_1110300003", - "ph_swift_1110300004", - "ph_swift_1110400001", - "ph_swift_1110400002", - "ph_swift_1110400003", - "ph_swift_1110400004", - "ph_swift_1110400005", - "ph_swift_1110400006", - "ph_swift_1110500001", - "ph_swift_1110500002", - "ph_swift_1110500003", - "ph_swift_1110500004", - "ph_swift_1110500005", - "ph_swift_1110600001", - "ph_swift_1110700001", - "ph_swift_1310000001", - "ph_swift_1310000002", - "ph_swift_1310000003", - "ph_swift_1410100001", - "ph_swift_1410100002", - "ph_swift_1410200001", - "ph_swift_1410200002", - "ph_swift_1410200003", - "ph_swift_1410200004", - "ph_swift_1410300000", - "ph_swift_1410400000", - "ph_swift_1410500000", - "ph_swift_1410600000", - "ph_swift_1510000001", - "ph_swift_1510000002", - "ph_swift_1510000003", - "ph_swift_1510000004", - "ph_swift_1510000005", - "ph_swift_1510000006", - "ph_swift_1510000007", - "ph_swift_1510000008", - "ph_swift_1510000009", - "ph_swift_1510000010", - "ph_swift_1510000011", - "ph_swift_1510000012", - "ph_swift_1510000013", - "ph_swift_1510000014", - "ph_swift_1510000015", - "ph_swift_1510000016", - "ph_swift_1510000017", - "ph_swift_1510000018", - "ph_swift_1510000019", - "ph_swift_1510000020", - "ph_swift_1510000021", - "ph_swift_1510000023", - "ph_swift_1510000024", - "ph_swift_1510000025", - "ph_swift_210000001", - "ph_swift_210000002", - "ph_swift_210000003", - "ph_swift_210000004", - "ph_swift_210000005", - "ph_swift_210000006", - "ph_swift_210000007", - "ph_swift_210000008", - "ph_swift_210000009", - "ph_swift_210000010", - "ph_swift_510100001", - "ph_swift_510200001", - "ph_swift_510200002", - "ph_swift_510301001", - "ph_swift_510301002", - "ph_swift_510301003", - "ph_swift_510302001", - "ph_swift_510302002", - "ph_swift_510302003", - "ph_swift_510303000", - "ph_swift_510401000", - "ph_swift_510402001", - "ph_swift_510402002", - "ph_swift_510402003", - "ph_swift_510402004", - "ph_swift_510402005", - "ph_swift_510402006", - "ph_swift_510402007", - "ph_swift_510500001", - "ph_swift_510500002", - "ph_swift_510600001", - "ph_swift_510600002", - "ph_swift_510600003", - "ph_swift_510600004", - "ph_swift_510700000", - "ph_swift_510800001", - "ph_swift_510800002", - "ph_swift_510900000", - "ph_swift_511000001", - "ph_swift_511000002", - "ph_swift_511100001", - "ph_swift_511100002", - "ph_swift_511100003", - "ph_swift_511200000", - "ph_swift_511300001", - "ph_swift_511300002", - "ph_swift_511300003", - "ph_swift_511300004", - "ph_swift_511300005", - "ph_swift_511300006", - "ph_swift_511300007", - "ph_swift_511300008", - "ph_swift_511400001", - "ph_swift_511400002", - "ph_swift_511400003", - "ph_swift_511400004", - "ph_swift_511400005", - "ph_swift_511500001", - "ph_swift_511500002", - "ph_swift_511500003", - "ph_swift_511500004", - "ph_swift_511600001", - "ph_swift_511600002", - "ph_swift_511600003", - "ph_swift_511700001", - "ph_swift_511700002", - "ph_swift_511700003", - "ph_swift_610000001", - "ph_swift_610000002", - "ph_swift_610000003", - "ph_swift_610000004", - "ph_swift_610000005", - "ph_swift_610000006", - "ph_swift_610000007", - "ph_swift_710100001", - "ph_swift_710100002", - "ph_swift_710100003", - "ph_swift_710100004", - "ph_swift_710100006", - "ph_swift_710100007", - "ph_swift_710100008", - "ph_swift_710100009", - "ph_swift_710200001", - "ph_swift_710200002", - "ph_swift_710200003", - "ph_swift_710200004", - "ph_swift_710200009", - "ph_swift_710300001", - "ph_swift_710300002", - "ph_swift_710300003", - "ph_swift_710300004", - "ph_swift_710300009", - "ph_swift_710400001", - "ph_swift_710400002", - "ph_swift_810101001", - "ph_swift_810101002", - "ph_swift_810101003", - "ph_swift_810101004", - "ph_swift_810101007", - "ph_swift_810101008", - "ph_swift_810101011", - "ph_swift_810102001", - "ph_swift_810102002", - "ph_swift_810102003", - "ph_swift_810102004", - "ph_swift_810102005", - "ph_swift_810102006", - "ph_swift_810102007", - "ph_swift_810102008", - "ph_swift_810102009", - "ph_swift_810201001", - "ph_swift_810201002", - "ph_swift_810201003", - "ph_swift_810201004", - "ph_swift_810202001", - "ph_swift_810202002", - "ph_swift_810202003", - "ph_swift_810202005", - "ph_swift_810202006", - "ph_swift_910100001", - "ph_swift_910100002", - "ph_swift_910100003", - "ph_swift_910100004", - "ph_swift_910100005", - "ph_swift_910100006", - "ph_swift_910100007", - "ph_swift_910100009", - "ph_swift_910100010", - "ph_swift_910100011", - "ph_swift_910200001", - "ph_swift_910200002", - "ph_swift_910200003", - "ph_swift_910200004", - "ph_swift_910200005", - "ph_swift_910200006", - "ph_swift_910200007", - "ph_swift_910200009", - "ph_swift_910200010", - "ph_swift_910200011", - "pk_swift_9009", - "pk_swift_9010", - "pk_swift_9011", - "pk_swift_9012", - "pk_swift_9013", - "pk_swift_9014", - "pk_swift_9015", - "pk_swift_9016", - "pk_swift_9017", - "pk_swift_9018", - "pk_swift_9019", - "pk_swift_9020", - "pk_swift_9021", - "pk_swift_9022", - "pk_swift_9023", - "pk_swift_9024", - "pk_swift_9025", - "pk_swift_9026", - "pk_swift_9027", - "pk_swift_9028", - "pk_swift_9029", - "pk_swift_9030", - "pk_swift_9031", - "pk_swift_9032", - "pk_swift_9033", - "pk_swift_9041", - "pk_swift_9051", - "pk_swift_9052", - "pk_swift_9061", - "pk_swift_9071", - "pk_swift_9072", - "pk_swift_9073", - "pk_swift_9081", - "pk_swift_9082", - "pk_swift_9083", - "pk_swift_9084", - "pk_swift_9085", - "pk_swift_9086", - "pk_swift_9091", - "pk_swift_9092", - "pk_swift_9101", - "pk_swift_9102", - "pk_swift_9111", - "pk_swift_9121", - "pk_swift_9122", - "pk_swift_9124", - "pk_swift_9141", - "pk_swift_9146", - "pk_swift_9151", - "pk_swift_9152", - "pk_swift_9161", - "pk_swift_9171", - "pk_swift_9172", - "pk_swift_9173", - "pk_swift_9174", - "pk_swift_9181", - "pk_swift_9182", - "pk_swift_9183", - "pk_swift_9184", - "pk_swift_9185", - "pk_swift_9186", - "pk_swift_9191", - "pk_swift_9192", - "pk_swift_9193", - "pk_swift_9201", - "pk_swift_9202", - "pk_swift_9211", - "pk_swift_9212", - "pk_swift_9221", - "pk_swift_9222", - "pk_swift_9230", - "pk_swift_9231", - "pk_swift_9232", - "pk_swift_9233", - "pk_swift_9234", - "pk_swift_9235", - "pk_swift_9236", - "pk_swift_9237", - "pk_swift_9238", - "pk_swift_9239", - "pk_swift_9241", - "pk_swift_9242", - "pk_swift_9243", - "pk_swift_9244", - "pk_swift_9247", - "pk_swift_9248", - "pk_swift_9249", - "pk_swift_9250", - "pk_swift_9251", - "pk_swift_9261", - "pk_swift_9262", - "pk_swift_9271", - "pk_swift_9272", - "pk_swift_9273", - "pk_swift_9281", - "pk_swift_9291", - "pk_swift_9301", - "pk_swift_9302", - "pk_swift_9303", - "pk_swift_9311", - "pk_swift_9312", - "pk_swift_9322", - "pk_swift_9323", - "pk_swift_9324", - "pk_swift_9331", - "pk_swift_9332", - "pk_swift_9333", - "pk_swift_9341", - "pk_swift_9351", - "pk_swift_9361", - "pk_swift_9381", - "pk_swift_9391", - "pk_swift_9401", - "pk_swift_9412", - "pk_swift_9414", - "pk_swift_9421", - "pk_swift_9422", - "pk_swift_9423", - "pk_swift_9426", - "pk_swift_9431", - "pk_swift_9432", - "pk_swift_9433", - "pk_swift_9434", - "pk_swift_9435", - "pk_swift_9441", - "pk_swift_9442", - "pk_swift_9443", - "pk_swift_9444", - "pk_swift_9445", - "pk_swift_9448", - "pk_swift_9451", - "pk_swift_9452", - "pk_swift_9453", - "pk_swift_9454", - "pk_swift_9455", - "pk_swift_9456", - "pk_swift_9457", - "pk_swift_9458", - "pk_swift_9459", - "pk_swift_9461", - "pk_swift_9462", - "pk_swift_9463", - "pk_swift_9468", - "pk_swift_9469", - "pk_swift_9470", - "pk_swift_9471", - "pk_swift_9472", - "pk_swift_9473", - "pk_swift_9474", - "pk_swift_9475", - "pk_swift_9476", - "pk_swift_9477", - "pk_swift_9478", - "pk_swift_9479", - "pk_swift_9481", - "pk_swift_9482", - "pk_swift_9483", - "pk_swift_9484", - "pk_swift_9491", - "pk_swift_9492", - "pk_swift_9493", - "pk_swift_9494", - "pk_swift_9501", - "pk_swift_9502", - "pk_swift_9503", - "pk_swift_9521", - "pk_swift_9522", - "pk_swift_9523", - "pk_swift_9524", - "pk_swift_9525", - "pk_swift_9526", - "pk_swift_9527", - "pk_swift_9528", - "pk_swift_9529", - "pk_swift_9530", - "pk_swift_9531", - "pk_swift_9532", - "pk_swift_9533", - "pk_swift_9534", - "pk_swift_9535", - "pk_swift_9536", - "pk_swift_9537", - "pk_swift_9538", - "pk_swift_9539", - "pk_swift_9541", - "pk_swift_9542", - "pk_swift_9543", - "pk_swift_9544", - "pk_swift_9545", - "pk_swift_9546", - "pk_swift_9547", - "pk_swift_9548", - "pk_swift_9549", - "pk_swift_9551", - "pk_swift_9552", - "pk_swift_9553", - "pk_swift_9554", - "pk_swift_9555", - "pk_swift_9556", - "pk_swift_9561", - "pk_swift_9562", - "pk_swift_9563", - "pk_swift_9564", - "pk_swift_9565", - "pk_swift_9566", - "pk_swift_9572", - "pk_swift_9573", - "pk_swift_9574", - "pk_swift_9582", - "pk_swift_9583", - "pk_swift_9584", - "pk_swift_9592", - "pk_swift_9593", - "pk_swift_9594", - "pk_swift_9595", - "pk_swift_9596", - "pk_swift_9597", - "pk_swift_9602", - "pk_swift_9605", - "pk_swift_9606", - "pk_swift_9607", - "pk_swift_9608", - "pk_swift_9609", - "pk_swift_9612", - "pk_swift_9613", - "pk_swift_9614", - "pk_swift_9622", - "pk_swift_9623", - "pk_swift_9624", - "pk_swift_9625", - "pk_swift_9637", - "pk_swift_9638", - "pk_swift_9641", - "pk_swift_9642", - "pk_swift_9643", - "pk_swift_9644", - "pk_swift_9645", - "pk_swift_9646", - "pk_swift_9647", - "pk_swift_9648", - "pk_swift_9649", - "pk_swift_9650", - "pk_swift_9651", - "pk_swift_9652", - "pk_swift_9653", - "pk_swift_9654", - "pk_swift_9668", - "pk_swift_9669", - "pk_swift_9673", - "pk_swift_9674", - "pk_swift_9675", - "pk_swift_9676", - "pk_swift_9677", - "pk_swift_9678", - "pk_swift_9681", - "pk_swift_9682", - "pk_swift_9693", - "pk_swift_9694", - "pk_swift_9695", - "pk_swift_9697", - "pk_swift_9698", - "pk_swift_9699", - "pk_swift_9703", - "pk_swift_9707", - "pk_swift_9708", - "za_swift_105", - "za_swift_220", - "za_swift_231", - "za_swift_242", - "za_swift_250", - "za_swift_251", - "za_swift_265", - "za_swift_266", - "za_swift_275", - "za_swift_276", - "za_swift_280", - "za_swift_285", - "za_swift_287", - "za_swift_288", - "za_swift_289", - "za_swift_290", - "za_swift_291", - "za_swift_296", - "za_swift_297", - "za_swift_308", - "za_swift_401", - "za_swift_10101", - "za_swift_10301", - "za_swift_27201" - ], - "example": "bh_swift_afl", - "type": [ - "string", - "null" - ] - }, - "tax_id": { - "example": "536804398", - "maxLength": 32, - "type": [ - "string", - "null" - ] - }, - "ted_bank_code": { - "example": "033", - "pattern": "^\\d{3,5}$", - "type": [ - "string", - "null" - ] - }, - "ted_branch_code": { - "example": "0001", - "pattern": "^\\d{4}(-\\d)?$", - "type": [ - "string", - "null" - ] - }, - "ted_cpf_cnpj": { - "example": "12345678901", - "type": [ - "string", - "null" - ] - }, - "transfers_account": { - "example": "BM123123123123", - "type": [ - "string", - "null" - ] - }, - "transfers_type": { - "enum": [ - "CVU", - "CBU", - "ALIAS" - ], - "example": "CVU", - "type": [ - "string", - "null" - ] - }, - "tron_wallet_hash": { - "example": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t", - "type": [ - "string", - "null" - ] - }, - "type": { - "enum": [ - "wire", - "ach", - "pix", - "pix_safe", - "ted", - "spei_bitso", - "transfers_bitso", - "ach_cop_bitso", - "international_swift", - "rtp", - "sepa" - ], - "example": "wire", - "type": "string" - }, - "webhook_event": { - "enum": [ - "bankAccount.new" - ], - "type": "string" - } - }, - "required": [ - "webhook_event", - "id", - "type", - "name" - ], - "type": "object" - }, - "BillingDetails": { - "properties": { - "address_line_1": { - "example": "8 The Green, #19364", - "type": "string" - }, - "address_line_2": { - "example": "Suite 200", - "type": "string" - }, - "city": { - "example": "Dover", - "type": "string" - }, - "copy_emails": { - "default": [], - "description": "Optional CC emails for billing communications", - "example": [ - "finance@example.com" - ], - "items": { - "format": "email", - "type": "string" - }, - "type": "array" - }, - "country": { - "example": "United States", - "type": "string" - }, - "email": { - "anyOf": [ - { - "format": "email", - "type": "string" - }, - { - "enum": [ - "" - ], - "type": "string" - } - ], - "example": "billing@blindpay.com" - }, - "name": { - "example": "Blind Pay, Inc.", - "type": "string" - }, - "postal_code": { - "example": "19901", - "type": "string" - }, - "state_province_region": { - "example": "DE", - "type": "string" - }, - "tax_id": { - "example": "123456789", - "type": "string" - } - }, - "required": [ - "name", - "email", - "tax_id", - "address_line_1", - "address_line_2", - "city", - "state_province_region", - "postal_code", - "country" - ], - "type": "object" - }, - "BillingSubscription": { - "properties": { - "billing_charge": { - "description": "If true, fees are charged via monthly invoice instead of at transaction time", - "example": false, - "type": [ - "boolean", - "null" - ] - }, - "invoice_due_date_days": { - "description": "Days after period end when invoice is due", - "example": 15, - "type": "integer" - }, - "minimum_per_month": { - "description": "Minimum monthly billing amount in cents", - "example": 0, - "type": "integer" - }, - "started_at": { - "description": "When the subscription started", - "example": "2025-01-01T00:00:00.000Z", - "format": "date-time", - "type": [ - "string", - "null" - ] - }, - "status": { - "description": "Subscription billing status: active (no issues), overdue (invoice past due), pending (awaiting payment)", - "enum": [ - "active", - "pending_payment", - "past_due", - "cancelled" - ], - "example": "active", - "type": "string" - }, - "subscription_plan": { - "description": "Subscription plan: Basic, Business, or Enterprise", - "enum": [ - "Basic", - "Business", - "Enterprise" - ], - "example": "Basic", - "type": [ - "string", - "null" - ] - }, - "subscription_price": { - "description": "Subscription price in cents", - "example": 24900, - "type": "integer" - } - }, - "required": [ - "minimum_per_month", - "subscription_price", - "invoice_due_date_days", - "status" - ], - "type": "object" - }, - "BlockchainWalletMessageOut": { - "properties": { - "message": { - "type": "string" - } - }, - "required": [ - "message" - ], - "type": "object" - }, - "BlockchainWalletOut": { - "properties": { - "address": { - "example": "0xDD6a3aD0949396e57C7738ba8FC1A46A5a1C372C", - "type": [ - "string", - "null" - ] - }, - "customer_id": { - "example": "re_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - }, - "id": { - "example": "bw_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - }, - "is_account_abstraction": { - "example": false, - "type": [ - "boolean", - "null" - ] - }, - "name": { - "example": "Wallet Display Name", - "type": [ - "string", - "null" - ] - }, - "network": { - "enum": [ - "base", - "sepolia", - "arbitrum_sepolia", - "base_sepolia", - "arbitrum", - "polygon", - "polygon_amoy", - "ethereum", - "stellar", - "stellar_testnet", - "tron", - "solana", - "solana_devnet" - ], - "example": "polygon", - "type": [ - "string", - "null" - ] - }, - "signature_tx_hash": { - "example": "0x3c499c542cef5e3811e1192ce70d8cc03d5c3359", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "id", - "name", - "network", - "customer_id" - ], - "type": "object" - }, - "BlockchainWalletWebhookOut": { - "properties": { - "address": { - "example": "0xDD6a3aD0949396e57C7738ba8FC1A46A5a1C372C", - "type": [ - "string", - "null" - ] - }, - "customer_id": { - "example": "re_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - }, - "id": { - "example": "bw_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - }, - "is_account_abstraction": { - "example": false, - "type": [ - "boolean", - "null" - ] - }, - "name": { - "example": "Wallet Display Name", - "type": [ - "string", - "null" - ] - }, - "network": { - "enum": [ - "base", - "sepolia", - "arbitrum_sepolia", - "base_sepolia", - "arbitrum", - "polygon", - "polygon_amoy", - "ethereum", - "stellar", - "stellar_testnet", - "tron", - "solana", - "solana_devnet" - ], - "example": "polygon", - "type": [ - "string", - "null" - ] - }, - "signature_tx_hash": { - "example": "0x3c499c542cef5e3811e1192ce70d8cc03d5c3359", - "type": [ - "string", - "null" - ] - }, - "webhook_event": { - "enum": [ - "blockchainWallet.new" - ], - "type": "string" - } - }, - "required": [ - "webhook_event", - "id", - "name", - "network", - "customer_id" - ], - "type": "object" - }, - "CircleTransactionWebhookOut": { - "properties": { - "notification": { - "properties": { - "amounts": { - "items": { - "type": "string" - }, - "type": "array" - }, - "blockchain": { - "enum": [ - "ETH", - "ETH-SEPOLIA", - "AVAX", - "AVAX-FUJI", - "MATIC", - "MATIC-AMOY", - "SOL", - "SOL-DEVNET", - "ARB", - "ARB-SEPOLIA", - "BASE", - "BASE-SEPOLIA", - "NEAR", - "NEAR-TESTNET", - "EVM", - "EVM-TESTNET", - "UNI-SEPOLIA" - ], - "type": "string" - }, - "createDate": { - "type": [ - "string", - "null" - ] - }, - "destinationAddress": { - "type": [ - "string", - "null" - ] - }, - "errorReason": { - "type": [ - "string", - "null" - ] - }, - "id": { - "type": "string" - }, - "networkFeeInUSD": { - "type": [ - "string", - "null" - ] - }, - "refId": { - "type": [ - "string", - "null" - ] - }, - "sourceAddress": { - "type": [ - "string", - "null" - ] - }, - "state": { - "enum": [ - "INITIATED", - "PENDING_RISK_SCREENING", - "CLEARED", - "QUEUED", - "SENT", - "STUCK", - "CONFIRMED", - "COMPLETE", - "DENIED", - "FAILED", - "CANCELLED", - "ACCELERATED" - ], - "type": "string" - }, - "tokenId": { - "type": "string" - }, - "transactionType": { - "enum": [ - "OUTBOUND", - "INBOUND" - ], - "type": "string" - }, - "txHash": { - "type": [ - "string", - "null" - ] - }, - "updateDate": { - "type": [ - "string", - "null" - ] - }, - "walletId": { - "type": "string" - } - }, - "required": [ - "id", - "state", - "transactionType", - "blockchain", - "tokenId", - "amounts", - "walletId" - ], - "type": "object" - }, - "notificationType": { - "enum": [ - "transactions.outbound", - "transactions.inbound" - ], - "type": "string" - }, - "timestamp": { - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "notificationType", - "notification" - ], - "type": "object" - }, - "CollectInvoiceBody": { - "properties": { - "network": { - "description": "Blockchain network for collection", - "enum": [ - "polygon", - "base", - "arbitrum", - "ethereum", - "tron", - "solana", - "stellar" - ], - "example": "polygon", - "type": "string" - }, - "token": { - "description": "Token to collect", - "enum": [ - "USDC", - "USDT" - ], - "example": "USDC", - "type": "string" - }, - "wallet_address": { - "description": "Wallet address to receive partner fees", - "example": "0x1234567890abcdef1234567890abcdef12345678", - "type": "string" - } - }, - "required": [ - "network", - "token", - "wallet_address" - ], - "type": "object" - }, - "CollectInvoiceSchemaOut": { - "properties": { - "amount": { - "description": "Amount to collect in cents", - "example": 50000, - "type": "integer" - }, - "collection_id": { - "description": "Invoice collection record ID", - "example": "ic_000000000000", - "type": "string" - }, - "network": { - "example": "polygon", - "type": "string" - }, - "status": { - "enum": [ - "pending", - "processing", - "completed", - "failed" - ], - "example": "pending", - "type": "string" - }, - "token": { - "example": "USDC", - "type": "string" - }, - "wallet_address": { - "example": "0x1234567890abcdef1234567890abcdef12345678", - "type": "string" - } - }, - "required": [ - "collection_id", - "status", - "amount", - "network", - "token", - "wallet_address" - ], - "type": "object" - }, - "CopyInstanceMembersIn": { - "properties": { - "source_instance_id": { - "example": "in_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - } - }, - "required": [ - "source_instance_id" - ], - "type": "object" - }, - "CopyInstanceMembersOut": { - "properties": { - "copied_invites": { - "example": 1, - "type": "integer" - }, - "copied_members": { - "example": 3, - "type": "integer" - }, - "skipped_members": { - "description": "Source members that already belong to the target instance", - "example": 2, - "type": "integer" - } - }, - "required": [ - "copied_members", - "copied_invites", - "skipped_members" - ], - "type": "object" - }, - "CreateApiKeyIn": { - "properties": { - "ip_whitelist": { - "example": [ - "127.0.0.1", - "192.168.0.1" - ], - "items": { - "format": "ip", - "type": "string" - }, - "type": [ - "array", - "null" - ] - }, - "name": { - "example": "API Key Name", - "minLength": 1, - "type": "string" - }, - "permission": { - "enum": [ - "full_access" - ], - "example": "full_access", - "type": "string" - } - }, - "required": [ - "name", - "permission" - ], - "type": "object" - }, - "CreateApiKeyOut": { - "properties": { - "id": { - "example": "ap_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - }, - "token": { - "example": "token", - "type": "string" - } - }, - "required": [ - "id", - "token" - ], - "type": "object" - }, - "CreateBankAccountIn": { - "properties": { - "account_class": { - "enum": [ - "individual", - "business" - ], - "example": "individual", - "type": [ - "string", - "null" - ] - }, - "account_number": { - "example": "1001001234", - "type": [ - "string", - "null" - ] - }, - "account_type": { - "enum": [ - "checking", - "saving" - ], - "example": "checking", - "type": [ - "string", - "null" - ] - }, - "ach_cop_bank_account": { - "example": "12345678", - "type": [ - "string", - "null" - ] - }, - "ach_cop_bank_code": { - "example": "051", - "type": [ - "string", - "null" - ] - }, - "ach_cop_beneficiary_first_name": { - "example": "Fernando", - "type": [ - "string", - "null" - ] - }, - "ach_cop_beneficiary_last_name": { - "example": "Guzman Alarc\u00f3n", - "type": [ - "string", - "null" - ] - }, - "ach_cop_document_id": { - "example": "1661105408", - "type": [ - "string", - "null" - ] - }, - "ach_cop_document_type": { - "description": "CC - C\u00e9dula de Ciudadan\u00eda; CE - C\u00e9dula de Extranjer\u00eda; NIT - N\u00famero de Identificaci\u00f3n Tributaria; PASS - Passport; PEP - Permiso Especial de Permanencia", - "enum": [ - "CC", - "CE", - "NIT", - "PASS", - "PEP" - ], - "example": "CC", - "type": [ - "string", - "null" - ] - }, - "ach_cop_email": { - "example": "fernando.guzman@gmail.com", - "type": [ - "string", - "null" - ] - }, - "address_line_1": { - "example": "Address line 1", - "type": [ - "string", - "null" - ] - }, - "address_line_2": { - "example": "Address line 2", - "type": [ - "string", - "null" - ] - }, - "beneficiary_name": { - "example": "Individual full name or business name", - "maxLength": 128, - "type": [ - "string", - "null" - ] - }, - "business_industry": { - "enum": [ - "111998", - "112120", - "113310", - "115114", - "541211", - "541810", - "541430", - "541715", - "541930", - "561422", - "561311", - "561612", - "561740", - "561730", - "236115", - "236220", - "237310", - "238210", - "811111", - "812111", - "812112", - "532111", - "624410", - "541922", - "811210", - "812199", - "611110", - "611310", - "611410", - "611710", - "211120", - "212114", - "221310", - "562111", - "562920", - "213112", - "522110", - "522210", - "522320", - "523150", - "523940", - "523999", - "524113", - "813110", - "813211", - "813219", - "551112", - "721110", - "722511", - "722513", - "561510", - "713110", - "713210", - "712110", - "711110", - "711211", - "621111", - "621210", - "622110", - "623110", - "621511", - "623220", - "541940", - "621399", - "621910", - "541110", - "311421", - "337121", - "322220", - "339920", - "334210", - "339930", - "312130", - "334111", - "334118", - "325412", - "339112", - "336110", - "336390", - "315990", - "313110", - "339910", - "516120", - "513130", - "512250", - "519130", - "711410", - "711510", - "531110", - "531120", - "531130", - "531190", - "531210", - "531311", - "531312", - "531320", - "531390", - "454110", - "445110", - "455110", - "457110", - "449210", - "444110", - "459210", - "459120", - "445320", - "458110", - "458210", - "458310", - "455219", - "424210", - "456110", - "446120", - "541511", - "541512", - "541519", - "518210", - "511210", - "517111", - "517112", - "517410", - "481111", - "483111", - "485210", - "488510", - "484121", - "493110", - "423430", - "423690", - "423110", - "423830", - "423840", - "423510", - "424690", - "424990", - "424410", - "424480", - "423940", - "541611", - "541618", - "541330", - "541990", - "541214", - "561499" - ], - "example": "541511", - "type": [ - "string", - "null" - ] - }, - "checkbook_account_id": { - "example": "dc809ff8f4d3417d83e5697e76f0b88a", - "type": [ - "string", - "null" - ] - }, - "checkbook_user_key": { - "example": "d84fd0dc-3882-4de9-97f8-656730214619", - "type": [ - "string", - "null" - ] - }, - "city": { - "example": "City", - "type": [ - "string", - "null" - ] - }, - "country": { - "enum": [ - "AF", - "AL", - "DZ", - "AS", - "AD", - "AO", - "AI", - "AQ", - "AG", - "AR", - "AM", - "AW", - "AU", - "AT", - "AZ", - "BS", - "BH", - "BD", - "BB", - "BY", - "BE", - "BZ", - "BJ", - "BM", - "BT", - "BO", - "BQ", - "BA", - "BW", - "BV", - "BR", - "IO", - "BN", - "BG", - "BF", - "BI", - "CV", - "KH", - "CM", - "CA", - "KY", - "CF", - "TD", - "CL", - "CN", - "CX", - "CC", - "CO", - "KM", - "CD", - "CG", - "CK", - "CR", - "HR", - "CU", - "CW", - "CY", - "CZ", - "CI", - "DK", - "DJ", - "DM", - "DO", - "EC", - "EG", - "SV", - "GQ", - "ER", - "EE", - "SZ", - "ET", - "FK", - "FO", - "FJ", - "FI", - "FR", - "GF", - "PF", - "TF", - "GA", - "GM", - "GE", - "DE", - "GH", - "GI", - "GR", - "GL", - "GD", - "GP", - "GU", - "GT", - "GG", - "GN", - "GW", - "GY", - "HT", - "HM", - "VA", - "HN", - "HK", - "HU", - "IS", - "IN", - "ID", - "IR", - "IQ", - "IE", - "IM", - "IL", - "IT", - "JM", - "JP", - "JE", - "JO", - "KZ", - "KE", - "KI", - "KP", - "KR", - "KW", - "KG", - "LA", - "LV", - "LB", - "LS", - "LR", - "LY", - "LI", - "LT", - "LU", - "MO", - "MG", - "MW", - "MY", - "MV", - "ML", - "MT", - "MH", - "MQ", - "MR", - "MU", - "YT", - "MX", - "FM", - "MD", - "MC", - "MN", - "ME", - "MS", - "MA", - "MZ", - "MM", - "NA", - "NR", - "NP", - "NL", - "NC", - "NZ", - "NI", - "NE", - "NG", - "NU", - "NF", - "MP", - "NO", - "OM", - "PK", - "PW", - "PS", - "PA", - "PG", - "PY", - "PE", - "PH", - "PN", - "PL", - "PT", - "PR", - "QA", - "MK", - "RO", - "RU", - "RW", - "RE", - "BL", - "SH", - "KN", - "LC", - "MF", - "PM", - "VC", - "WS", - "SM", - "ST", - "SA", - "SN", - "RS", - "SC", - "SL", - "SG", - "SX", - "SK", - "SI", - "SB", - "SO", - "ZA", - "GS", - "SS", - "ES", - "LK", - "SD", - "SR", - "SJ", - "SE", - "CH", - "SY", - "TW", - "TJ", - "TZ", - "TH", - "TL", - "TG", - "TK", - "TO", - "TT", - "TN", - "TR", - "TM", - "TC", - "TV", - "UG", - "UA", - "AE", - "GB", - "UM", - "US", - "UY", - "UZ", - "VU", - "VE", - "VN", - "VG", - "VI", - "WF", - "EH", - "YE", - "ZM", - "ZW", - "AX" - ], - "example": "US", - "type": [ - "string", - "null" - ] - }, - "date_of_birth": { - "anyOf": [ - { - "format": "date-time", - "type": "string" - }, - { - "type": "string" - }, - { - "type": "null" - } - ], - "example": "1998-01-01T00:00:00Z" - }, - "force_cpf_cnpj": { - "description": "Force CPF/CNPJ validation for PIX key", - "example": false, - "type": [ - "boolean", - "null" - ] - }, - "name": { - "example": "Bank Account Name", - "type": "string" - }, - "onemoney_external_account_id": { - "example": "ex_000000000000", - "type": [ - "string", - "null" - ] - }, - "phone_number": { - "example": "+13055555555", - "type": [ - "string", - "null" - ] - }, - "pix_key": { - "example": "14947677768", - "type": [ - "string", - "null" - ] - }, - "pix_safe_bank_code": { - "example": "00416968", - "pattern": "^\\d{4,8}$", - "type": [ - "string", - "null" - ] - }, - "pix_safe_branch_code": { - "example": "0001", - "pattern": "^\\d{4}(-\\d)?$", - "type": [ - "string", - "null" - ] - }, - "pix_safe_cpf_cnpj": { - "example": "12345678901", - "type": [ - "string", - "null" - ] - }, - "postal_code": { - "example": "Postal code", - "type": [ - "string", - "null" - ] - }, - "recipient_relationship": { - "enum": [ - "first_party", - "employee", - "independent_contractor", - "vendor_or_supplier", - "subsidiary_or_affiliate", - "merchant_or_partner", - "customer", - "landlord", - "family", - "other" - ], - "example": "vendor_or_supplier", - "type": [ - "string", - "null" - ] - }, - "routing_number": { - "example": "012345678", - "type": [ - "string", - "null" - ] - }, - "sepa_beneficiary_address_line_1": { - "example": "Friedrichstra\u00dfe 12", - "type": [ - "string", - "null" - ] - }, - "sepa_beneficiary_address_line_2": { - "example": "Apt 4B", - "type": [ - "string", - "null" - ] - }, - "sepa_beneficiary_bic": { - "description": "BIC/SWIFT code of the beneficiary bank", - "example": "TRWIBEB1XXX", - "type": [ - "string", - "null" - ] - }, - "sepa_beneficiary_city": { - "example": "Berlin", - "type": [ - "string", - "null" - ] - }, - "sepa_beneficiary_country": { - "enum": [ - "AF", - "AL", - "DZ", - "AS", - "AD", - "AO", - "AI", - "AQ", - "AG", - "AR", - "AM", - "AW", - "AU", - "AT", - "AZ", - "BS", - "BH", - "BD", - "BB", - "BY", - "BE", - "BZ", - "BJ", - "BM", - "BT", - "BO", - "BQ", - "BA", - "BW", - "BV", - "BR", - "IO", - "BN", - "BG", - "BF", - "BI", - "CV", - "KH", - "CM", - "CA", - "KY", - "CF", - "TD", - "CL", - "CN", - "CX", - "CC", - "CO", - "KM", - "CD", - "CG", - "CK", - "CR", - "HR", - "CU", - "CW", - "CY", - "CZ", - "CI", - "DK", - "DJ", - "DM", - "DO", - "EC", - "EG", - "SV", - "GQ", - "ER", - "EE", - "SZ", - "ET", - "FK", - "FO", - "FJ", - "FI", - "FR", - "GF", - "PF", - "TF", - "GA", - "GM", - "GE", - "DE", - "GH", - "GI", - "GR", - "GL", - "GD", - "GP", - "GU", - "GT", - "GG", - "GN", - "GW", - "GY", - "HT", - "HM", - "VA", - "HN", - "HK", - "HU", - "IS", - "IN", - "ID", - "IR", - "IQ", - "IE", - "IM", - "IL", - "IT", - "JM", - "JP", - "JE", - "JO", - "KZ", - "KE", - "KI", - "KP", - "KR", - "KW", - "KG", - "LA", - "LV", - "LB", - "LS", - "LR", - "LY", - "LI", - "LT", - "LU", - "MO", - "MG", - "MW", - "MY", - "MV", - "ML", - "MT", - "MH", - "MQ", - "MR", - "MU", - "YT", - "MX", - "FM", - "MD", - "MC", - "MN", - "ME", - "MS", - "MA", - "MZ", - "MM", - "NA", - "NR", - "NP", - "NL", - "NC", - "NZ", - "NI", - "NE", - "NG", - "NU", - "NF", - "MP", - "NO", - "OM", - "PK", - "PW", - "PS", - "PA", - "PG", - "PY", - "PE", - "PH", - "PN", - "PL", - "PT", - "PR", - "QA", - "MK", - "RO", - "RU", - "RW", - "RE", - "BL", - "SH", - "KN", - "LC", - "MF", - "PM", - "VC", - "WS", - "SM", - "ST", - "SA", - "SN", - "RS", - "SC", - "SL", - "SG", - "SX", - "SK", - "SI", - "SB", - "SO", - "ZA", - "GS", - "SS", - "ES", - "LK", - "SD", - "SR", - "SJ", - "SE", - "CH", - "SY", - "TW", - "TJ", - "TZ", - "TH", - "TL", - "TG", - "TK", - "TO", - "TT", - "TN", - "TR", - "TM", - "TC", - "TV", - "UG", - "UA", - "AE", - "GB", - "UM", - "US", - "UY", - "UZ", - "VU", - "VE", - "VN", - "VG", - "VI", - "WF", - "EH", - "YE", - "ZM", - "ZW", - "AX" - ], - "example": "DE", - "type": [ - "string", - "null" - ] - }, - "sepa_beneficiary_legal_name": { - "example": "Hans M\u00fcller", - "maxLength": 128, - "type": [ - "string", - "null" - ] - }, - "sepa_beneficiary_postal_code": { - "example": "10117", - "type": [ - "string", - "null" - ] - }, - "sepa_beneficiary_state_province_region": { - "example": "Berlin", - "type": [ - "string", - "null" - ] - }, - "sepa_iban": { - "example": "DE89370400440532013000", - "type": [ - "string", - "null" - ] - }, - "spei_clabe": { - "example": "5482347403740546", - "type": [ - "string", - "null" - ] - }, - "spei_institution_code": { - "example": "40002", - "maxLength": 5, - "minLength": 5, - "type": [ - "string", - "null" - ] - }, - "spei_protocol": { - "description": "For debitcard and phonenum the spei_institution_code is required", - "enum": [ - "clabe", - "debitcard", - "phonenum" - ], - "example": "clabe", - "type": [ - "string", - "null" - ] - }, - "state_province_region": { - "example": "State/Province/Region", - "type": [ - "string", - "null" - ] - }, - "status": { - "enum": [ - "verifying", - "approved", - "rejected", - "deprecated" - ], - "example": "verifying", - "type": [ - "string", - "null" - ] - }, - "swift_account_holder_name": { - "example": "John Doe", - "maxLength": 50, - "type": [ - "string", - "null" - ] - }, - "swift_account_number_iban": { - "example": "123456789", - "type": [ - "string", - "null" - ] - }, - "swift_bank_address_line_1": { - "example": "123 Main Street, Suite 100, Downtown District, City Center CP 12345", - "type": [ - "string", - "null" - ] - }, - "swift_bank_address_line_2": { - "example": "456 Oak Avenue, Building 7, Financial District, Business Center CP 54321", - "type": [ - "string", - "null" - ] - }, - "swift_bank_city": { - "example": "City", - "type": [ - "string", - "null" - ] - }, - "swift_bank_country": { - "enum": [ - "AF", - "AL", - "DZ", - "AS", - "AD", - "AO", - "AI", - "AQ", - "AG", - "AR", - "AM", - "AW", - "AU", - "AT", - "AZ", - "BS", - "BH", - "BD", - "BB", - "BY", - "BE", - "BZ", - "BJ", - "BM", - "BT", - "BO", - "BQ", - "BA", - "BW", - "BV", - "BR", - "IO", - "BN", - "BG", - "BF", - "BI", - "CV", - "KH", - "CM", - "CA", - "KY", - "CF", - "TD", - "CL", - "CN", - "CX", - "CC", - "CO", - "KM", - "CD", - "CG", - "CK", - "CR", - "HR", - "CU", - "CW", - "CY", - "CZ", - "CI", - "DK", - "DJ", - "DM", - "DO", - "EC", - "EG", - "SV", - "GQ", - "ER", - "EE", - "SZ", - "ET", - "FK", - "FO", - "FJ", - "FI", - "FR", - "GF", - "PF", - "TF", - "GA", - "GM", - "GE", - "DE", - "GH", - "GI", - "GR", - "GL", - "GD", - "GP", - "GU", - "GT", - "GG", - "GN", - "GW", - "GY", - "HT", - "HM", - "VA", - "HN", - "HK", - "HU", - "IS", - "IN", - "ID", - "IR", - "IQ", - "IE", - "IM", - "IL", - "IT", - "JM", - "JP", - "JE", - "JO", - "KZ", - "KE", - "KI", - "KP", - "KR", - "KW", - "KG", - "LA", - "LV", - "LB", - "LS", - "LR", - "LY", - "LI", - "LT", - "LU", - "MO", - "MG", - "MW", - "MY", - "MV", - "ML", - "MT", - "MH", - "MQ", - "MR", - "MU", - "YT", - "MX", - "FM", - "MD", - "MC", - "MN", - "ME", - "MS", - "MA", - "MZ", - "MM", - "NA", - "NR", - "NP", - "NL", - "NC", - "NZ", - "NI", - "NE", - "NG", - "NU", - "NF", - "MP", - "NO", - "OM", - "PK", - "PW", - "PS", - "PA", - "PG", - "PY", - "PE", - "PH", - "PN", - "PL", - "PT", - "PR", - "QA", - "MK", - "RO", - "RU", - "RW", - "RE", - "BL", - "SH", - "KN", - "LC", - "MF", - "PM", - "VC", - "WS", - "SM", - "ST", - "SA", - "SN", - "RS", - "SC", - "SL", - "SG", - "SX", - "SK", - "SI", - "SB", - "SO", - "ZA", - "GS", - "SS", - "ES", - "LK", - "SD", - "SR", - "SJ", - "SE", - "CH", - "SY", - "TW", - "TJ", - "TZ", - "TH", - "TL", - "TG", - "TK", - "TO", - "TT", - "TN", - "TR", - "TM", - "TC", - "TV", - "UG", - "UA", - "AE", - "GB", - "UM", - "US", - "UY", - "UZ", - "VU", - "VE", - "VN", - "VG", - "VI", - "WF", - "EH", - "YE", - "ZM", - "ZW", - "AX" - ], - "example": "MX", - "type": [ - "string", - "null" - ] - }, - "swift_bank_name": { - "example": "Banco Regional SA", - "type": [ - "string", - "null" - ] - }, - "swift_bank_postal_code": { - "example": "11530", - "type": [ - "string", - "null" - ] - }, - "swift_bank_state_province_region": { - "example": "District", - "type": [ - "string", - "null" - ] - }, - "swift_beneficiary_address_line_1": { - "example": "123 MAIN STREET SUITE 100", - "type": [ - "string", - "null" - ] - }, - "swift_beneficiary_address_line_2": { - "example": "BUILDING A FLOOR 5", - "type": [ - "string", - "null" - ] - }, - "swift_beneficiary_city": { - "example": "MEXICO CITY", - "type": [ - "string", - "null" - ] - }, - "swift_beneficiary_country": { - "enum": [ - "AF", - "AL", - "DZ", - "AS", - "AD", - "AO", - "AI", - "AQ", - "AG", - "AR", - "AM", - "AW", - "AU", - "AT", - "AZ", - "BS", - "BH", - "BD", - "BB", - "BY", - "BE", - "BZ", - "BJ", - "BM", - "BT", - "BO", - "BQ", - "BA", - "BW", - "BV", - "BR", - "IO", - "BN", - "BG", - "BF", - "BI", - "CV", - "KH", - "CM", - "CA", - "KY", - "CF", - "TD", - "CL", - "CN", - "CX", - "CC", - "CO", - "KM", - "CD", - "CG", - "CK", - "CR", - "HR", - "CU", - "CW", - "CY", - "CZ", - "CI", - "DK", - "DJ", - "DM", - "DO", - "EC", - "EG", - "SV", - "GQ", - "ER", - "EE", - "SZ", - "ET", - "FK", - "FO", - "FJ", - "FI", - "FR", - "GF", - "PF", - "TF", - "GA", - "GM", - "GE", - "DE", - "GH", - "GI", - "GR", - "GL", - "GD", - "GP", - "GU", - "GT", - "GG", - "GN", - "GW", - "GY", - "HT", - "HM", - "VA", - "HN", - "HK", - "HU", - "IS", - "IN", - "ID", - "IR", - "IQ", - "IE", - "IM", - "IL", - "IT", - "JM", - "JP", - "JE", - "JO", - "KZ", - "KE", - "KI", - "KP", - "KR", - "KW", - "KG", - "LA", - "LV", - "LB", - "LS", - "LR", - "LY", - "LI", - "LT", - "LU", - "MO", - "MG", - "MW", - "MY", - "MV", - "ML", - "MT", - "MH", - "MQ", - "MR", - "MU", - "YT", - "MX", - "FM", - "MD", - "MC", - "MN", - "ME", - "MS", - "MA", - "MZ", - "MM", - "NA", - "NR", - "NP", - "NL", - "NC", - "NZ", - "NI", - "NE", - "NG", - "NU", - "NF", - "MP", - "NO", - "OM", - "PK", - "PW", - "PS", - "PA", - "PG", - "PY", - "PE", - "PH", - "PN", - "PL", - "PT", - "PR", - "QA", - "MK", - "RO", - "RU", - "RW", - "RE", - "BL", - "SH", - "KN", - "LC", - "MF", - "PM", - "VC", - "WS", - "SM", - "ST", - "SA", - "SN", - "RS", - "SC", - "SL", - "SG", - "SX", - "SK", - "SI", - "SB", - "SO", - "ZA", - "GS", - "SS", - "ES", - "LK", - "SD", - "SR", - "SJ", - "SE", - "CH", - "SY", - "TW", - "TJ", - "TZ", - "TH", - "TL", - "TG", - "TK", - "TO", - "TT", - "TN", - "TR", - "TM", - "TC", - "TV", - "UG", - "UA", - "AE", - "GB", - "UM", - "US", - "UY", - "UZ", - "VU", - "VE", - "VN", - "VG", - "VI", - "WF", - "EH", - "YE", - "ZM", - "ZW", - "AX" - ], - "example": "MX", - "type": [ - "string", - "null" - ] - }, - "swift_beneficiary_postal_code": { - "example": "11530", - "type": [ - "string", - "null" - ] - }, - "swift_beneficiary_state_province_region": { - "example": "MX", - "type": [ - "string", - "null" - ] - }, - "swift_code_bic": { - "example": "123456789", - "type": [ - "string", - "null" - ] - }, - "swift_ifsc_branch_code": { - "example": "BARB0AHIMCI", - "pattern": "^[A-Z]{4}0[A-Z0-9]{6}$", - "type": [ - "string", - "null" - ] - }, - "swift_intermediary_bank_account_number_iban": { - "example": "123456789", - "maxLength": 34, - "type": [ - "string", - "null" - ] - }, - "swift_intermediary_bank_country": { - "enum": [ - "AF", - "AL", - "DZ", - "AS", - "AD", - "AO", - "AI", - "AQ", - "AG", - "AR", - "AM", - "AW", - "AU", - "AT", - "AZ", - "BS", - "BH", - "BD", - "BB", - "BY", - "BE", - "BZ", - "BJ", - "BM", - "BT", - "BO", - "BQ", - "BA", - "BW", - "BV", - "BR", - "IO", - "BN", - "BG", - "BF", - "BI", - "CV", - "KH", - "CM", - "CA", - "KY", - "CF", - "TD", - "CL", - "CN", - "CX", - "CC", - "CO", - "KM", - "CD", - "CG", - "CK", - "CR", - "HR", - "CU", - "CW", - "CY", - "CZ", - "CI", - "DK", - "DJ", - "DM", - "DO", - "EC", - "EG", - "SV", - "GQ", - "ER", - "EE", - "SZ", - "ET", - "FK", - "FO", - "FJ", - "FI", - "FR", - "GF", - "PF", - "TF", - "GA", - "GM", - "GE", - "DE", - "GH", - "GI", - "GR", - "GL", - "GD", - "GP", - "GU", - "GT", - "GG", - "GN", - "GW", - "GY", - "HT", - "HM", - "VA", - "HN", - "HK", - "HU", - "IS", - "IN", - "ID", - "IR", - "IQ", - "IE", - "IM", - "IL", - "IT", - "JM", - "JP", - "JE", - "JO", - "KZ", - "KE", - "KI", - "KP", - "KR", - "KW", - "KG", - "LA", - "LV", - "LB", - "LS", - "LR", - "LY", - "LI", - "LT", - "LU", - "MO", - "MG", - "MW", - "MY", - "MV", - "ML", - "MT", - "MH", - "MQ", - "MR", - "MU", - "YT", - "MX", - "FM", - "MD", - "MC", - "MN", - "ME", - "MS", - "MA", - "MZ", - "MM", - "NA", - "NR", - "NP", - "NL", - "NC", - "NZ", - "NI", - "NE", - "NG", - "NU", - "NF", - "MP", - "NO", - "OM", - "PK", - "PW", - "PS", - "PA", - "PG", - "PY", - "PE", - "PH", - "PN", - "PL", - "PT", - "PR", - "QA", - "MK", - "RO", - "RU", - "RW", - "RE", - "BL", - "SH", - "KN", - "LC", - "MF", - "PM", - "VC", - "WS", - "SM", - "ST", - "SA", - "SN", - "RS", - "SC", - "SL", - "SG", - "SX", - "SK", - "SI", - "SB", - "SO", - "ZA", - "GS", - "SS", - "ES", - "LK", - "SD", - "SR", - "SJ", - "SE", - "CH", - "SY", - "TW", - "TJ", - "TZ", - "TH", - "TL", - "TG", - "TK", - "TO", - "TT", - "TN", - "TR", - "TM", - "TC", - "TV", - "UG", - "UA", - "AE", - "GB", - "UM", - "US", - "UY", - "UZ", - "VU", - "VE", - "VN", - "VG", - "VI", - "WF", - "EH", - "YE", - "ZM", - "ZW", - "AX" - ], - "example": "US", - "type": [ - "string", - "null" - ] - }, - "swift_intermediary_bank_name": { - "example": "Banco Regional SA", - "type": [ - "string", - "null" - ] - }, - "swift_intermediary_bank_swift_code_bic": { - "anyOf": [ - { - "maxLength": 8, - "minLength": 8, - "type": "string" - }, - { - "maxLength": 11, - "minLength": 11, - "type": "string" - }, - { - "type": "null" - } - ], - "example": "AEIBARB1" - }, - "swift_payment_code": { - "enum": [ - "ae_swift_str", - "ae_swift_tcs", - "ae_swift_ipc", - "ae_swift_ifs", - "ae_swift_sts", - "ae_swift_pms", - "ae_swift_its", - "ae_swift_gde", - "ae_swift_ots", - "ae_swift_tts", - "bh_swift_afa", - "bh_swift_afl", - "bh_swift_ats", - "bh_swift_cea", - "bh_swift_cel", - "bh_swift_chc", - "bh_swift_dla", - "bh_swift_dlf", - "bh_swift_dll", - "bh_swift_doe", - "bh_swift_dsa", - "bh_swift_dsf", - "bh_swift_dsl", - "bh_swift_fam", - "bh_swift_fda", - "bh_swift_fdl", - "bh_swift_fia", - "bh_swift_fil", - "bh_swift_fis", - "bh_swift_fsa", - "bh_swift_fsl", - "bh_swift_gde", - "bh_swift_gdi", - "bh_swift_gms", - "bh_swift_gos", - "bh_swift_gri", - "bh_swift_ifs", - "bh_swift_igd", - "bh_swift_iid", - "bh_swift_ins", - "bh_swift_iod", - "bh_swift_iol", - "bh_swift_ipc", - "bh_swift_ish", - "bh_swift_isl", - "bh_swift_iss", - "bh_swift_its", - "bh_swift_ldl", - "bh_swift_lds", - "bh_swift_lea", - "bh_swift_lel", - "bh_swift_lla", - "bh_swift_lll", - "bh_swift_ots", - "bh_swift_pip", - "bh_swift_pms", - "bh_swift_ppa", - "bh_swift_ppl", - "bh_swift_prr", - "bh_swift_prs", - "bh_swift_rda", - "bh_swift_rdl", - "bh_swift_rds", - "bh_swift_rea", - "bh_swift_rel", - "bh_swift_rfs", - "bh_swift_rls", - "bh_swift_sal", - "bh_swift_sco", - "bh_swift_sla", - "bh_swift_sll", - "bh_swift_str", - "bh_swift_sts", - "bh_swift_tcp", - "bh_swift_tcr", - "bh_swift_tcs", - "bh_swift_tts", - "ch_swift_ccdndr", - "ch_swift_cctfdr", - "ch_swift_cgoddr", - "ch_swift_cocadr", - "ch_swift_cstrdr", - "ch_swift_remtdr", - "cn_swift_ccdndr", - "cn_swift_cctfdr", - "cn_swift_cgoddr", - "cn_swift_cocadr", - "cn_swift_cstrdr", - "cn_swift_remtdr", - "hk_swift_charitabledonation", - "hk_swift_goods", - "hk_swift_personal", - "hk_swift_services", - "id_swift_2011", - "id_swift_2012", - "id_swift_2015", - "id_swift_2018", - "id_swift_2019", - "id_swift_2097", - "id_swift_2098", - "id_swift_2127", - "id_swift_2129", - "id_swift_2150", - "id_swift_2163", - "id_swift_2193", - "id_swift_2194", - "id_swift_2197", - "id_swift_2198", - "id_swift_2203", - "id_swift_2204", - "id_swift_2206", - "id_swift_2207", - "id_swift_2221", - "id_swift_2222", - "id_swift_2231", - "id_swift_2232", - "id_swift_2233", - "id_swift_2240", - "id_swift_2241", - "id_swift_2242", - "id_swift_2243", - "id_swift_2244", - "id_swift_2245", - "id_swift_2246", - "id_swift_2247", - "id_swift_2251", - "id_swift_2252", - "id_swift_2255", - "id_swift_2256", - "id_swift_2257", - "id_swift_2261", - "id_swift_2262", - "id_swift_2263", - "id_swift_2264", - "id_swift_2271", - "id_swift_2272", - "id_swift_2273", - "id_swift_2274", - "id_swift_2275", - "id_swift_2276", - "id_swift_2277", - "id_swift_2278", - "id_swift_2279", - "id_swift_2280", - "id_swift_2282", - "id_swift_2299", - "id_swift_2311", - "id_swift_2321", - "id_swift_2322", - "id_swift_2323", - "id_swift_2331", - "id_swift_2332", - "id_swift_2333", - "id_swift_2341", - "id_swift_2342", - "id_swift_2351", - "id_swift_2352", - "id_swift_2353", - "id_swift_2354", - "id_swift_2361", - "id_swift_2362", - "id_swift_2363", - "id_swift_2364", - "id_swift_2365", - "id_swift_2366", - "id_swift_2371", - "id_swift_2372", - "id_swift_2375", - "id_swift_2376", - "id_swift_2377", - "id_swift_2378", - "id_swift_2379", - "id_swift_2380", - "id_swift_2381", - "id_swift_2382", - "id_swift_2383", - "id_swift_2384", - "id_swift_2385", - "id_swift_2386", - "id_swift_2387", - "id_swift_2388", - "id_swift_2389", - "id_swift_2390", - "id_swift_2391", - "id_swift_2392", - "id_swift_2393", - "id_swift_2394", - "id_swift_2395", - "id_swift_2396", - "id_swift_2397", - "id_swift_2398", - "id_swift_2400", - "id_swift_2405", - "id_swift_2411", - "id_swift_2412", - "id_swift_2413", - "id_swift_2421", - "id_swift_2422", - "id_swift_2423", - "id_swift_2431", - "id_swift_2432", - "id_swift_2433", - "id_swift_2441", - "id_swift_2442", - "id_swift_2443", - "id_swift_2450", - "id_swift_2461", - "id_swift_2462", - "id_swift_2466", - "id_swift_2467", - "id_swift_2468", - "id_swift_2469", - "id_swift_2480", - "id_swift_2490", - "id_swift_2495", - "id_swift_2501", - "id_swift_2502", - "id_swift_2511", - "id_swift_2512", - "id_swift_2521", - "id_swift_2522", - "id_swift_2523", - "id_swift_2524", - "id_swift_2525", - "id_swift_2526", - "id_swift_2531", - "id_swift_2532", - "id_swift_2533", - "id_swift_2541", - "id_swift_2546", - "id_swift_2547", - "id_swift_2550", - "id_swift_2560", - "id_swift_2570", - "id_swift_2580", - "id_swift_2590", - "id_swift_2600", - "id_swift_2610", - "id_swift_2615", - "id_swift_2616", - "id_swift_2630", - "id_swift_2640", - "id_swift_2651", - "id_swift_2652", - "id_swift_2660", - "id_swift_2670", - "id_swift_2701", - "id_swift_2702", - "id_swift_2705", - "id_swift_2710", - "id_swift_2716", - "id_swift_2717", - "id_swift_2720", - "id_swift_2725", - "id_swift_2730", - "id_swift_2731", - "id_swift_2741", - "id_swift_2742", - "id_swift_2743", - "id_swift_2751", - "id_swift_2752", - "id_swift_2760", - "id_swift_2765", - "id_swift_2766", - "id_swift_2767", - "id_swift_2770", - "id_swift_2802", - "id_swift_2803", - "id_swift_2804", - "id_swift_2808", - "id_swift_2809", - "id_swift_2811", - "id_swift_2812", - "id_swift_2813", - "id_swift_2814", - "id_swift_2815", - "id_swift_2821", - "id_swift_2822", - "id_swift_2823", - "id_swift_2824", - "id_swift_2825", - "id_swift_2826", - "id_swift_2827", - "id_swift_2828", - "in_swift_p0001", - "in_swift_p0002", - "in_swift_p0003", - "in_swift_p0004", - "in_swift_p0005", - "in_swift_p0006", - "in_swift_p0007", - "in_swift_p0008", - "in_swift_p0009", - "in_swift_p0010", - "in_swift_p0011", - "in_swift_p0012", - "in_swift_p0013", - "in_swift_p0014", - "in_swift_p0015", - "in_swift_p0016", - "in_swift_p0017", - "in_swift_p0019", - "in_swift_p0020", - "in_swift_p0021", - "in_swift_p0022", - "in_swift_p0024", - "in_swift_p0025", - "in_swift_p0028", - "in_swift_p0029", - "in_swift_p0099", - "in_swift_p0101", - "in_swift_p0102", - "in_swift_p0103", - "in_swift_p0104", - "in_swift_p0105", - "in_swift_p0107", - "in_swift_p0108", - "in_swift_p0109", - "jp_swift_1001", - "jp_swift_1002", - "jp_swift_1003", - "jp_swift_1004", - "jp_swift_101", - "jp_swift_102", - "jp_swift_103", - "jp_swift_104", - "jp_swift_105", - "jp_swift_106", - "jp_swift_107", - "jp_swift_108", - "jp_swift_109", - "jp_swift_110", - "jp_swift_1101", - "jp_swift_1102", - "jp_swift_1103", - "jp_swift_1104", - "jp_swift_1105", - "jp_swift_1106", - "jp_swift_1107", - "jp_swift_1108", - "jp_swift_1109", - "jp_swift_111", - "jp_swift_1110", - "jp_swift_1111", - "jp_swift_1112", - "jp_swift_1201", - "jp_swift_1202", - "jp_swift_201", - "jp_swift_202", - "jp_swift_203", - "jp_swift_204", - "jp_swift_205", - "jp_swift_206", - "jp_swift_207", - "jp_swift_208", - "jp_swift_209", - "jp_swift_301", - "jp_swift_302", - "jp_swift_303", - "jp_swift_304", - "jp_swift_305", - "jp_swift_306", - "jp_swift_307", - "jp_swift_401", - "jp_swift_402", - "jp_swift_403", - "jp_swift_404", - "jp_swift_501", - "jp_swift_502", - "jp_swift_503", - "jp_swift_504", - "jp_swift_601", - "jp_swift_602", - "jp_swift_603", - "jp_swift_604", - "jp_swift_701", - "jp_swift_702", - "jp_swift_703", - "jp_swift_704", - "jp_swift_705", - "jp_swift_801", - "jp_swift_802", - "jp_swift_803", - "jp_swift_804", - "jp_swift_805", - "jp_swift_806", - "jp_swift_807", - "jp_swift_808", - "jp_swift_809", - "jp_swift_810", - "jp_swift_811", - "jp_swift_812", - "jp_swift_813", - "jp_swift_814", - "jp_swift_815", - "jp_swift_816", - "jp_swift_817", - "jp_swift_818", - "jp_swift_901", - "jp_swift_902", - "jp_swift_903", - "jp_swift_904", - "ke_swift_1001", - "ke_swift_1002", - "ke_swift_1101", - "ke_swift_1102", - "ke_swift_1201", - "ke_swift_1202", - "ke_swift_1206", - "ke_swift_1501", - "ke_swift_1518", - "ke_swift_1519", - "ke_swift_1527", - "ke_swift_1801", - "ke_swift_1802", - "ke_swift_1908", - "ke_swift_2101", - "ke_swift_2301", - "ke_swift_2501", - "ke_swift_2901", - "ke_swift_3001", - "ke_swift_3100", - "ke_swift_3101", - "ke_swift_3103", - "ke_swift_3200", - "ke_swift_3304", - "ke_swift_3509", - "ke_swift_3514", - "ke_swift_3801", - "ke_swift_4103", - "ke_swift_4301", - "ke_swift_4601", - "ke_swift_4702", - "ke_swift_512", - "ke_swift_6001", - "ke_swift_6002", - "ke_swift_6101", - "ke_swift_6102", - "ke_swift_6301", - "ke_swift_6401", - "ke_swift_6402", - "ke_swift_6501", - "ke_swift_6601", - "ke_swift_adtx", - "ke_swift_airb", - "ke_swift_artx", - "ke_swift_bech", - "ke_swift_bsd", - "ke_swift_bttx", - "ke_swift_busb", - "ke_swift_ccmc", - "ke_swift_cere", - "ke_swift_cfr", - "ke_swift_cgtx", - "ke_swift_chc", - "ke_swift_clot", - "ke_swift_comu", - "ke_swift_cons", - "ke_swift_cort", - "ke_swift_cotx", - "ke_swift_csdk", - "ke_swift_divd", - "ke_swift_edtx", - "ke_swift_educ", - "ke_swift_farm", - "ke_swift_foex", - "ke_swift_fuel", - "ke_swift_gokx", - "ke_swift_govt", - "ke_swift_hlfd", - "ke_swift_hlti", - "ke_swift_holi", - "ke_swift_ibld", - "ke_swift_inpc", - "ke_swift_insu", - "ke_swift_inte", - "ke_swift_intx", - "ke_swift_invs", - "ke_swift_istx", - "ke_swift_licf", - "ke_swift_lifi", - "ke_swift_loan", - "ke_swift_mach", - "ke_swift_mafc", - "ke_swift_mdcs", - "ke_swift_merc", - "ke_swift_paye", - "ke_swift_pena", - "ke_swift_pl39", - "ke_swift_pl40", - "ke_swift_pl41", - "ke_swift_pl42", - "ke_swift_pl43", - "ke_swift_pl44", - "ke_swift_pl45", - "ke_swift_pl46", - "ke_swift_pl47", - "ke_swift_pl48", - "ke_swift_pl49", - "ke_swift_pl50", - "ke_swift_pl51", - "ke_swift_pl52", - "ke_swift_pl53", - "ke_swift_ppti", - "ke_swift_prpy", - "ke_swift_psco", - "ke_swift_refu", - "ke_swift_relg", - "ke_swift_rent", - "ke_swift_ritx", - "ke_swift_rlwy", - "ke_swift_sala", - "ke_swift_savg", - "ke_swift_scho", - "ke_swift_sdtx", - "ke_swift_ship", - "ke_swift_swlf", - "ke_swift_taxr", - "ke_swift_taxs", - "ke_swift_tbil", - "ke_swift_tith", - "ke_swift_totx", - "ke_swift_trac", - "ke_swift_ubil", - "ke_swift_vatx", - "ke_swift_vipn", - "ke_swift_whld", - "ph_swift_1010101000", - "ph_swift_1010102001", - "ph_swift_1010102002", - "ph_swift_1010103001", - "ph_swift_1010103002", - "ph_swift_1010201000", - "ph_swift_1010202001", - "ph_swift_1010202002", - "ph_swift_1010203001", - "ph_swift_1010203002", - "ph_swift_1010300000", - "ph_swift_1110100001", - "ph_swift_1110200001", - "ph_swift_1110200002", - "ph_swift_1110200003", - "ph_swift_1110200004", - "ph_swift_1110300001", - "ph_swift_1110300002", - "ph_swift_1110300003", - "ph_swift_1110300004", - "ph_swift_1110400001", - "ph_swift_1110400002", - "ph_swift_1110400003", - "ph_swift_1110400004", - "ph_swift_1110400005", - "ph_swift_1110400006", - "ph_swift_1110500001", - "ph_swift_1110500002", - "ph_swift_1110500003", - "ph_swift_1110500004", - "ph_swift_1110500005", - "ph_swift_1110600001", - "ph_swift_1110700001", - "ph_swift_1310000001", - "ph_swift_1310000002", - "ph_swift_1310000003", - "ph_swift_1410100001", - "ph_swift_1410100002", - "ph_swift_1410200001", - "ph_swift_1410200002", - "ph_swift_1410200003", - "ph_swift_1410200004", - "ph_swift_1410300000", - "ph_swift_1410400000", - "ph_swift_1410500000", - "ph_swift_1410600000", - "ph_swift_1510000001", - "ph_swift_1510000002", - "ph_swift_1510000003", - "ph_swift_1510000004", - "ph_swift_1510000005", - "ph_swift_1510000006", - "ph_swift_1510000007", - "ph_swift_1510000008", - "ph_swift_1510000009", - "ph_swift_1510000010", - "ph_swift_1510000011", - "ph_swift_1510000012", - "ph_swift_1510000013", - "ph_swift_1510000014", - "ph_swift_1510000015", - "ph_swift_1510000016", - "ph_swift_1510000017", - "ph_swift_1510000018", - "ph_swift_1510000019", - "ph_swift_1510000020", - "ph_swift_1510000021", - "ph_swift_1510000023", - "ph_swift_1510000024", - "ph_swift_1510000025", - "ph_swift_210000001", - "ph_swift_210000002", - "ph_swift_210000003", - "ph_swift_210000004", - "ph_swift_210000005", - "ph_swift_210000006", - "ph_swift_210000007", - "ph_swift_210000008", - "ph_swift_210000009", - "ph_swift_210000010", - "ph_swift_510100001", - "ph_swift_510200001", - "ph_swift_510200002", - "ph_swift_510301001", - "ph_swift_510301002", - "ph_swift_510301003", - "ph_swift_510302001", - "ph_swift_510302002", - "ph_swift_510302003", - "ph_swift_510303000", - "ph_swift_510401000", - "ph_swift_510402001", - "ph_swift_510402002", - "ph_swift_510402003", - "ph_swift_510402004", - "ph_swift_510402005", - "ph_swift_510402006", - "ph_swift_510402007", - "ph_swift_510500001", - "ph_swift_510500002", - "ph_swift_510600001", - "ph_swift_510600002", - "ph_swift_510600003", - "ph_swift_510600004", - "ph_swift_510700000", - "ph_swift_510800001", - "ph_swift_510800002", - "ph_swift_510900000", - "ph_swift_511000001", - "ph_swift_511000002", - "ph_swift_511100001", - "ph_swift_511100002", - "ph_swift_511100003", - "ph_swift_511200000", - "ph_swift_511300001", - "ph_swift_511300002", - "ph_swift_511300003", - "ph_swift_511300004", - "ph_swift_511300005", - "ph_swift_511300006", - "ph_swift_511300007", - "ph_swift_511300008", - "ph_swift_511400001", - "ph_swift_511400002", - "ph_swift_511400003", - "ph_swift_511400004", - "ph_swift_511400005", - "ph_swift_511500001", - "ph_swift_511500002", - "ph_swift_511500003", - "ph_swift_511500004", - "ph_swift_511600001", - "ph_swift_511600002", - "ph_swift_511600003", - "ph_swift_511700001", - "ph_swift_511700002", - "ph_swift_511700003", - "ph_swift_610000001", - "ph_swift_610000002", - "ph_swift_610000003", - "ph_swift_610000004", - "ph_swift_610000005", - "ph_swift_610000006", - "ph_swift_610000007", - "ph_swift_710100001", - "ph_swift_710100002", - "ph_swift_710100003", - "ph_swift_710100004", - "ph_swift_710100006", - "ph_swift_710100007", - "ph_swift_710100008", - "ph_swift_710100009", - "ph_swift_710200001", - "ph_swift_710200002", - "ph_swift_710200003", - "ph_swift_710200004", - "ph_swift_710200009", - "ph_swift_710300001", - "ph_swift_710300002", - "ph_swift_710300003", - "ph_swift_710300004", - "ph_swift_710300009", - "ph_swift_710400001", - "ph_swift_710400002", - "ph_swift_810101001", - "ph_swift_810101002", - "ph_swift_810101003", - "ph_swift_810101004", - "ph_swift_810101007", - "ph_swift_810101008", - "ph_swift_810101011", - "ph_swift_810102001", - "ph_swift_810102002", - "ph_swift_810102003", - "ph_swift_810102004", - "ph_swift_810102005", - "ph_swift_810102006", - "ph_swift_810102007", - "ph_swift_810102008", - "ph_swift_810102009", - "ph_swift_810201001", - "ph_swift_810201002", - "ph_swift_810201003", - "ph_swift_810201004", - "ph_swift_810202001", - "ph_swift_810202002", - "ph_swift_810202003", - "ph_swift_810202005", - "ph_swift_810202006", - "ph_swift_910100001", - "ph_swift_910100002", - "ph_swift_910100003", - "ph_swift_910100004", - "ph_swift_910100005", - "ph_swift_910100006", - "ph_swift_910100007", - "ph_swift_910100009", - "ph_swift_910100010", - "ph_swift_910100011", - "ph_swift_910200001", - "ph_swift_910200002", - "ph_swift_910200003", - "ph_swift_910200004", - "ph_swift_910200005", - "ph_swift_910200006", - "ph_swift_910200007", - "ph_swift_910200009", - "ph_swift_910200010", - "ph_swift_910200011", - "pk_swift_9009", - "pk_swift_9010", - "pk_swift_9011", - "pk_swift_9012", - "pk_swift_9013", - "pk_swift_9014", - "pk_swift_9015", - "pk_swift_9016", - "pk_swift_9017", - "pk_swift_9018", - "pk_swift_9019", - "pk_swift_9020", - "pk_swift_9021", - "pk_swift_9022", - "pk_swift_9023", - "pk_swift_9024", - "pk_swift_9025", - "pk_swift_9026", - "pk_swift_9027", - "pk_swift_9028", - "pk_swift_9029", - "pk_swift_9030", - "pk_swift_9031", - "pk_swift_9032", - "pk_swift_9033", - "pk_swift_9041", - "pk_swift_9051", - "pk_swift_9052", - "pk_swift_9061", - "pk_swift_9071", - "pk_swift_9072", - "pk_swift_9073", - "pk_swift_9081", - "pk_swift_9082", - "pk_swift_9083", - "pk_swift_9084", - "pk_swift_9085", - "pk_swift_9086", - "pk_swift_9091", - "pk_swift_9092", - "pk_swift_9101", - "pk_swift_9102", - "pk_swift_9111", - "pk_swift_9121", - "pk_swift_9122", - "pk_swift_9124", - "pk_swift_9141", - "pk_swift_9146", - "pk_swift_9151", - "pk_swift_9152", - "pk_swift_9161", - "pk_swift_9171", - "pk_swift_9172", - "pk_swift_9173", - "pk_swift_9174", - "pk_swift_9181", - "pk_swift_9182", - "pk_swift_9183", - "pk_swift_9184", - "pk_swift_9185", - "pk_swift_9186", - "pk_swift_9191", - "pk_swift_9192", - "pk_swift_9193", - "pk_swift_9201", - "pk_swift_9202", - "pk_swift_9211", - "pk_swift_9212", - "pk_swift_9221", - "pk_swift_9222", - "pk_swift_9230", - "pk_swift_9231", - "pk_swift_9232", - "pk_swift_9233", - "pk_swift_9234", - "pk_swift_9235", - "pk_swift_9236", - "pk_swift_9237", - "pk_swift_9238", - "pk_swift_9239", - "pk_swift_9241", - "pk_swift_9242", - "pk_swift_9243", - "pk_swift_9244", - "pk_swift_9247", - "pk_swift_9248", - "pk_swift_9249", - "pk_swift_9250", - "pk_swift_9251", - "pk_swift_9261", - "pk_swift_9262", - "pk_swift_9271", - "pk_swift_9272", - "pk_swift_9273", - "pk_swift_9281", - "pk_swift_9291", - "pk_swift_9301", - "pk_swift_9302", - "pk_swift_9303", - "pk_swift_9311", - "pk_swift_9312", - "pk_swift_9322", - "pk_swift_9323", - "pk_swift_9324", - "pk_swift_9331", - "pk_swift_9332", - "pk_swift_9333", - "pk_swift_9341", - "pk_swift_9351", - "pk_swift_9361", - "pk_swift_9381", - "pk_swift_9391", - "pk_swift_9401", - "pk_swift_9412", - "pk_swift_9414", - "pk_swift_9421", - "pk_swift_9422", - "pk_swift_9423", - "pk_swift_9426", - "pk_swift_9431", - "pk_swift_9432", - "pk_swift_9433", - "pk_swift_9434", - "pk_swift_9435", - "pk_swift_9441", - "pk_swift_9442", - "pk_swift_9443", - "pk_swift_9444", - "pk_swift_9445", - "pk_swift_9448", - "pk_swift_9451", - "pk_swift_9452", - "pk_swift_9453", - "pk_swift_9454", - "pk_swift_9455", - "pk_swift_9456", - "pk_swift_9457", - "pk_swift_9458", - "pk_swift_9459", - "pk_swift_9461", - "pk_swift_9462", - "pk_swift_9463", - "pk_swift_9468", - "pk_swift_9469", - "pk_swift_9470", - "pk_swift_9471", - "pk_swift_9472", - "pk_swift_9473", - "pk_swift_9474", - "pk_swift_9475", - "pk_swift_9476", - "pk_swift_9477", - "pk_swift_9478", - "pk_swift_9479", - "pk_swift_9481", - "pk_swift_9482", - "pk_swift_9483", - "pk_swift_9484", - "pk_swift_9491", - "pk_swift_9492", - "pk_swift_9493", - "pk_swift_9494", - "pk_swift_9501", - "pk_swift_9502", - "pk_swift_9503", - "pk_swift_9521", - "pk_swift_9522", - "pk_swift_9523", - "pk_swift_9524", - "pk_swift_9525", - "pk_swift_9526", - "pk_swift_9527", - "pk_swift_9528", - "pk_swift_9529", - "pk_swift_9530", - "pk_swift_9531", - "pk_swift_9532", - "pk_swift_9533", - "pk_swift_9534", - "pk_swift_9535", - "pk_swift_9536", - "pk_swift_9537", - "pk_swift_9538", - "pk_swift_9539", - "pk_swift_9541", - "pk_swift_9542", - "pk_swift_9543", - "pk_swift_9544", - "pk_swift_9545", - "pk_swift_9546", - "pk_swift_9547", - "pk_swift_9548", - "pk_swift_9549", - "pk_swift_9551", - "pk_swift_9552", - "pk_swift_9553", - "pk_swift_9554", - "pk_swift_9555", - "pk_swift_9556", - "pk_swift_9561", - "pk_swift_9562", - "pk_swift_9563", - "pk_swift_9564", - "pk_swift_9565", - "pk_swift_9566", - "pk_swift_9572", - "pk_swift_9573", - "pk_swift_9574", - "pk_swift_9582", - "pk_swift_9583", - "pk_swift_9584", - "pk_swift_9592", - "pk_swift_9593", - "pk_swift_9594", - "pk_swift_9595", - "pk_swift_9596", - "pk_swift_9597", - "pk_swift_9602", - "pk_swift_9605", - "pk_swift_9606", - "pk_swift_9607", - "pk_swift_9608", - "pk_swift_9609", - "pk_swift_9612", - "pk_swift_9613", - "pk_swift_9614", - "pk_swift_9622", - "pk_swift_9623", - "pk_swift_9624", - "pk_swift_9625", - "pk_swift_9637", - "pk_swift_9638", - "pk_swift_9641", - "pk_swift_9642", - "pk_swift_9643", - "pk_swift_9644", - "pk_swift_9645", - "pk_swift_9646", - "pk_swift_9647", - "pk_swift_9648", - "pk_swift_9649", - "pk_swift_9650", - "pk_swift_9651", - "pk_swift_9652", - "pk_swift_9653", - "pk_swift_9654", - "pk_swift_9668", - "pk_swift_9669", - "pk_swift_9673", - "pk_swift_9674", - "pk_swift_9675", - "pk_swift_9676", - "pk_swift_9677", - "pk_swift_9678", - "pk_swift_9681", - "pk_swift_9682", - "pk_swift_9693", - "pk_swift_9694", - "pk_swift_9695", - "pk_swift_9697", - "pk_swift_9698", - "pk_swift_9699", - "pk_swift_9703", - "pk_swift_9707", - "pk_swift_9708", - "za_swift_105", - "za_swift_220", - "za_swift_231", - "za_swift_242", - "za_swift_250", - "za_swift_251", - "za_swift_265", - "za_swift_266", - "za_swift_275", - "za_swift_276", - "za_swift_280", - "za_swift_285", - "za_swift_287", - "za_swift_288", - "za_swift_289", - "za_swift_290", - "za_swift_291", - "za_swift_296", - "za_swift_297", - "za_swift_308", - "za_swift_401", - "za_swift_10101", - "za_swift_10301", - "za_swift_27201" - ], - "example": "bh_swift_afl", - "type": [ - "string", - "null" - ] - }, - "tax_id": { - "example": "536804398", - "maxLength": 32, - "type": [ - "string", - "null" - ] - }, - "ted_bank_code": { - "example": "033", - "pattern": "^\\d{3,5}$", - "type": [ - "string", - "null" - ] - }, - "ted_branch_code": { - "example": "0001", - "pattern": "^\\d{4}(-\\d)?$", - "type": [ - "string", - "null" - ] - }, - "ted_cpf_cnpj": { - "example": "12345678901", - "type": [ - "string", - "null" - ] - }, - "transfers_account": { - "example": "BM123123123123", - "type": [ - "string", - "null" - ] - }, - "transfers_type": { - "enum": [ - "CVU", - "CBU", - "ALIAS" - ], - "example": "CVU", - "type": [ - "string", - "null" - ] - }, - "type": { - "enum": [ - "wire", - "ach", - "pix", - "pix_safe", - "ted", - "spei_bitso", - "transfers_bitso", - "ach_cop_bitso", - "international_swift", - "rtp", - "sepa" - ], - "example": "wire", - "type": "string" - } - }, - "required": [ - "type", - "name" - ], - "type": "object" - }, - "CreateBlockchainWalletIn": { - "properties": { - "address": { - "example": "0xDD6a3aD0949396e57C7738ba8FC1A46A5a1C372C", - "type": [ - "string", - "null" - ] - }, - "is_account_abstraction": { - "example": false, - "type": [ - "boolean", - "null" - ] - }, - "name": { - "example": "Wallet Display Name", - "type": "string" - }, - "network": { - "enum": [ - "base", - "sepolia", - "arbitrum_sepolia", - "base_sepolia", - "arbitrum", - "polygon", - "polygon_amoy", - "ethereum", - "stellar", - "stellar_testnet", - "tron", - "solana", - "solana_devnet" - ], - "example": "polygon", - "type": "string" - }, - "signature_tx_hash": { - "example": "0x3c499c542cef5e3811e1192ce70d8cc03d5c3359", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "name", - "network" - ], - "type": "object" - }, - "CreateComplaintIn": { - "properties": { - "complaint_type": { - "minLength": 1, - "type": "string" - }, - "description": { - "maxLength": 5000, - "minLength": 20, - "type": "string" - }, - "email": { - "format": "email", - "type": "string" - }, - "first_name": { - "minLength": 1, - "type": "string" - }, - "last_name": { - "minLength": 1, - "type": "string" - } - }, - "required": [ - "first_name", - "last_name", - "email", - "complaint_type", - "description" - ], - "type": "object" - }, - "CreateCustomerIn": { - "properties": { - "account_purpose": { - "enum": [ - "charitable_donations", - "ecommerce_retail_payments", - "investment_purposes", - "business_expenses", - "payments_to_friends_or_family_abroad", - "personal_or_living_expenses", - "protect_wealth", - "purchase_goods_and_services", - "receive_payments_for_goods_and_services", - "tax_optimization", - "third_party_money_transmission", - "payroll", - "treasury_management", - "other" - ], - "example": "treasury_management", - "type": [ - "string", - "null" - ] - }, - "account_purpose_other": { - "description": "Required when account_purpose is \"other\". Max 512 characters.", - "example": "Custom account purpose description", - "maxLength": 512, - "type": [ - "string", - "null" - ] - }, - "additional_info": { - "description": "Optional extra documents or notes for this customer. `label` is a known category, `value` is either a URL to upload or a free-text description. Any URLs are downloaded and re-hosted on Blindpay storage before being stored.", - "example": [ - { - "label": "EIN_LETTER", - "value": "https://example.com/ein.pdf" - }, - { - "label": "FLOW_OF_FUNDS", - "value": "Funds originate from US payroll deposits, forwarded weekly to customer." - } - ], - "items": { - "$ref": "#/components/schemas/AdditionalInfoItem" - }, - "type": [ - "array", - "null" - ] - }, - "address_line_1": { - "example": "738 Plain St", - "type": [ - "string", - "null" - ] - }, - "address_line_2": { - "example": "Building 22", - "type": [ - "string", - "null" - ] - }, - "alternate_name": { - "example": "Company Name Inc.", - "type": [ - "string", - "null" - ] - }, - "business_description": { - "example": "Software development company", - "maxLength": 1000, - "type": [ - "string", - "null" - ] - }, - "business_industry": { - "enum": [ - "111998", - "112120", - "113310", - "115114", - "541211", - "541810", - "541430", - "541715", - "541930", - "561422", - "561311", - "561612", - "561740", - "561730", - "236115", - "236220", - "237310", - "238210", - "811111", - "812111", - "812112", - "532111", - "624410", - "541922", - "811210", - "812199", - "611110", - "611310", - "611410", - "611710", - "211120", - "212114", - "221310", - "562111", - "562920", - "213112", - "522110", - "522210", - "522320", - "523150", - "523940", - "523999", - "524113", - "813110", - "813211", - "813219", - "551112", - "721110", - "722511", - "722513", - "561510", - "713110", - "713210", - "712110", - "711110", - "711211", - "621111", - "621210", - "622110", - "623110", - "621511", - "623220", - "541940", - "621399", - "621910", - "541110", - "311421", - "337121", - "322220", - "339920", - "334210", - "339930", - "312130", - "334111", - "334118", - "325412", - "339112", - "336110", - "336390", - "315990", - "313110", - "339910", - "516120", - "513130", - "512250", - "519130", - "711410", - "711510", - "531110", - "531120", - "531130", - "531190", - "531210", - "531311", - "531312", - "531320", - "531390", - "454110", - "445110", - "455110", - "457110", - "449210", - "444110", - "459210", - "459120", - "445320", - "458110", - "458210", - "458310", - "455219", - "424210", - "456110", - "446120", - "541511", - "541512", - "541519", - "518210", - "511210", - "517111", - "517112", - "517410", - "481111", - "483111", - "485210", - "488510", - "484121", - "493110", - "423430", - "423690", - "423110", - "423830", - "423840", - "423510", - "424690", - "424990", - "424410", - "424480", - "423940", - "541611", - "541618", - "541330", - "541990", - "541214", - "561499" - ], - "example": "541511", - "type": [ - "string", - "null" - ] - }, - "business_type": { - "enum": [ - "corporation", - "llc", - "partnership", - "sole_proprietorship", - "trust", - "non_profit" - ], - "example": "llc", - "type": [ - "string", - "null" - ] - }, - "city": { - "example": "Marshfield", - "type": [ - "string", - "null" - ] - }, - "country": { - "enum": [ - "AF", - "AL", - "DZ", - "AS", - "AD", - "AO", - "AI", - "AQ", - "AG", - "AR", - "AM", - "AW", - "AU", - "AT", - "AZ", - "BS", - "BH", - "BD", - "BB", - "BY", - "BE", - "BZ", - "BJ", - "BM", - "BT", - "BO", - "BQ", - "BA", - "BW", - "BV", - "BR", - "IO", - "BN", - "BG", - "BF", - "BI", - "CV", - "KH", - "CM", - "CA", - "KY", - "CF", - "TD", - "CL", - "CN", - "CX", - "CC", - "CO", - "KM", - "CD", - "CG", - "CK", - "CR", - "HR", - "CU", - "CW", - "CY", - "CZ", - "CI", - "DK", - "DJ", - "DM", - "DO", - "EC", - "EG", - "SV", - "GQ", - "ER", - "EE", - "SZ", - "ET", - "FK", - "FO", - "FJ", - "FI", - "FR", - "GF", - "PF", - "TF", - "GA", - "GM", - "GE", - "DE", - "GH", - "GI", - "GR", - "GL", - "GD", - "GP", - "GU", - "GT", - "GG", - "GN", - "GW", - "GY", - "HT", - "HM", - "VA", - "HN", - "HK", - "HU", - "IS", - "IN", - "ID", - "IR", - "IQ", - "IE", - "IM", - "IL", - "IT", - "JM", - "JP", - "JE", - "JO", - "KZ", - "KE", - "KI", - "KP", - "KR", - "KW", - "KG", - "LA", - "LV", - "LB", - "LS", - "LR", - "LY", - "LI", - "LT", - "LU", - "MO", - "MG", - "MW", - "MY", - "MV", - "ML", - "MT", - "MH", - "MQ", - "MR", - "MU", - "YT", - "MX", - "FM", - "MD", - "MC", - "MN", - "ME", - "MS", - "MA", - "MZ", - "MM", - "NA", - "NR", - "NP", - "NL", - "NC", - "NZ", - "NI", - "NE", - "NG", - "NU", - "NF", - "MP", - "NO", - "OM", - "PK", - "PW", - "PS", - "PA", - "PG", - "PY", - "PE", - "PH", - "PN", - "PL", - "PT", - "PR", - "QA", - "MK", - "RO", - "RU", - "RW", - "RE", - "BL", - "SH", - "KN", - "LC", - "MF", - "PM", - "VC", - "WS", - "SM", - "ST", - "SA", - "SN", - "RS", - "SC", - "SL", - "SG", - "SX", - "SK", - "SI", - "SB", - "SO", - "ZA", - "GS", - "SS", - "ES", - "LK", - "SD", - "SR", - "SJ", - "SE", - "CH", - "SY", - "TW", - "TJ", - "TZ", - "TH", - "TL", - "TG", - "TK", - "TO", - "TT", - "TN", - "TR", - "TM", - "TC", - "TV", - "UG", - "UA", - "AE", - "GB", - "UM", - "US", - "UY", - "UZ", - "VU", - "VE", - "VN", - "VG", - "VI", - "WF", - "EH", - "YE", - "ZM", - "ZW", - "AX" - ], - "example": "US", - "type": "string" - }, - "date_of_birth": { - "anyOf": [ - { - "format": "date-time", - "type": "string" - }, - { - "type": "string" - }, - { - "type": "null" - } - ], - "example": "1998-01-01T00:00:00Z" - }, - "email": { - "example": "email@example.com", - "format": "email", - "type": "string" - }, - "estimated_annual_revenue": { - "enum": [ - "0_99999", - "100000_999999", - "1000000_9999999", - "10000000_49999999", - "50000000_249999999", - "250000000_plus" - ], - "example": "1000000_9999999", - "type": [ - "string", - "null" - ] - }, - "external_id": { - "example": "your_company_external_id", - "type": [ - "string", - "null" - ] - }, - "first_name": { - "example": "John", - "type": [ - "string", - "null" - ] - }, - "formation_date": { - "anyOf": [ - { - "format": "date-time", - "type": "string" - }, - { - "type": "string" - }, - { - "type": "null" - } - ], - "example": "1998-01-01T00:00:00Z", - "format": "date-time" - }, - "id_doc_back_file": { - "description": "Only image files are accepted (.jpg, .jpeg, .png)", - "example": "https://example.com/image.png", - "format": "uri", - "type": [ - "string", - "null" - ] - }, - "id_doc_country": { - "enum": [ - "AF", - "AL", - "DZ", - "AS", - "AD", - "AO", - "AI", - "AQ", - "AG", - "AR", - "AM", - "AW", - "AU", - "AT", - "AZ", - "BS", - "BH", - "BD", - "BB", - "BY", - "BE", - "BZ", - "BJ", - "BM", - "BT", - "BO", - "BQ", - "BA", - "BW", - "BV", - "BR", - "IO", - "BN", - "BG", - "BF", - "BI", - "CV", - "KH", - "CM", - "CA", - "KY", - "CF", - "TD", - "CL", - "CN", - "CX", - "CC", - "CO", - "KM", - "CD", - "CG", - "CK", - "CR", - "HR", - "CU", - "CW", - "CY", - "CZ", - "CI", - "DK", - "DJ", - "DM", - "DO", - "EC", - "EG", - "SV", - "GQ", - "ER", - "EE", - "SZ", - "ET", - "FK", - "FO", - "FJ", - "FI", - "FR", - "GF", - "PF", - "TF", - "GA", - "GM", - "GE", - "DE", - "GH", - "GI", - "GR", - "GL", - "GD", - "GP", - "GU", - "GT", - "GG", - "GN", - "GW", - "GY", - "HT", - "HM", - "VA", - "HN", - "HK", - "HU", - "IS", - "IN", - "ID", - "IR", - "IQ", - "IE", - "IM", - "IL", - "IT", - "JM", - "JP", - "JE", - "JO", - "KZ", - "KE", - "KI", - "KP", - "KR", - "KW", - "KG", - "LA", - "LV", - "LB", - "LS", - "LR", - "LY", - "LI", - "LT", - "LU", - "MO", - "MG", - "MW", - "MY", - "MV", - "ML", - "MT", - "MH", - "MQ", - "MR", - "MU", - "YT", - "MX", - "FM", - "MD", - "MC", - "MN", - "ME", - "MS", - "MA", - "MZ", - "MM", - "NA", - "NR", - "NP", - "NL", - "NC", - "NZ", - "NI", - "NE", - "NG", - "NU", - "NF", - "MP", - "NO", - "OM", - "PK", - "PW", - "PS", - "PA", - "PG", - "PY", - "PE", - "PH", - "PN", - "PL", - "PT", - "PR", - "QA", - "MK", - "RO", - "RU", - "RW", - "RE", - "BL", - "SH", - "KN", - "LC", - "MF", - "PM", - "VC", - "WS", - "SM", - "ST", - "SA", - "SN", - "RS", - "SC", - "SL", - "SG", - "SX", - "SK", - "SI", - "SB", - "SO", - "ZA", - "GS", - "SS", - "ES", - "LK", - "SD", - "SR", - "SJ", - "SE", - "CH", - "SY", - "TW", - "TJ", - "TZ", - "TH", - "TL", - "TG", - "TK", - "TO", - "TT", - "TN", - "TR", - "TM", - "TC", - "TV", - "UG", - "UA", - "AE", - "GB", - "UM", - "US", - "UY", - "UZ", - "VU", - "VE", - "VN", - "VG", - "VI", - "WF", - "EH", - "YE", - "ZM", - "ZW", - "AX" - ], - "example": "BR", - "type": [ - "string", - "null" - ] - }, - "id_doc_front_file": { - "description": "Only image files are accepted (.jpg, .jpeg, .png)", - "example": "https://example.com/image.png", - "format": "uri", - "type": [ - "string", - "null" - ] - }, - "id_doc_type": { - "enum": [ - "PASSPORT", - "ID_CARD", - "DRIVERS" - ], - "example": "PASSPORT", - "type": [ - "string", - "null" - ] - }, - "image_url": { - "example": "https://example.com/image.png", - "format": "uri", - "type": [ - "string", - "null" - ] - }, - "incorporation_doc_file": { - "description": "Please upload your articles of incorporation below. The articles of incorporation or a certificate of incorporation usually includes information like the company name, business purpose, number of shares offered, value of shares, etc. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", - "example": "https://example.com/image.png", - "format": "uri", - "type": [ - "string", - "null" - ] - }, - "ip_address": { - "example": "127.0.0.1", - "format": "ip", - "type": [ - "string", - "null" - ] - }, - "kyc_type": { - "enum": [ - "light", - "standard", - "enhanced" - ], - "example": "standard", - "type": "string" - }, - "last_name": { - "example": "Doe", - "type": [ - "string", - "null" - ] - }, - "latitude": { - "description": "Optional geolocation latitude collected from the customer. Forwarded to AiPrise and SEON for fraud analysis.", - "example": 37.7749, - "maximum": 90, - "minimum": -90, - "type": [ - "number", - "null" - ] - }, - "legal_name": { - "example": "Company Name Inc.", - "type": [ - "string", - "null" - ] - }, - "longitude": { - "description": "Optional geolocation longitude collected from the customer. Forwarded to AiPrise and SEON for fraud analysis.", - "example": -122.4194, - "maximum": 180, - "minimum": -180, - "type": [ - "number", - "null" - ] - }, - "occupation": { - "example": "Software Engineer", - "maxLength": 255, - "type": [ - "string", - "null" - ] - }, - "owners": { - "items": { - "properties": { - "address_line_1": { - "example": "738 Plain St", - "type": "string" - }, - "address_line_2": { - "example": "Building 22", - "type": [ - "string", - "null" - ] - }, - "city": { - "example": "Marshfield", - "type": "string" - }, - "country": { - "enum": [ - "AF", - "AL", - "DZ", - "AS", - "AD", - "AO", - "AI", - "AQ", - "AG", - "AR", - "AM", - "AW", - "AU", - "AT", - "AZ", - "BS", - "BH", - "BD", - "BB", - "BY", - "BE", - "BZ", - "BJ", - "BM", - "BT", - "BO", - "BQ", - "BA", - "BW", - "BV", - "BR", - "IO", - "BN", - "BG", - "BF", - "BI", - "CV", - "KH", - "CM", - "CA", - "KY", - "CF", - "TD", - "CL", - "CN", - "CX", - "CC", - "CO", - "KM", - "CD", - "CG", - "CK", - "CR", - "HR", - "CU", - "CW", - "CY", - "CZ", - "CI", - "DK", - "DJ", - "DM", - "DO", - "EC", - "EG", - "SV", - "GQ", - "ER", - "EE", - "SZ", - "ET", - "FK", - "FO", - "FJ", - "FI", - "FR", - "GF", - "PF", - "TF", - "GA", - "GM", - "GE", - "DE", - "GH", - "GI", - "GR", - "GL", - "GD", - "GP", - "GU", - "GT", - "GG", - "GN", - "GW", - "GY", - "HT", - "HM", - "VA", - "HN", - "HK", - "HU", - "IS", - "IN", - "ID", - "IR", - "IQ", - "IE", - "IM", - "IL", - "IT", - "JM", - "JP", - "JE", - "JO", - "KZ", - "KE", - "KI", - "KP", - "KR", - "KW", - "KG", - "LA", - "LV", - "LB", - "LS", - "LR", - "LY", - "LI", - "LT", - "LU", - "MO", - "MG", - "MW", - "MY", - "MV", - "ML", - "MT", - "MH", - "MQ", - "MR", - "MU", - "YT", - "MX", - "FM", - "MD", - "MC", - "MN", - "ME", - "MS", - "MA", - "MZ", - "MM", - "NA", - "NR", - "NP", - "NL", - "NC", - "NZ", - "NI", - "NE", - "NG", - "NU", - "NF", - "MP", - "NO", - "OM", - "PK", - "PW", - "PS", - "PA", - "PG", - "PY", - "PE", - "PH", - "PN", - "PL", - "PT", - "PR", - "QA", - "MK", - "RO", - "RU", - "RW", - "RE", - "BL", - "SH", - "KN", - "LC", - "MF", - "PM", - "VC", - "WS", - "SM", - "ST", - "SA", - "SN", - "RS", - "SC", - "SL", - "SG", - "SX", - "SK", - "SI", - "SB", - "SO", - "ZA", - "GS", - "SS", - "ES", - "LK", - "SD", - "SR", - "SJ", - "SE", - "CH", - "SY", - "TW", - "TJ", - "TZ", - "TH", - "TL", - "TG", - "TK", - "TO", - "TT", - "TN", - "TR", - "TM", - "TC", - "TV", - "UG", - "UA", - "AE", - "GB", - "UM", - "US", - "UY", - "UZ", - "VU", - "VE", - "VN", - "VG", - "VI", - "WF", - "EH", - "YE", - "ZM", - "ZW", - "AX" - ], - "example": "US", - "type": "string" - }, - "date_of_birth": { - "anyOf": [ - { - "format": "date-time", - "type": "string" - }, - { - "type": "string" - } - ], - "example": "1998-01-01T00:00:00Z" - }, - "first_name": { - "example": "John", - "minLength": 1, - "type": "string" - }, - "id_doc_back_file": { - "description": "Only image files are accepted (.jpg, .jpeg, .png)", - "format": "uri", - "type": [ - "string", - "null" - ] - }, - "id_doc_country": { - "enum": [ - "AF", - "AL", - "DZ", - "AS", - "AD", - "AO", - "AI", - "AQ", - "AG", - "AR", - "AM", - "AW", - "AU", - "AT", - "AZ", - "BS", - "BH", - "BD", - "BB", - "BY", - "BE", - "BZ", - "BJ", - "BM", - "BT", - "BO", - "BQ", - "BA", - "BW", - "BV", - "BR", - "IO", - "BN", - "BG", - "BF", - "BI", - "CV", - "KH", - "CM", - "CA", - "KY", - "CF", - "TD", - "CL", - "CN", - "CX", - "CC", - "CO", - "KM", - "CD", - "CG", - "CK", - "CR", - "HR", - "CU", - "CW", - "CY", - "CZ", - "CI", - "DK", - "DJ", - "DM", - "DO", - "EC", - "EG", - "SV", - "GQ", - "ER", - "EE", - "SZ", - "ET", - "FK", - "FO", - "FJ", - "FI", - "FR", - "GF", - "PF", - "TF", - "GA", - "GM", - "GE", - "DE", - "GH", - "GI", - "GR", - "GL", - "GD", - "GP", - "GU", - "GT", - "GG", - "GN", - "GW", - "GY", - "HT", - "HM", - "VA", - "HN", - "HK", - "HU", - "IS", - "IN", - "ID", - "IR", - "IQ", - "IE", - "IM", - "IL", - "IT", - "JM", - "JP", - "JE", - "JO", - "KZ", - "KE", - "KI", - "KP", - "KR", - "KW", - "KG", - "LA", - "LV", - "LB", - "LS", - "LR", - "LY", - "LI", - "LT", - "LU", - "MO", - "MG", - "MW", - "MY", - "MV", - "ML", - "MT", - "MH", - "MQ", - "MR", - "MU", - "YT", - "MX", - "FM", - "MD", - "MC", - "MN", - "ME", - "MS", - "MA", - "MZ", - "MM", - "NA", - "NR", - "NP", - "NL", - "NC", - "NZ", - "NI", - "NE", - "NG", - "NU", - "NF", - "MP", - "NO", - "OM", - "PK", - "PW", - "PS", - "PA", - "PG", - "PY", - "PE", - "PH", - "PN", - "PL", - "PT", - "PR", - "QA", - "MK", - "RO", - "RU", - "RW", - "RE", - "BL", - "SH", - "KN", - "LC", - "MF", - "PM", - "VC", - "WS", - "SM", - "ST", - "SA", - "SN", - "RS", - "SC", - "SL", - "SG", - "SX", - "SK", - "SI", - "SB", - "SO", - "ZA", - "GS", - "SS", - "ES", - "LK", - "SD", - "SR", - "SJ", - "SE", - "CH", - "SY", - "TW", - "TJ", - "TZ", - "TH", - "TL", - "TG", - "TK", - "TO", - "TT", - "TN", - "TR", - "TM", - "TC", - "TV", - "UG", - "UA", - "AE", - "GB", - "UM", - "US", - "UY", - "UZ", - "VU", - "VE", - "VN", - "VG", - "VI", - "WF", - "EH", - "YE", - "ZM", - "ZW", - "AX" - ], - "example": "BR", - "type": "string" - }, - "id_doc_front_file": { - "format": "uri", - "type": "string" - }, - "id_doc_type": { - "enum": [ - "PASSPORT", - "ID_CARD", - "DRIVERS" - ], - "example": "PASSPORT", - "type": "string" - }, - "last_name": { - "example": "Doe", - "minLength": 1, - "type": "string" - }, - "ownership_percentage": { - "description": "Ownership percentage of the beneficial owner (0-100)", - "example": 25, - "maximum": 100, - "minimum": 0, - "type": [ - "integer", - "null" - ] - }, - "postal_code": { - "example": "02050", - "type": "string" - }, - "proof_of_address_doc_file": { - "description": "Please upload one document that serve as proof of address, this needs to be the same address as the one provided above. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", - "format": "uri", - "type": [ - "string", - "null" - ] - }, - "proof_of_address_doc_type": { - "enum": [ - "UTILITY_BILL", - "BANK_STATEMENT", - "RENTAL_AGREEMENT", - "TAX_DOCUMENT", - "GOVERNMENT_CORRESPONDENCE" - ], - "example": "UTILITY_BILL", - "type": [ - "string", - "null" - ] - }, - "role": { - "description": "A beneficial owner is someone who directly or indirectly owns 25% or more of your business. A controlling person is someone with significant responsibility to control, manage or direct your business (typically a CEO, senior executive officer or equivalent).", - "enum": [ - "beneficial_controlling", - "beneficial_owner", - "controlling_person" - ], - "example": "beneficial_owner", - "type": "string" - }, - "state_province_region": { - "example": "MA", - "type": "string" - }, - "tax_id": { - "example": "536804398", - "type": "string" - }, - "tax_type": { - "description": "Tax identifier type. Mandatory when country is US; must be SSN or ITIN.", - "enum": [ - "SSN", - "ITIN" - ], - "example": "SSN", - "type": [ - "string", - "null" - ] - }, - "title": { - "description": "Job title of the owner", - "example": "CEO", - "maxLength": 128, - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "role", - "first_name", - "last_name", - "date_of_birth", - "tax_id", - "address_line_1", - "city", - "state_province_region", - "country", - "postal_code", - "id_doc_country", - "id_doc_type", - "id_doc_front_file" - ], - "type": "object" - }, - "type": [ - "array", - "null" - ] - }, - "phone_number": { - "example": "+13055555555", - "type": [ - "string", - "null" - ] - }, - "postal_code": { - "example": "02050", - "type": [ - "string", - "null" - ] - }, - "proof_of_address_doc_file": { - "description": "Please upload one document that serve as proof of address, this needs to be the same physical address as the one provided above. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", - "example": "https://example.com/image.png", - "format": "uri", - "type": [ - "string", - "null" - ] - }, - "proof_of_address_doc_type": { - "enum": [ - "UTILITY_BILL", - "BANK_STATEMENT", - "RENTAL_AGREEMENT", - "TAX_DOCUMENT", - "GOVERNMENT_CORRESPONDENCE" - ], - "example": "UTILITY_BILL", - "type": [ - "string", - "null" - ] - }, - "proof_of_ownership_doc_file": { - "description": "Please upload your proof of ownership below. This document usually includes information like the shareholders names and percentages. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", - "example": "https://example.com/image.png", - "format": "uri", - "type": [ - "string", - "null" - ] - }, - "publicly_traded": { - "example": false, - "type": [ - "boolean", - "null" - ] - }, - "purpose_of_transactions": { - "enum": [ - "business_transactions", - "charitable_donations", - "investment_purposes", - "payments_to_friends_or_family_abroad", - "personal_or_living_expenses", - "protect_wealth", - "purchase_good_and_services", - "receive_payment_for_freelancing", - "receive_salary", - "other" - ], - "example": "business_transactions", - "type": [ - "string", - "null" - ] - }, - "purpose_of_transactions_explanation": { - "example": "I am a business owner and I want to receive payments from my customers", - "type": [ - "string", - "null" - ] - }, - "selfie_file": { - "description": "Only image files are accepted (.jpg, .jpeg, .png)", - "example": "https://example.com/image.png", - "format": "uri", - "type": [ - "string", - "null" - ] - }, - "source_of_funds_doc_file": { - "example": "https://example.com/image.png", - "format": "uri", - "type": [ - "string", - "null" - ] - }, - "source_of_funds_doc_type": { - "enum": [ - "business_income", - "gambling_proceeds", - "gifts", - "government_benefits", - "inheritance", - "investment_loans", - "pension_retirement", - "salary", - "sale_of_assets_real_estate", - "savings", - "esops", - "investment_proceeds", - "someone_else_funds" - ], - "example": "business_income", - "type": [ - "string", - "null" - ] - }, - "source_of_wealth": { - "enum": [ - "business_dividends_or_profits", - "investments", - "asset_sales", - "client_investor_contributions", - "gambling", - "charitable_contributions", - "inheritance", - "affiliate_or_royalty_income" - ], - "example": "affiliate_or_royalty_income", - "type": [ - "string", - "null" - ] - }, - "state_province_region": { - "example": "MA", - "type": [ - "string", - "null" - ] - }, - "tax_id": { - "example": "536804398", - "type": [ - "string", - "null" - ] - }, - "tos_id": { - "example": "to_000000000000", - "maxLength": 15, - "minLength": 15, - "type": [ - "string", - "null" - ] - }, - "type": { - "enum": [ - "individual", - "business" - ], - "example": "individual", - "type": "string" - }, - "website": { - "example": "https://example.com", - "format": "uri", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "type", - "kyc_type", - "email", - "country" - ], - "type": "object" - }, - "CreateExternalCustomerTokenIn": { - "properties": { - "kyc_type": { - "enum": [ - "light", - "standard", - "enhanced" - ], - "example": "standard", - "type": "string" - }, - "type": { - "enum": [ - "individual", - "business" - ], - "example": "individual", - "type": "string" - } - }, - "required": [ - "type", - "kyc_type" - ], - "type": "object" - }, - "CreateFeedbackIn": { - "properties": { - "description": { - "example": "When I click the create payout button, nothing happens.", - "maxLength": 5000, - "minLength": 1, - "type": "string" - }, - "page_url": { - "example": "https://app.blindpay.com/instances/in_123/payouts", - "maxLength": 2000, - "type": [ - "string", - "null" - ] - }, - "title": { - "example": "Cannot create payout", - "maxLength": 200, - "minLength": 1, - "type": "string" - }, - "type": { - "enum": [ - "bug", - "suggestion", - "feedback", - "praise" - ], - "example": "bug", - "type": "string" - }, - "user_agent": { - "example": "Mozilla/5.0", - "maxLength": 500, - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "type", - "title", - "description" - ], - "type": "object" - }, - "CreateInstanceOnboardingInviteIn": { - "properties": { - "email": { - "description": "Email address of the person who will receive the onboarding invite", - "example": "collaborator@example.com", - "format": "email", - "type": "string" - } - }, - "required": [ - "email" - ], - "type": "object" - }, - "CreateInstanceRfiBody": { - "properties": { - "created_by_email": { - "format": "email", - "type": "string" - }, - "request": { - "items": { - "$ref": "#/components/schemas/RfiSection" - }, - "maxItems": 20, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "created_by_email", - "request" - ], - "type": "object" - }, - "CreateInviteIn": { - "properties": { - "email": { - "example": "john@doe.com", - "format": "email", - "type": "string" - }, - "invite_all_owned_instances": { - "default": false, - "description": "When true, the member is added/invited to every instance the inviter owns, ignoring the instance in the path.", - "example": false, - "type": "boolean" - }, - "user_role": { - "enum": [ - "owner", - "admin", - "finance", - "checker", - "operations", - "developer", - "viewer" - ], - "example": "admin", - "type": "string" - } - }, - "required": [ - "email", - "user_role" - ], - "type": "object" - }, - "CreatePayinIn": { - "properties": { - "payin_quote_id": { - "example": "pq_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - } - }, - "required": [ - "payin_quote_id" - ], - "type": "object" - }, - "CreatePayinOut": { - "properties": { - "billing_fee_amount": { - "description": "Billing fee in cents (charged at the end of the month)", - "example": 50, - "type": [ - "number", - "null" - ] - }, - "blindpay_bank_details": { - "properties": { - "account_number": { - "default": "621327727210181", - "example": "621327727210181", - "type": "string" - }, - "account_type": { - "default": "Business checking", - "example": "Business checking", - "type": "string" - }, - "ach": { - "properties": { - "account_number": { - "example": "123456789", - "type": "string" - }, - "routing_number": { - "example": "123456789", - "type": "string" - } - }, - "required": [ - "routing_number", - "account_number" - ], - "type": [ - "object", - "null" - ] - }, - "beneficiary": { - "properties": { - "address_line_1": { - "default": "8 The Green, #19364", - "example": "8 The Green, #19364", - "type": "string" - }, - "address_line_2": { - "default": "Dover, DE 19901", - "example": "Dover, DE 19901", - "type": "string" - }, - "name": { - "default": "BlindPay, Inc.", - "example": "BlindPay, Inc.", - "type": "string" - } - }, - "type": "object" - }, - "receiving_bank": { - "properties": { - "address_line_1": { - "default": "1 Letterman Drive, Building A, Suite A4-700", - "example": "1 Letterman Drive, Building A, Suite A4-700", - "type": "string" - }, - "address_line_2": { - "default": "San Francisco, CA 94129", - "example": "San Francisco, CA 94129", - "type": "string" - }, - "name": { - "default": "CFSB", - "example": "CFSB", - "type": "string" - } - }, - "type": "object" - }, - "routing_number": { - "default": "121145349", - "example": "121145349", - "type": "string" - }, - "rtp": { - "properties": { - "account_number": { - "example": "123456789", - "type": "string" - }, - "routing_number": { - "example": "123456789", - "type": "string" - } - }, - "required": [ - "routing_number", - "account_number" - ], - "type": [ - "object", - "null" - ] - }, - "swift_account_number": { - "example": "GB50TCCL04140449730892", - "type": [ - "string", - "null" - ] - }, - "swift_bic_code": { - "default": "CHASUS33", - "example": "CHASUS33", - "type": [ - "string", - "null" - ] - }, - "swift_receiving_bank": { - "properties": { - "address_line_1": { - "example": "270 Park Ave", - "type": [ - "string", - "null" - ] - }, - "address_line_2": { - "example": "New York, NY, 10017-2070", - "type": [ - "string", - "null" - ] - }, - "name": { - "example": "JPMorgan Chase", - "type": [ - "string", - "null" - ] - } - }, - "type": [ - "object", - "null" - ] - }, - "wire": { - "properties": { - "account_number": { - "example": "123456789", - "type": "string" - }, - "routing_number": { - "example": "123456789", - "type": "string" - } - }, - "required": [ - "routing_number", - "account_number" - ], - "type": [ - "object", - "null" - ] - } - }, - "required": [ - "beneficiary", - "receiving_bank" - ], - "type": "object" - }, - "clabe": { - "description": "CLABE code", - "example": "014027000000000008", - "type": [ - "string", - "null" - ] - }, - "customer_id": { - "example": "re_000000000000", - "maxLength": 15, - "minLength": 15, - "type": [ - "string", - "null" - ] - }, - "id": { - "example": "pi_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - }, - "memo_code": { - "description": "Memo code", - "example": "8K45GHBNT6BQ6462", - "type": [ - "string", - "null" - ] - }, - "partner_fee": { - "default": 0, - "description": "Payin partner fee amount in cents", - "example": 25000, - "minimum": 0, - "type": "integer" - }, - "payment_method": { - "enum": [ - "ach", - "wire", - "pix", - "ted", - "spei", - "transfers", - "pse", - "international_swift", - "rtp" - ], - "example": "pix", - "type": [ - "string", - "null" - ] - }, - "pix_code": { - "description": "PIX code", - "example": "00020101021226790014br.gov.bcb.pix2557brcode.starkinfra.com/v2/bcf07f6c4110454e9fd6f120bab13e835204000053039865802BR5915Blind Pay, Inc.6010Vila Velha62070503***6304BCAB", - "type": [ - "string", - "null" - ] - }, - "receiver_amount": { - "description": "10.10 USDC", - "example": 1010, - "type": [ - "number", - "null" - ] - }, - "sender_amount": { - "description": "52.40 BRL needs to be sent in a pix transfer", - "example": 5240, - "type": [ - "number", - "null" - ] - }, - "status": { - "description": "Payin general status", - "enum": [ - "processing", - "on_hold", - "failed", - "refunded", - "completed" - ], - "example": "processing", - "type": "string" - }, - "tracking_complete": { - "properties": { - "completed_at": { - "description": "Complete completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "step": { - "description": "Complete step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "example": "on_hold", - "type": "string" - }, - "transaction_hash": { - "description": "Complete transaction hash", - "example": "0x123...890", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "step" - ], - "type": "object" - }, - "tracking_payment": { - "properties": { - "approved_risk_sources": { - "description": "Risk sources already approved by an analyst", - "example": [ - "seon_review" - ], - "items": { - "type": "string" - }, - "type": [ - "array", - "null" - ] - }, - "completed_at": { - "description": "Payment completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "provider_name": { - "description": "Payment provider name", - "example": "blockchain", - "type": [ - "string", - "null" - ] - }, - "review_context": { - "additionalProperties": {}, - "description": "Structured risk context for manual review", - "type": [ - "object", - "null" - ] - }, - "review_source": { - "description": "Risk source that sent this payin to manual review", - "example": "seon_review", - "type": [ - "string", - "null" - ] - }, - "step": { - "description": "Payment step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "example": "on_hold", - "type": "string" - } - }, - "required": [ - "step" - ], - "type": "object" - }, - "tracking_transaction": { - "properties": { - "completed_at": { - "description": "Payin transaction completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "description": { - "example": "Payment from John Doe Smith", - "type": [ - "string", - "null" - ] - }, - "end_to_end_id": { - "description": "BACEN Pix end-to-end transaction ID (govt Pix ID)", - "example": "E20018183202603311320vm6ALFpJpsS", - "type": [ - "string", - "null" - ] - }, - "external_id": { - "description": "Payin transaction external id", - "example": "12345678", - "type": [ - "string", - "null" - ] - }, - "provider_name": { - "description": "Payment provider name", - "enum": [ - "Nvio Pagos", - "Brex", - "Stark Bank", - "JPMorgan Chase", - "HSBC", - "Inter", - "JP Morgan Chase", - "Bitso", - "Citi", - "CFSB", - "Triple A Technologies", - "Portage Bank" - ], - "example": "HSBC", - "type": [ - "string", - "null" - ] - }, - "provider_transaction_id": { - "description": "Payment provider transaction id", - "example": "", - "type": [ - "string", - "null" - ] - }, - "pse_instruction": { - "properties": { - "bank_code": { - "description": "PSE payer bank code", - "example": "1007", - "type": [ - "string", - "null" - ] - }, - "document_type": { - "description": "PSE payer document type", - "enum": [ - "CC", - "NIT" - ], - "example": "CC", - "type": "string" - }, - "email": { - "description": "PSE payer email", - "example": "juan@example.com", - "type": "string" - }, - "fid": { - "description": "PSE funding identifier for webhook matching", - "example": "fid_abc123", - "type": "string" - }, - "full_name": { - "description": "PSE payer full name", - "example": "Juan P\u00e9rez Garc\u00eda", - "type": "string" - }, - "payment_link": { - "description": "PSE payment link URL", - "example": "https://pse.example.com/payment/abc123", - "type": "string" - }, - "phone": { - "description": "PSE payer phone number", - "example": "+573001234567", - "type": "string" - }, - "tax_id": { - "description": "PSE payer document number", - "example": "1234567890", - "type": "string" - } - }, - "required": [ - "payment_link", - "fid", - "full_name", - "tax_id", - "document_type", - "phone", - "email" - ], - "type": [ - "object", - "null" - ] - }, - "sender_account_number": { - "example": "1234567890", - "type": [ - "string", - "null" - ] - }, - "sender_bank_code": { - "example": "00416968", - "type": [ - "string", - "null" - ] - }, - "sender_bank_name": { - "example": "Bank of America", - "type": [ - "string", - "null" - ] - }, - "sender_name": { - "example": "John Doe Smith", - "type": [ - "string", - "null" - ] - }, - "sender_tax_id": { - "example": "123.456.789-10", - "type": [ - "string", - "null" - ] - }, - "status": { - "description": "Payin transaction status", - "enum": [ - "failed", - "completed" - ], - "example": "failed", - "type": [ - "string", - "null" - ] - }, - "step": { - "description": "Payin transaction step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "example": "processing", - "type": "string" - }, - "ted_instruction": { - "properties": { - "account_number": { - "example": "01011707084-8", - "type": "string" - }, - "account_type": { - "example": "checking", - "type": "string" - }, - "bank_code": { - "example": "665", - "type": "string" - }, - "bank_name": { - "example": "STARK BANK S.A.", - "type": "string" - }, - "beneficiary_name": { - "example": "Blind Pay, Inc.", - "type": "string" - }, - "branch_code": { - "example": "5340", - "type": "string" - }, - "tax_id": { - "example": "57.599.376/0001-81", - "type": "string" - } - }, - "required": [ - "beneficiary_name", - "tax_id", - "bank_code", - "bank_name", - "branch_code", - "account_number", - "account_type" - ], - "type": [ - "object", - "null" - ] - }, - "trace_number": { - "example": "1234567890", - "type": [ - "string", - "null" - ] - }, - "transaction_hash": { - "description": "Blockchain transaction hash", - "example": "0x123...890", - "type": [ - "string", - "null" - ] - }, - "transaction_reference": { - "example": "1234567890", - "type": [ - "string", - "null" - ] - }, - "transfers_instruction": { - "properties": { - "account": { - "description": "CVU/CBU/Alias account number", - "example": "0000003100012389237485", - "type": "string" - }, - "tax_id": { - "description": "CUIT/CUIL (normalized, digits only)", - "example": "20123456783", - "type": [ - "string", - "null" - ] - }, - "type": { - "description": "Account type (CVU, CBU, or ALIAS)", - "enum": [ - "CVU", - "CBU", - "ALIAS" - ], - "example": "CVU", - "type": "string" - } - }, - "required": [ - "account", - "type" - ], - "type": [ - "object", - "null" - ] - } - }, - "required": [ - "step" - ], - "type": "object" - }, - "transaction_fee_amount": { - "description": "Transaction fee in cents (percentage-based fee)", - "example": 100, - "type": [ - "number", - "null" - ] - } - }, - "required": [ - "id", - "status", - "tracking_complete", - "tracking_payment", - "tracking_transaction", - "blindpay_bank_details" - ], - "type": "object" - }, - "CreatePayinQuoteIn": { - "properties": { - "blockchain_wallet_id": { - "example": "bw_000000000000", - "maxLength": 15, - "minLength": 15, - "type": [ - "string", - "null" - ] - }, - "cover_fees": { - "description": "If true, the sender will cover the fees. If false, the customer will cover the fees.", - "example": true, - "type": [ - "boolean", - "null" - ] - }, - "currency_type": { - "description": "", - "enum": [ - "sender", - "receiver" - ], - "example": "sender", - "type": "string" - }, - "is_otc": { - "description": "If true, the payin quote is for an OTC (Over the Counter) transaction", - "example": false, - "type": [ - "boolean", - "null" - ] - }, - "partner_fee_id": { - "example": "pf_000000000000", - "maxLength": 15, - "minLength": 15, - "type": [ - "string", - "null" - ] - }, - "payer_rules": { - "example": { - "pix_allowed_tax_ids": [ - "123.456.789-09" - ], - "pse_allowed_tax_ids": [ - "1234567890" - ], - "transfers_allowed_tax_id": "20-12345678-3" - }, - "properties": { - "pix_allowed_tax_ids": { - "items": { - "example": "123.456.789-09", - "type": "string" - }, - "type": [ - "array", - "null" - ] - }, - "pse_allowed_tax_ids": { - "items": { - "example": "1234567890", - "type": "string" - }, - "type": [ - "array", - "null" - ] - }, - "pse_bank_code": { - "type": [ - "string", - "null" - ] - }, - "pse_document_number": { - "type": [ - "string", - "null" - ] - }, - "pse_document_type": { - "enum": [ - "CC", - "NIT" - ], - "type": [ - "string", - "null" - ] - }, - "pse_email": { - "format": "email", - "type": [ - "string", - "null" - ] - }, - "pse_full_name": { - "maxLength": 50, - "type": [ - "string", - "null" - ] - }, - "pse_phone": { - "pattern": "^\\+573\\d{9}$", - "type": [ - "string", - "null" - ] - }, - "transfers_allowed_tax_id": { - "example": "20-12345678-3", - "type": [ - "string", - "null" - ] - } - }, - "type": [ - "object", - "null" - ] - }, - "payment_method": { - "enum": [ - "ach", - "wire", - "pix", - "ted", - "spei", - "transfers", - "pse", - "international_swift", - "rtp" - ], - "example": "pix", - "type": "string" - }, - "request_amount": { - "description": "1000 represents 10.00, 2050 represents 20.50", - "example": 1000, - "minimum": 500, - "type": "integer" - }, - "token": { - "enum": [ - "USDC", - "USDT", - "USDB" - ], - "example": "USDC", - "type": "string" - }, - "wallet_id": { - "example": "bl_000000000000", - "maxLength": 15, - "minLength": 15, - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "currency_type", - "request_amount", - "payment_method", - "token" - ], - "type": "object" - }, - "CreatePayinQuoteOut": { - "properties": { - "billing_fee_amount": { - "description": "Billing fee in cents (charged at the end of the month)", - "example": 50, - "type": [ - "number", - "null" - ] - }, - "blindpay_quotation": { - "description": "1 USD = 5.05 BRL (commercial quotation + (blindpay taxes))", - "example": 505, - "type": [ - "number", - "null" - ] - }, - "commercial_quotation": { - "description": "1 USD = 4.95 BRL", - "example": 495, - "type": [ - "number", - "null" - ] - }, - "expires_at": { - "description": "Epoch unix timestamp that represents the final datetime to transaction be received on blockchain", - "example": 1712958191, - "type": [ - "number", - "null" - ] - }, - "flat_fee": { - "description": "0.5 USDC", - "example": 50, - "type": [ - "number", - "null" - ] - }, - "id": { - "example": "qu_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - }, - "is_otc": { - "description": "If true, the payin quote is for an OTC (Over the Counter) transaction", - "example": false, - "type": [ - "boolean", - "null" - ] - }, - "partner_fee_amount": { - "default": 0, - "description": "1.5 USDC", - "example": 150, - "type": [ - "number", - "null" - ] - }, - "receiver_amount": { - "description": "10.10 USDC", - "example": 1010, - "type": [ - "number", - "null" - ] - }, - "sender_amount": { - "description": "52.40 BRL needs to be sent in a pix transfer", - "example": 5240, - "type": [ - "number", - "null" - ] - } - }, - "required": [ - "id", - "expires_at", - "commercial_quotation", - "blindpay_quotation", - "receiver_amount", - "sender_amount", - "flat_fee" - ], - "type": "object" - }, - "CreatePortalSessionSchemaOut": { - "properties": { - "url": { - "description": "Stripe Customer Portal session URL", - "example": "https://billing.stripe.com/p/session/test_xxx", - "format": "uri", - "type": "string" - } - }, - "required": [ - "url" - ], - "type": "object" - }, - "CreateRecurringItemSchemaIn": { - "properties": { - "amount": { - "description": "Amount in cents", - "example": 5000, - "minimum": 0, - "type": "integer" - }, - "description": { - "example": "Swift Addon", - "minLength": 1, - "type": "string" - }, - "first_invoice_sequence": { - "example": 1, - "exclusiveMinimum": 0, - "type": "integer" - }, - "frequency_months": { - "example": 1, - "exclusiveMinimum": 0, - "type": "integer" - }, - "product_id": { - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "description", - "amount", - "frequency_months", - "first_invoice_sequence" - ], - "type": "object" - }, - "CreateRfiBody": { - "properties": { - "created_by_email": { - "format": "email", - "type": "string" - }, - "keep_customer_approved": { - "default": false, - "description": "When true, sets the customer to approved_rfi (keeps full access while the RFI is open) instead of compliance_request (blocked).", - "example": false, - "type": "boolean" - }, - "request": { - "items": { - "$ref": "#/components/schemas/RfiSection" - }, - "maxItems": 20, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "created_by_email", - "request" - ], - "type": "object" - }, - "CreateTransferIn": { - "properties": { - "transfer_quote_id": { - "example": "pq_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - } - }, - "required": [ - "transfer_quote_id" - ], - "type": "object" - }, - "CreateTransferOut": { - "properties": { - "id": { - "example": "pa_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - }, - "status": { - "description": "Transfer general status", - "enum": [ - "processing", - "failed", - "refunded", - "completed" - ], - "example": "processing", - "type": "string" - }, - "tracking_bridge_swap": { - "properties": { - "completed_at": { - "description": "Complete completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "error_message": { - "example": "Gas fee is too low", - "type": [ - "string", - "null" - ] - }, - "gas_fee": { - "description": "Gas fee related to transaction", - "example": "100", - "type": [ - "string", - "null" - ] - }, - "step": { - "description": "Complete step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "example": "on_hold", - "type": "string" - }, - "transaction_hash": { - "description": "Complete transaction hash", - "example": "0x123...890", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "step" - ], - "type": "object" - }, - "tracking_complete": { - "properties": { - "completed_at": { - "description": "Complete completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "error_message": { - "example": "Gas fee is too low", - "type": [ - "string", - "null" - ] - }, - "gas_fee": { - "description": "Gas fee related to transaction", - "example": "100", - "type": [ - "string", - "null" - ] - }, - "step": { - "description": "Complete step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "example": "on_hold", - "type": "string" - }, - "transaction_hash": { - "description": "Complete transaction hash", - "example": "0x123...890", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "step" - ], - "type": "object" - }, - "tracking_paymaster": { - "properties": { - "completed_at": { - "description": "Complete completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "error_message": { - "example": "Gas fee is too low", - "type": [ - "string", - "null" - ] - }, - "gas_fee": { - "description": "Gas fee related to transaction", - "example": "100", - "type": [ - "string", - "null" - ] - }, - "step": { - "description": "Complete step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "example": "on_hold", - "type": "string" - }, - "transaction_hash": { - "description": "Complete transaction hash", - "example": "0x123...890", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "step" - ], - "type": "object" - }, - "tracking_transaction_monitoring": { - "properties": { - "blockchain_screening": { - "description": "Blindpay screening step", - "example": 1, - "maximum": 100, - "minimum": 0, - "type": [ - "number", - "null" - ] - }, - "completed_at": { - "description": "Transfer transaction completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "risk_score": { - "description": "Risk score", - "example": 1, - "maximum": 100, - "minimum": 0, - "type": [ - "number", - "null" - ] - }, - "step": { - "description": "Transaction monitoring step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "example": "processing", - "type": "string" - } - }, - "required": [ - "step" - ], - "type": "object" - } - }, - "required": [ - "id", - "status", - "tracking_bridge_swap", - "tracking_complete", - "tracking_paymaster", - "tracking_transaction_monitoring" - ], - "type": "object" - }, - "CreateTransferQuoteIn": { - "properties": { - "amount_reference": { - "description": "", - "enum": [ - "sender", - "receiver" - ], - "example": "sender", - "type": "string" - }, - "cover_fees": { - "description": "If true, the sender will cover the fees. If false, the customer will cover the fees.", - "example": true, - "type": [ - "boolean", - "null" - ] - }, - "customer_network": { - "enum": [ - "base", - "sepolia", - "arbitrum_sepolia", - "base_sepolia", - "arbitrum", - "polygon", - "polygon_amoy", - "ethereum", - "stellar", - "stellar_testnet", - "tron", - "solana", - "solana_devnet" - ], - "example": "polygon", - "type": "string" - }, - "customer_token": { - "enum": [ - "USDC", - "USDT", - "USDB" - ], - "example": "USDC", - "type": "string" - }, - "customer_wallet_address": { - "example": "0xDD6a3aD0949396e57C7738ba8FC1A46A5a1C372C", - "maxLength": 64, - "minLength": 32, - "type": "string" - }, - "partner_fee_id": { - "example": "pf_000000000000", - "maxLength": 15, - "minLength": 15, - "type": [ - "string", - "null" - ] - }, - "request_amount": { - "description": "100 represents 1, 2050 represents 20.50", - "example": 1000, - "minimum": 1, - "type": "integer" - }, - "sender_token": { - "enum": [ - "USDC", - "USDT", - "USDB" - ], - "example": "USDC", - "type": "string" - }, - "wallet_id": { - "example": "bl_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - } - }, - "required": [ - "wallet_id", - "amount_reference", - "request_amount", - "sender_token", - "customer_wallet_address", - "customer_token", - "customer_network" - ], - "type": "object" - }, - "CreateTransferQuoteOut": { - "properties": { - "blindpay_quotation": { - "description": "1 USD = 5.05 BRL (commercial quotation + (blindpay taxes))", - "example": 505, - "type": [ - "number", - "null" - ] - }, - "commercial_quotation": { - "description": "1 USD = 4.95 BRL", - "example": 495, - "type": [ - "number", - "null" - ] - }, - "expires_at": { - "description": "Epoch unix timestamp that represents the final datetime to transaction be received on blockchain", - "example": 1712958191, - "type": [ - "number", - "null" - ] - }, - "flat_fee": { - "description": "0.5 USDC", - "example": 50, - "type": "number" - }, - "id": { - "example": "qu_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - }, - "partner_fee_amount": { - "default": 0, - "description": "1.5 USDC", - "example": 150, - "type": [ - "number", - "null" - ] - }, - "receiver_amount": { - "description": "10.10 USDC", - "example": 1010, - "type": "number" - }, - "sender_amount": { - "description": "52.40 BRL needs to be sent in a pix transfer", - "example": 5240, - "type": "number" - } - }, - "required": [ - "id", - "expires_at", - "commercial_quotation", - "blindpay_quotation", - "receiver_amount", - "sender_amount", - "flat_fee" - ], - "type": "object" - }, - "CreateTransferSchemaOut": { - "properties": { - "id": { - "example": "pa_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - }, - "status": { - "description": "Transfer general status", - "enum": [ - "processing", - "failed", - "refunded", - "completed" - ], - "example": "processing", - "type": "string" - }, - "tracking_bridge_swap": { - "properties": { - "completed_at": { - "description": "Complete completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "error_message": { - "example": "Gas fee is too low", - "type": [ - "string", - "null" - ] - }, - "gas_fee": { - "description": "Gas fee related to transaction", - "example": "100", - "type": [ - "string", - "null" - ] - }, - "step": { - "description": "Complete step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "example": "on_hold", - "type": "string" - }, - "transaction_hash": { - "description": "Complete transaction hash", - "example": "0x123...890", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "step" - ], - "type": "object" - }, - "tracking_complete": { - "properties": { - "completed_at": { - "description": "Complete completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "error_message": { - "example": "Gas fee is too low", - "type": [ - "string", - "null" - ] - }, - "gas_fee": { - "description": "Gas fee related to transaction", - "example": "100", - "type": [ - "string", - "null" - ] - }, - "step": { - "description": "Complete step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "example": "on_hold", - "type": "string" - }, - "transaction_hash": { - "description": "Complete transaction hash", - "example": "0x123...890", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "step" - ], - "type": "object" - }, - "tracking_paymaster": { - "properties": { - "completed_at": { - "description": "Complete completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "error_message": { - "example": "Gas fee is too low", - "type": [ - "string", - "null" - ] - }, - "gas_fee": { - "description": "Gas fee related to transaction", - "example": "100", - "type": [ - "string", - "null" - ] - }, - "step": { - "description": "Complete step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "example": "on_hold", - "type": "string" - }, - "transaction_hash": { - "description": "Complete transaction hash", - "example": "0x123...890", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "step" - ], - "type": "object" - }, - "tracking_transaction_monitoring": { - "properties": { - "blockchain_screening": { - "description": "Blindpay screening step", - "example": 1, - "maximum": 100, - "minimum": 0, - "type": [ - "number", - "null" - ] - }, - "completed_at": { - "description": "Transfer transaction completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "risk_score": { - "description": "Risk score", - "example": 1, - "maximum": 100, - "minimum": 0, - "type": [ - "number", - "null" - ] - }, - "step": { - "description": "Transaction monitoring step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "example": "processing", - "type": "string" - } - }, - "required": [ - "step" - ], - "type": "object" - } - }, - "required": [ - "id", - "status", - "tracking_bridge_swap", - "tracking_complete", - "tracking_paymaster", - "tracking_transaction_monitoring" - ], - "type": "object" - }, - "CreateVirtualAccountIn": { - "properties": { - "banking_partner": { - "enum": [ - "jpmorgan", - "citi", - "hsbc", - "cfsb", - "portage" - ], - "example": "jpmorgan", - "type": "string" - }, - "blockchain_wallet_id": { - "maxLength": 15, - "minLength": 15, - "type": "string" - }, - "sole_proprietor_doc_file": { - "example": "https://example.com/document.pdf", - "format": "uri", - "type": [ - "string", - "null" - ] - }, - "sole_proprietor_doc_type": { - "enum": [ - "master_service_agreement", - "salary_slip", - "bank_statement" - ], - "example": "master_service_agreement", - "type": [ - "string", - "null" - ] - }, - "token": { - "enum": [ - "USDC", - "USDT", - "USDB" - ], - "example": "USDC", - "type": "string" - } - }, - "required": [ - "banking_partner", - "token", - "blockchain_wallet_id" - ], - "type": "object" - }, - "CreateWalletIn": { - "properties": { - "external_id": { - "example": "your-database-id", - "maxLength": 255, - "type": [ - "string", - "null" - ] - }, - "name": { - "example": "Blindpay Wallet", - "maxLength": 255, - "type": "string" - }, - "network": { - "enum": [ - "base", - "sepolia", - "arbitrum_sepolia", - "base_sepolia", - "arbitrum", - "polygon", - "polygon_amoy", - "ethereum", - "stellar", - "stellar_testnet", - "tron", - "solana", - "solana_devnet" - ], - "example": "polygon", - "type": "string" - } - }, - "required": [ - "network", - "name" - ], - "type": "object" - }, - "CurrentUsageSchema": { - "properties": { - "due_date": { - "description": "Expected due date when invoice is generated (null for partner-fee-only invoices)", - "example": "2025-01-21T00:00:00.000Z", - "format": "date-time", - "type": [ - "string", - "null" - ] - }, - "items": { - "description": "Recurring addon items due for the current period", - "items": { - "$ref": "#/components/schemas/AddonItemSchema" - }, - "type": "array" - }, - "minimum_monthly_amount": { - "description": "Minimum monthly amount in cents", - "example": 200000, - "type": "integer" - }, - "payin_billing_fees": { - "description": "Payin billing fees in cents", - "example": 10000, - "type": "integer" - }, - "payin_partner_fees": { - "description": "Payin partner fees in cents (earnings)", - "example": 25000, - "type": "integer" - }, - "payout_billing_fees": { - "description": "Payout billing fees in cents", - "example": 10000, - "type": "integer" - }, - "payout_partner_fees": { - "description": "Payout partner fees in cents (earnings)", - "example": 25000, - "type": "integer" - }, - "period_end": { - "description": "End of billing period", - "example": "2025-12-31T23:59:59.999Z", - "format": "date-time", - "type": "string" - }, - "period_start": { - "description": "Start of billing period", - "example": "2025-12-01T00:00:00.000Z", - "format": "date-time", - "type": "string" - }, - "subscription_plan": { - "description": "Subscription plan: Basic, Business, or Enterprise", - "enum": [ - "Basic", - "Business", - "Enterprise" - ], - "example": "Basic", - "type": [ - "string", - "null" - ] - }, - "subscription_plan_amount": { - "description": "Subscription plan amount in cents", - "example": 24900, - "type": "integer" - }, - "total_to_collect": { - "description": "Total partner fees to collect (earnings) in cents", - "example": 50000, - "type": "integer" - }, - "total_to_pay": { - "description": "Total amount owed to Blindpay in cents", - "example": 40000, - "type": "integer" - }, - "virtual_account_fees": { - "description": "Virtual account fees in cents", - "example": 10000, - "type": "integer" - }, - "virtual_accounts": { - "$ref": "#/components/schemas/VirtualAccountsUsage" - } - }, - "required": [ - "period_start", - "period_end", - "due_date", - "minimum_monthly_amount", - "subscription_plan_amount", - "virtual_accounts", - "virtual_account_fees", - "payin_billing_fees", - "payin_partner_fees", - "payout_billing_fees", - "payout_partner_fees", - "total_to_pay", - "total_to_collect", - "items" - ], - "type": "object" - }, - "CustomerDeleteWebhookOut": { - "properties": { - "customer_id": { - "example": "re_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - }, - "deleted_at": { - "format": "date-time", - "type": "string" - }, - "id": { - "example": "re_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - }, - "instance_id": { - "example": "in_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - }, - "kyc_status": { - "enum": [ - "verifying", - "approved", - "rejected", - "deprecated", - "pending_review", - "awaiting_contract", - "compliance_request", - "approved_rfi" - ], - "example": "verifying", - "type": "string" - }, - "kyc_type": { - "enum": [ - "light", - "standard", - "enhanced" - ], - "example": "standard", - "type": "string" - }, - "type": { - "enum": [ - "individual", - "business" - ], - "example": "individual", - "type": "string" - }, - "webhook_event": { - "enum": [ - "customer.delete" - ], - "type": "string" - } - }, - "required": [ - "webhook_event", - "id", - "customer_id", - "instance_id", - "type", - "kyc_type", - "kyc_status", - "deleted_at" - ], - "type": "object" - }, - "CustomerLimitIncreaseIn": { - "properties": { - "daily": { - "example": 200000, - "maximum": 100000000000, - "type": [ - "integer", - "null" - ] - }, - "monthly": { - "example": 1000000, - "maximum": 100000000000, - "type": [ - "integer", - "null" - ] - }, - "per_transaction": { - "example": 100000, - "maximum": 100000000000, - "type": [ - "integer", - "null" - ] - }, - "supporting_document_file": { - "example": "https://example.com/document.pdf", - "format": "uri", - "type": "string" - }, - "supporting_document_type": { - "enum": [ - "individual_bank_statement", - "individual_tax_return", - "individual_proof_of_income", - "individual_pay_stub", - "individual_employment_letter", - "individual_investment_statement", - "individual_crypto_exchange_statement", - "individual_blockchain_wallet_statement", - "business_bank_statement", - "business_financial_statements", - "business_tax_return", - "business_contract", - "business_accounts_receivable", - "business_merchant_processor_statement", - "business_shareholder_loan" - ], - "example": "individual_bank_statement", - "type": "string" - } - }, - "required": [ - "per_transaction", - "daily", - "monthly", - "supporting_document_type", - "supporting_document_file" - ], - "type": "object" - }, - "CustomerLimitIncreaseOut": { - "properties": { - "id": { - "example": "rl_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - } - }, - "required": [ - "id" - ], - "type": "object" - }, - "CustomerNewWebhookOut": { - "properties": { - "account_purpose": { - "enum": [ - "charitable_donations", - "ecommerce_retail_payments", - "investment_purposes", - "business_expenses", - "payments_to_friends_or_family_abroad", - "personal_or_living_expenses", - "protect_wealth", - "purchase_goods_and_services", - "receive_payments_for_goods_and_services", - "tax_optimization", - "third_party_money_transmission", - "payroll", - "treasury_management", - "other" - ], - "example": "treasury_management", - "type": [ - "string", - "null" - ] - }, - "account_purpose_other": { - "description": "Required when account_purpose is \"other\". Max 512 characters.", - "example": "Custom account purpose description", - "maxLength": 512, - "type": [ - "string", - "null" - ] - }, - "additional_info": { - "description": "Optional extra documents or notes for this customer. `label` is a known category, `value` is either a URL to upload or a free-text description. Any URLs are downloaded and re-hosted on Blindpay storage before being stored.", - "example": [ - { - "label": "EIN_LETTER", - "value": "https://example.com/ein.pdf" - }, - { - "label": "FLOW_OF_FUNDS", - "value": "Funds originate from US payroll deposits, forwarded weekly to customer." - } - ], - "items": { - "$ref": "#/components/schemas/AdditionalInfoItem" - }, - "type": [ - "array", - "null" - ] - }, - "address_line_1": { - "example": "738 Plain St", - "type": [ - "string", - "null" - ] - }, - "address_line_2": { - "example": "Building 22", - "type": [ - "string", - "null" - ] - }, - "alternate_name": { - "example": "Company Name Inc.", - "type": [ - "string", - "null" - ] - }, - "aml_hits": { - "description": "AML screening match details from SEON.", - "example": { - "has_adversemedia_match": false, - "has_crimelist_match": false, - "has_pep_match": false, - "has_sanction_match": false, - "has_watchlist_match": false - }, - "properties": { - "has_adversemedia_match": { - "default": false, - "type": "boolean" - }, - "has_crimelist_match": { - "default": false, - "type": "boolean" - }, - "has_pep_match": { - "default": false, - "type": "boolean" - }, - "has_sanction_match": { - "default": false, - "type": "boolean" - }, - "has_watchlist_match": { - "default": false, - "type": "boolean" - } - }, - "type": [ - "object", - "null" - ] - }, - "aml_status": { - "description": "AML screening status from SEON. null = not yet screened.", - "enum": [ - "clear", - "hit", - "error" - ], - "example": "clear", - "type": [ - "string", - "null" - ] - }, - "business_description": { - "example": "Software development company", - "maxLength": 1000, - "type": [ - "string", - "null" - ] - }, - "business_industry": { - "enum": [ - "111998", - "112120", - "113310", - "115114", - "541211", - "541810", - "541430", - "541715", - "541930", - "561422", - "561311", - "561612", - "561740", - "561730", - "236115", - "236220", - "237310", - "238210", - "811111", - "812111", - "812112", - "532111", - "624410", - "541922", - "811210", - "812199", - "611110", - "611310", - "611410", - "611710", - "211120", - "212114", - "221310", - "562111", - "562920", - "213112", - "522110", - "522210", - "522320", - "523150", - "523940", - "523999", - "524113", - "813110", - "813211", - "813219", - "551112", - "721110", - "722511", - "722513", - "561510", - "713110", - "713210", - "712110", - "711110", - "711211", - "621111", - "621210", - "622110", - "623110", - "621511", - "623220", - "541940", - "621399", - "621910", - "541110", - "311421", - "337121", - "322220", - "339920", - "334210", - "339930", - "312130", - "334111", - "334118", - "325412", - "339112", - "336110", - "336390", - "315990", - "313110", - "339910", - "516120", - "513130", - "512250", - "519130", - "711410", - "711510", - "531110", - "531120", - "531130", - "531190", - "531210", - "531311", - "531312", - "531320", - "531390", - "454110", - "445110", - "455110", - "457110", - "449210", - "444110", - "459210", - "459120", - "445320", - "458110", - "458210", - "458310", - "455219", - "424210", - "456110", - "446120", - "541511", - "541512", - "541519", - "518210", - "511210", - "517111", - "517112", - "517410", - "481111", - "483111", - "485210", - "488510", - "484121", - "493110", - "423430", - "423690", - "423110", - "423830", - "423840", - "423510", - "424690", - "424990", - "424410", - "424480", - "423940", - "541611", - "541618", - "541330", - "541990", - "541214", - "561499" - ], - "example": "541511", - "type": [ - "string", - "null" - ] - }, - "business_type": { - "enum": [ - "corporation", - "llc", - "partnership", - "sole_proprietorship", - "trust", - "non_profit" - ], - "example": "llc", - "type": [ - "string", - "null" - ] - }, - "city": { - "example": "Marshfield", - "type": [ - "string", - "null" - ] - }, - "country": { - "enum": [ - "AF", - "AL", - "DZ", - "AS", - "AD", - "AO", - "AI", - "AQ", - "AG", - "AR", - "AM", - "AW", - "AU", - "AT", - "AZ", - "BS", - "BH", - "BD", - "BB", - "BY", - "BE", - "BZ", - "BJ", - "BM", - "BT", - "BO", - "BQ", - "BA", - "BW", - "BV", - "BR", - "IO", - "BN", - "BG", - "BF", - "BI", - "CV", - "KH", - "CM", - "CA", - "KY", - "CF", - "TD", - "CL", - "CN", - "CX", - "CC", - "CO", - "KM", - "CD", - "CG", - "CK", - "CR", - "HR", - "CU", - "CW", - "CY", - "CZ", - "CI", - "DK", - "DJ", - "DM", - "DO", - "EC", - "EG", - "SV", - "GQ", - "ER", - "EE", - "SZ", - "ET", - "FK", - "FO", - "FJ", - "FI", - "FR", - "GF", - "PF", - "TF", - "GA", - "GM", - "GE", - "DE", - "GH", - "GI", - "GR", - "GL", - "GD", - "GP", - "GU", - "GT", - "GG", - "GN", - "GW", - "GY", - "HT", - "HM", - "VA", - "HN", - "HK", - "HU", - "IS", - "IN", - "ID", - "IR", - "IQ", - "IE", - "IM", - "IL", - "IT", - "JM", - "JP", - "JE", - "JO", - "KZ", - "KE", - "KI", - "KP", - "KR", - "KW", - "KG", - "LA", - "LV", - "LB", - "LS", - "LR", - "LY", - "LI", - "LT", - "LU", - "MO", - "MG", - "MW", - "MY", - "MV", - "ML", - "MT", - "MH", - "MQ", - "MR", - "MU", - "YT", - "MX", - "FM", - "MD", - "MC", - "MN", - "ME", - "MS", - "MA", - "MZ", - "MM", - "NA", - "NR", - "NP", - "NL", - "NC", - "NZ", - "NI", - "NE", - "NG", - "NU", - "NF", - "MP", - "NO", - "OM", - "PK", - "PW", - "PS", - "PA", - "PG", - "PY", - "PE", - "PH", - "PN", - "PL", - "PT", - "PR", - "QA", - "MK", - "RO", - "RU", - "RW", - "RE", - "BL", - "SH", - "KN", - "LC", - "MF", - "PM", - "VC", - "WS", - "SM", - "ST", - "SA", - "SN", - "RS", - "SC", - "SL", - "SG", - "SX", - "SK", - "SI", - "SB", - "SO", - "ZA", - "GS", - "SS", - "ES", - "LK", - "SD", - "SR", - "SJ", - "SE", - "CH", - "SY", - "TW", - "TJ", - "TZ", - "TH", - "TL", - "TG", - "TK", - "TO", - "TT", - "TN", - "TR", - "TM", - "TC", - "TV", - "UG", - "UA", - "AE", - "GB", - "UM", - "US", - "UY", - "UZ", - "VU", - "VE", - "VN", - "VG", - "VI", - "WF", - "EH", - "YE", - "ZM", - "ZW", - "AX" - ], - "example": "US", - "type": "string" - }, - "created_at": { - "example": "2021-01-01T00:00:00Z", - "format": "date-time", - "type": [ - "string", - "null" - ] - }, - "customer_id": { - "example": "re_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - }, - "date_of_birth": { - "anyOf": [ - { - "format": "date-time", - "type": "string" - }, - { - "type": "string" - }, - { - "type": "null" - } - ], - "example": "1998-01-01T00:00:00Z" - }, - "email": { - "example": "email@example.com", - "format": "email", - "type": "string" - }, - "estimated_annual_revenue": { - "enum": [ - "0_99999", - "100000_999999", - "1000000_9999999", - "10000000_49999999", - "50000000_249999999", - "250000000_plus" - ], - "example": "1000000_9999999", - "type": [ - "string", - "null" - ] - }, - "external_id": { - "example": "your_company_external_id", - "type": [ - "string", - "null" - ] - }, - "first_name": { - "example": "John", - "type": [ - "string", - "null" - ] - }, - "formation_date": { - "anyOf": [ - { - "format": "date-time", - "type": "string" - }, - { - "type": "string" - }, - { - "type": "null" - } - ], - "example": "1998-01-01T00:00:00Z", - "format": "date-time" - }, - "fraud_warnings": { - "example": [ - { - "id": "UC114", - "name": "User never used a Datacenter proxy and this device before", - "operation": "+", - "score": 10 - } - ], - "items": { - "properties": { - "id": { - "type": [ - "string", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - }, - "operation": { - "type": [ - "string", - "null" - ] - }, - "score": { - "type": [ - "number", - "null" - ] - } - }, - "type": "object" - }, - "type": [ - "array", - "null" - ] - }, - "id": { - "example": "re_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - }, - "id_doc_back_file": { - "description": "Only image files are accepted (.jpg, .jpeg, .png)", - "example": "https://example.com/image.png", - "type": [ - "string", - "null" - ] - }, - "id_doc_country": { - "enum": [ - "AF", - "AL", - "DZ", - "AS", - "AD", - "AO", - "AI", - "AQ", - "AG", - "AR", - "AM", - "AW", - "AU", - "AT", - "AZ", - "BS", - "BH", - "BD", - "BB", - "BY", - "BE", - "BZ", - "BJ", - "BM", - "BT", - "BO", - "BQ", - "BA", - "BW", - "BV", - "BR", - "IO", - "BN", - "BG", - "BF", - "BI", - "CV", - "KH", - "CM", - "CA", - "KY", - "CF", - "TD", - "CL", - "CN", - "CX", - "CC", - "CO", - "KM", - "CD", - "CG", - "CK", - "CR", - "HR", - "CU", - "CW", - "CY", - "CZ", - "CI", - "DK", - "DJ", - "DM", - "DO", - "EC", - "EG", - "SV", - "GQ", - "ER", - "EE", - "SZ", - "ET", - "FK", - "FO", - "FJ", - "FI", - "FR", - "GF", - "PF", - "TF", - "GA", - "GM", - "GE", - "DE", - "GH", - "GI", - "GR", - "GL", - "GD", - "GP", - "GU", - "GT", - "GG", - "GN", - "GW", - "GY", - "HT", - "HM", - "VA", - "HN", - "HK", - "HU", - "IS", - "IN", - "ID", - "IR", - "IQ", - "IE", - "IM", - "IL", - "IT", - "JM", - "JP", - "JE", - "JO", - "KZ", - "KE", - "KI", - "KP", - "KR", - "KW", - "KG", - "LA", - "LV", - "LB", - "LS", - "LR", - "LY", - "LI", - "LT", - "LU", - "MO", - "MG", - "MW", - "MY", - "MV", - "ML", - "MT", - "MH", - "MQ", - "MR", - "MU", - "YT", - "MX", - "FM", - "MD", - "MC", - "MN", - "ME", - "MS", - "MA", - "MZ", - "MM", - "NA", - "NR", - "NP", - "NL", - "NC", - "NZ", - "NI", - "NE", - "NG", - "NU", - "NF", - "MP", - "NO", - "OM", - "PK", - "PW", - "PS", - "PA", - "PG", - "PY", - "PE", - "PH", - "PN", - "PL", - "PT", - "PR", - "QA", - "MK", - "RO", - "RU", - "RW", - "RE", - "BL", - "SH", - "KN", - "LC", - "MF", - "PM", - "VC", - "WS", - "SM", - "ST", - "SA", - "SN", - "RS", - "SC", - "SL", - "SG", - "SX", - "SK", - "SI", - "SB", - "SO", - "ZA", - "GS", - "SS", - "ES", - "LK", - "SD", - "SR", - "SJ", - "SE", - "CH", - "SY", - "TW", - "TJ", - "TZ", - "TH", - "TL", - "TG", - "TK", - "TO", - "TT", - "TN", - "TR", - "TM", - "TC", - "TV", - "UG", - "UA", - "AE", - "GB", - "UM", - "US", - "UY", - "UZ", - "VU", - "VE", - "VN", - "VG", - "VI", - "WF", - "EH", - "YE", - "ZM", - "ZW", - "AX" - ], - "example": "BR", - "type": [ - "string", - "null" - ] - }, - "id_doc_front_file": { - "description": "Only image files are accepted (.jpg, .jpeg, .png)", - "example": "https://example.com/image.png", - "type": [ - "string", - "null" - ] - }, - "id_doc_type": { - "enum": [ - "PASSPORT", - "ID_CARD", - "DRIVERS" - ], - "example": "PASSPORT", - "type": [ - "string", - "null" - ] - }, - "image_url": { - "example": "https://example.com/image.png", - "type": [ - "string", - "null" - ] - }, - "incorporation_doc_file": { - "description": "Please upload your articles of incorporation below. The articles of incorporation or a certificate of incorporation usually includes information like the company name, business purpose, number of shares offered, value of shares, etc. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", - "example": "https://example.com/image.png", - "type": [ - "string", - "null" - ] - }, - "instance_id": { - "example": "in_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - }, - "ip_address": { - "example": "127.0.0.1", - "format": "ip", - "type": [ - "string", - "null" - ] - }, - "is_fbo": { - "example": false, - "type": [ - "boolean", - "null" - ] - }, - "is_tos_accepted": { - "type": [ - "boolean", - "null" - ] - }, - "kyc_status": { - "enum": [ - "verifying", - "approved", - "rejected", - "deprecated", - "pending_review", - "awaiting_contract", - "compliance_request", - "approved_rfi" - ], - "example": "verifying", - "type": "string" - }, - "kyc_type": { - "enum": [ - "light", - "standard", - "enhanced" - ], - "example": "standard", - "type": "string" - }, - "kyc_warnings": { - "description": "You can find more information here: https://docs.aiprise.com/docs/warnings-and-error-codes", - "example": [ - { - "code": "BIRTH_DATE_MISMATCH", - "message": "Mismatch between supplied birth date and extracted/looked up birth date.", - "resolution_status": "UNRESOLVED", - "warning_id": "38170889-50aa-4271-9eb1-61113ebf408c" - } - ], - "items": { - "properties": { - "code": { - "type": [ - "string", - "null" - ] - }, - "message": { - "type": [ - "string", - "null" - ] - }, - "resolution_status": { - "type": [ - "string", - "null" - ] - }, - "warning_id": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - "type": [ - "array", - "null" - ] - }, - "last_name": { - "example": "Doe", - "type": [ - "string", - "null" - ] - }, - "latitude": { - "description": "Optional geolocation latitude collected from the customer. Forwarded to AiPrise and SEON for fraud analysis.", - "example": 37.7749, - "maximum": 90, - "minimum": -90, - "type": [ - "number", - "null" - ] - }, - "legal_name": { - "example": "Company Name Inc.", - "type": [ - "string", - "null" - ] - }, - "limit": { - "properties": { - "daily": { - "example": 200000, - "type": [ - "number", - "null" - ] - }, - "monthly": { - "example": 1000000, - "type": [ - "number", - "null" - ] - }, - "per_transaction": { - "example": 100000, - "type": [ - "number", - "null" - ] - } - }, - "required": [ - "per_transaction", - "daily", - "monthly" - ], - "type": "object" - }, - "longitude": { - "description": "Optional geolocation longitude collected from the customer. Forwarded to AiPrise and SEON for fraud analysis.", - "example": -122.4194, - "maximum": 180, - "minimum": -180, - "type": [ - "number", - "null" - ] - }, - "occupation": { - "example": "Software Engineer", - "maxLength": 255, - "type": [ - "string", - "null" - ] - }, - "owners": { - "description": "Customer owners", - "example": [ - { - "address_line_1": "738 Plain St", - "address_line_2": "Building 22", - "city": "Marshfield", - "country": "US", - "first_name": "John", - "id": "ub_000000000000", - "id_doc_back_file": "https://example.com/image.png", - "id_doc_country": "BR", - "id_doc_front_file": "https://example.com/image.png", - "id_doc_type": "PASSPORT", - "last_name": "Doe", - "postal_code": "02050", - "state_province_region": "MA" - } - ], - "items": { - "properties": { - "address_line_1": { - "example": "738 Plain St", - "type": "string" - }, - "address_line_2": { - "example": "Building 22", - "type": [ - "string", - "null" - ] - }, - "city": { - "example": "Marshfield", - "type": "string" - }, - "country": { - "enum": [ - "AF", - "AL", - "DZ", - "AS", - "AD", - "AO", - "AI", - "AQ", - "AG", - "AR", - "AM", - "AW", - "AU", - "AT", - "AZ", - "BS", - "BH", - "BD", - "BB", - "BY", - "BE", - "BZ", - "BJ", - "BM", - "BT", - "BO", - "BQ", - "BA", - "BW", - "BV", - "BR", - "IO", - "BN", - "BG", - "BF", - "BI", - "CV", - "KH", - "CM", - "CA", - "KY", - "CF", - "TD", - "CL", - "CN", - "CX", - "CC", - "CO", - "KM", - "CD", - "CG", - "CK", - "CR", - "HR", - "CU", - "CW", - "CY", - "CZ", - "CI", - "DK", - "DJ", - "DM", - "DO", - "EC", - "EG", - "SV", - "GQ", - "ER", - "EE", - "SZ", - "ET", - "FK", - "FO", - "FJ", - "FI", - "FR", - "GF", - "PF", - "TF", - "GA", - "GM", - "GE", - "DE", - "GH", - "GI", - "GR", - "GL", - "GD", - "GP", - "GU", - "GT", - "GG", - "GN", - "GW", - "GY", - "HT", - "HM", - "VA", - "HN", - "HK", - "HU", - "IS", - "IN", - "ID", - "IR", - "IQ", - "IE", - "IM", - "IL", - "IT", - "JM", - "JP", - "JE", - "JO", - "KZ", - "KE", - "KI", - "KP", - "KR", - "KW", - "KG", - "LA", - "LV", - "LB", - "LS", - "LR", - "LY", - "LI", - "LT", - "LU", - "MO", - "MG", - "MW", - "MY", - "MV", - "ML", - "MT", - "MH", - "MQ", - "MR", - "MU", - "YT", - "MX", - "FM", - "MD", - "MC", - "MN", - "ME", - "MS", - "MA", - "MZ", - "MM", - "NA", - "NR", - "NP", - "NL", - "NC", - "NZ", - "NI", - "NE", - "NG", - "NU", - "NF", - "MP", - "NO", - "OM", - "PK", - "PW", - "PS", - "PA", - "PG", - "PY", - "PE", - "PH", - "PN", - "PL", - "PT", - "PR", - "QA", - "MK", - "RO", - "RU", - "RW", - "RE", - "BL", - "SH", - "KN", - "LC", - "MF", - "PM", - "VC", - "WS", - "SM", - "ST", - "SA", - "SN", - "RS", - "SC", - "SL", - "SG", - "SX", - "SK", - "SI", - "SB", - "SO", - "ZA", - "GS", - "SS", - "ES", - "LK", - "SD", - "SR", - "SJ", - "SE", - "CH", - "SY", - "TW", - "TJ", - "TZ", - "TH", - "TL", - "TG", - "TK", - "TO", - "TT", - "TN", - "TR", - "TM", - "TC", - "TV", - "UG", - "UA", - "AE", - "GB", - "UM", - "US", - "UY", - "UZ", - "VU", - "VE", - "VN", - "VG", - "VI", - "WF", - "EH", - "YE", - "ZM", - "ZW", - "AX" - ], - "example": "US", - "type": "string" - }, - "customer_id": { - "example": "re_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - }, - "date_of_birth": { - "anyOf": [ - { - "format": "date-time", - "type": "string" - }, - { - "type": "string" - } - ], - "example": "1998-01-01T00:00:00Z" - }, - "first_name": { - "example": "John", - "minLength": 1, - "type": "string" - }, - "id": { - "example": "ub_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - }, - "id_doc_back_file": { - "description": "Only image files are accepted (.jpg, .jpeg, .png)", - "type": [ - "string", - "null" - ] - }, - "id_doc_country": { - "enum": [ - "AF", - "AL", - "DZ", - "AS", - "AD", - "AO", - "AI", - "AQ", - "AG", - "AR", - "AM", - "AW", - "AU", - "AT", - "AZ", - "BS", - "BH", - "BD", - "BB", - "BY", - "BE", - "BZ", - "BJ", - "BM", - "BT", - "BO", - "BQ", - "BA", - "BW", - "BV", - "BR", - "IO", - "BN", - "BG", - "BF", - "BI", - "CV", - "KH", - "CM", - "CA", - "KY", - "CF", - "TD", - "CL", - "CN", - "CX", - "CC", - "CO", - "KM", - "CD", - "CG", - "CK", - "CR", - "HR", - "CU", - "CW", - "CY", - "CZ", - "CI", - "DK", - "DJ", - "DM", - "DO", - "EC", - "EG", - "SV", - "GQ", - "ER", - "EE", - "SZ", - "ET", - "FK", - "FO", - "FJ", - "FI", - "FR", - "GF", - "PF", - "TF", - "GA", - "GM", - "GE", - "DE", - "GH", - "GI", - "GR", - "GL", - "GD", - "GP", - "GU", - "GT", - "GG", - "GN", - "GW", - "GY", - "HT", - "HM", - "VA", - "HN", - "HK", - "HU", - "IS", - "IN", - "ID", - "IR", - "IQ", - "IE", - "IM", - "IL", - "IT", - "JM", - "JP", - "JE", - "JO", - "KZ", - "KE", - "KI", - "KP", - "KR", - "KW", - "KG", - "LA", - "LV", - "LB", - "LS", - "LR", - "LY", - "LI", - "LT", - "LU", - "MO", - "MG", - "MW", - "MY", - "MV", - "ML", - "MT", - "MH", - "MQ", - "MR", - "MU", - "YT", - "MX", - "FM", - "MD", - "MC", - "MN", - "ME", - "MS", - "MA", - "MZ", - "MM", - "NA", - "NR", - "NP", - "NL", - "NC", - "NZ", - "NI", - "NE", - "NG", - "NU", - "NF", - "MP", - "NO", - "OM", - "PK", - "PW", - "PS", - "PA", - "PG", - "PY", - "PE", - "PH", - "PN", - "PL", - "PT", - "PR", - "QA", - "MK", - "RO", - "RU", - "RW", - "RE", - "BL", - "SH", - "KN", - "LC", - "MF", - "PM", - "VC", - "WS", - "SM", - "ST", - "SA", - "SN", - "RS", - "SC", - "SL", - "SG", - "SX", - "SK", - "SI", - "SB", - "SO", - "ZA", - "GS", - "SS", - "ES", - "LK", - "SD", - "SR", - "SJ", - "SE", - "CH", - "SY", - "TW", - "TJ", - "TZ", - "TH", - "TL", - "TG", - "TK", - "TO", - "TT", - "TN", - "TR", - "TM", - "TC", - "TV", - "UG", - "UA", - "AE", - "GB", - "UM", - "US", - "UY", - "UZ", - "VU", - "VE", - "VN", - "VG", - "VI", - "WF", - "EH", - "YE", - "ZM", - "ZW", - "AX" - ], - "example": "BR", - "type": "string" - }, - "id_doc_front_file": { - "description": "Only image files are accepted (.jpg, .jpeg, .png)", - "type": [ - "string", - "null" - ] - }, - "id_doc_type": { - "enum": [ - "PASSPORT", - "ID_CARD", - "DRIVERS" - ], - "example": "PASSPORT", - "type": "string" - }, - "instance_id": { - "example": "in_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" + "transaction_fee_amount": { + "type": [ + "number", + "null" + ], + "description": "Transaction fee in cents (percentage-based fee)", + "example": 100 + }, + "blindpay_bank_details": { + "type": "object", + "properties": { + "routing_number": { + "type": "string", + "default": "121145349", + "example": "121145349" + }, + "account_number": { + "type": "string", + "default": "621327727210181", + "example": "621327727210181" + }, + "account_type": { + "type": "string", + "default": "Business checking", + "example": "Business checking" + }, + "swift_bic_code": { + "type": [ + "string", + "null" + ], + "default": "CHASUS33", + "example": "CHASUS33" + }, + "ach": { + "type": [ + "object", + "null" + ], + "properties": { + "routing_number": { + "type": "string", + "example": "123456789" + }, + "account_number": { + "type": "string", + "example": "123456789" + } }, - "last_name": { - "example": "Doe", - "minLength": 1, - "type": "string" + "required": [ + "routing_number", + "account_number" + ] + }, + "wire": { + "type": [ + "object", + "null" + ], + "properties": { + "routing_number": { + "type": "string", + "example": "123456789" + }, + "account_number": { + "type": "string", + "example": "123456789" + } }, - "ownership_percentage": { - "description": "Ownership percentage of the beneficial owner (0-100)", - "example": 25, - "maximum": 100, - "minimum": 0, - "type": [ - "integer", - "null" - ] + "required": [ + "routing_number", + "account_number" + ] + }, + "rtp": { + "type": [ + "object", + "null" + ], + "properties": { + "routing_number": { + "type": "string", + "example": "123456789" + }, + "account_number": { + "type": "string", + "example": "123456789" + } }, - "postal_code": { - "example": "02050", + "required": [ + "routing_number", + "account_number" + ] + }, + "beneficiary": { + "type": "object", + "properties": { + "name": { + "type": "string", + "default": "BlindPay, Inc.", + "example": "BlindPay, Inc." + }, + "address_line_1": { + "type": "string", + "default": "8 The Green, #19364", + "example": "8 The Green, #19364" + }, + "address_line_2": { + "type": "string", + "default": "Dover, DE 19901", + "example": "Dover, DE 19901" + } + } + }, + "receiving_bank": { + "type": "object", + "properties": { + "name": { + "type": "string", + "default": "CFSB", + "example": "CFSB" + }, + "address_line_1": { + "type": "string", + "default": "1 Letterman Drive, Building A, Suite A4-700", + "example": "1 Letterman Drive, Building A, Suite A4-700" + }, + "address_line_2": { + "type": "string", + "default": "San Francisco, CA 94129", + "example": "San Francisco, CA 94129" + } + } + }, + "swift_account_number": { + "type": [ + "string", + "null" + ], + "example": "GB50TCCL04140449730892" + }, + "swift_receiving_bank": { + "type": [ + "object", + "null" + ], + "properties": { + "name": { + "type": [ + "string", + "null" + ], + "example": "JPMorgan Chase" + }, + "address_line_1": { + "type": [ + "string", + "null" + ], + "example": "270 Park Ave" + }, + "address_line_2": { + "type": [ + "string", + "null" + ], + "example": "New York, NY, 10017-2070" + } + } + } + }, + "required": [ + "beneficiary", + "receiving_bank" + ] + }, + "customer_id": { + "type": [ + "string", + "null" + ], + "minLength": 15, + "maxLength": 15, + "example": "re_000000000000" + }, + "receiver_amount": { + "type": [ + "number", + "null" + ], + "description": "10.10 USDC", + "example": 1010 + }, + "payment_method": { + "type": [ + "string", + "null" + ], + "enum": [ + "ach", + "wire", + "pix", + "ted", + "spei", + "transfers", + "pse", + "international_swift", + "rtp" + ], + "example": "pix" + }, + "sender_amount": { + "type": [ + "number", + "null" + ], + "description": "52.40 BRL needs to be sent in a pix transfer", + "example": 5240 + } + }, + "required": [ + "webhook_event", + "id", + "status", + "tracking_complete", + "tracking_payment", + "tracking_transaction", + "blindpay_bank_details" + ] + }, + "PayinPartnerFeeWebhookOut": { + "type": "object", + "properties": { + "webhook_event": { + "type": "string", + "enum": [ + "payin.partnerFee" + ] + }, + "id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "pi_000000000000" + }, + "status": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "failed", + "refunded", + "completed" + ], + "description": "Payin general status", + "example": "processing" + }, + "pix_code": { + "type": [ + "string", + "null" + ], + "description": "PIX code", + "example": "00020101021226790014br.gov.bcb.pix2557brcode.starkinfra.com/v2/bcf07f6c4110454e9fd6f120bab13e835204000053039865802BR5915Blind Pay, Inc.6010Vila Velha62070503***6304BCAB" + }, + "memo_code": { + "type": [ + "string", + "null" + ], + "description": "Memo code", + "example": "8K45GHBNT6BQ6462" + }, + "clabe": { + "type": [ + "string", + "null" + ], + "description": "CLABE code", + "example": "014027000000000008" + }, + "partner_fee": { + "type": "integer", + "minimum": 0, + "default": 0, + "description": "Payin partner fee amount in cents", + "example": 25000 + }, + "tracking_complete": { + "type": "object", + "properties": { + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Complete step", + "example": "on_hold" + }, + "transaction_hash": { + "type": [ + "string", + "null" + ], + "description": "Complete transaction hash", + "example": "0x123...890" + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "description": "Complete completed date", + "example": "2011-10-05T14:48:00.000Z" + } + }, + "required": [ + "step" + ] + }, + "tracking_payment": { + "type": "object", + "properties": { + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Payment step", + "example": "on_hold" + }, + "provider_name": { + "type": [ + "string", + "null" + ], + "description": "Payment provider name", + "example": "blockchain" + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "description": "Payment completed date", + "example": "2011-10-05T14:48:00.000Z" + }, + "review_source": { + "type": [ + "string", + "null" + ], + "description": "Risk source that sent this payin to manual review", + "example": "seon_review" + }, + "review_context": { + "type": [ + "object", + "null" + ], + "additionalProperties": {}, + "description": "Structured risk context for manual review" + }, + "approved_risk_sources": { + "type": [ + "array", + "null" + ], + "items": { "type": "string" }, - "proof_of_address_doc_file": { - "description": "Please upload one document that serve as proof of address, this needs to be the same address as the one provided above. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", - "type": [ - "string", - "null" - ] + "description": "Risk sources already approved by an analyst", + "example": [ + "seon_review" + ] + } + }, + "required": [ + "step" + ] + }, + "tracking_transaction": { + "type": "object", + "properties": { + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Payin transaction step", + "example": "processing" + }, + "status": { + "type": [ + "string", + "null" + ], + "enum": [ + "failed", + "completed" + ], + "description": "Payin transaction status", + "example": "failed" + }, + "external_id": { + "type": [ + "string", + "null" + ], + "description": "Payin transaction external id", + "example": "12345678" + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "description": "Payin transaction completed date", + "example": "2011-10-05T14:48:00.000Z" + }, + "transaction_hash": { + "type": [ + "string", + "null" + ], + "description": "Blockchain transaction hash", + "example": "0x123...890" + }, + "provider_name": { + "type": [ + "string", + "null" + ], + "enum": [ + "Nvio Pagos", + "Brex", + "Stark Bank", + "JPMorgan Chase", + "HSBC", + "Inter", + "JP Morgan Chase", + "Bitso", + "Citi", + "CFSB", + "Triple A Technologies", + "Portage Bank" + ], + "description": "Payment provider name", + "example": "HSBC" + }, + "provider_transaction_id": { + "type": [ + "string", + "null" + ], + "description": "Payment provider transaction id", + "example": "" + }, + "sender_name": { + "type": [ + "string", + "null" + ], + "example": "John Doe Smith" + }, + "sender_bank_name": { + "type": [ + "string", + "null" + ], + "example": "Bank of America" + }, + "sender_tax_id": { + "type": [ + "string", + "null" + ], + "example": "123.456.789-10" + }, + "sender_bank_code": { + "type": [ + "string", + "null" + ], + "example": "00416968" + }, + "sender_account_number": { + "type": [ + "string", + "null" + ], + "example": "1234567890" + }, + "end_to_end_id": { + "type": [ + "string", + "null" + ], + "description": "BACEN Pix end-to-end transaction ID (govt Pix ID)", + "example": "E20018183202603311320vm6ALFpJpsS" + }, + "trace_number": { + "type": [ + "string", + "null" + ], + "example": "1234567890" + }, + "transaction_reference": { + "type": [ + "string", + "null" + ], + "example": "1234567890" + }, + "description": { + "type": [ + "string", + "null" + ], + "example": "Payment from John Doe Smith" + }, + "pse_instruction": { + "type": [ + "object", + "null" + ], + "properties": { + "payment_link": { + "type": "string", + "description": "PSE payment link URL", + "example": "https://pse.example.com/payment/abc123" + }, + "fid": { + "type": "string", + "description": "PSE funding identifier for webhook matching", + "example": "fid_abc123" + }, + "full_name": { + "type": "string", + "description": "PSE payer full name", + "example": "Juan Pérez García" + }, + "tax_id": { + "type": "string", + "description": "PSE payer document number", + "example": "1234567890" + }, + "document_type": { + "type": "string", + "enum": [ + "CC", + "NIT" + ], + "description": "PSE payer document type", + "example": "CC" + }, + "phone": { + "type": "string", + "description": "PSE payer phone number", + "example": "+573001234567" + }, + "email": { + "type": "string", + "description": "PSE payer email", + "example": "juan@example.com" + }, + "bank_code": { + "type": [ + "string", + "null" + ], + "description": "PSE payer bank code", + "example": "1007" + } }, - "proof_of_address_doc_type": { - "enum": [ - "UTILITY_BILL", - "BANK_STATEMENT", - "RENTAL_AGREEMENT", - "TAX_DOCUMENT", - "GOVERNMENT_CORRESPONDENCE" - ], - "example": "UTILITY_BILL", - "type": [ - "string", - "null" - ] + "required": [ + "payment_link", + "fid", + "full_name", + "tax_id", + "document_type", + "phone", + "email" + ] + }, + "transfers_instruction": { + "type": [ + "object", + "null" + ], + "properties": { + "account": { + "type": "string", + "description": "CVU/CBU/Alias account number", + "example": "0000003100012389237485" + }, + "type": { + "type": "string", + "enum": [ + "CVU", + "CBU", + "ALIAS" + ], + "description": "Account type (CVU, CBU, or ALIAS)", + "example": "CVU" + }, + "tax_id": { + "type": [ + "string", + "null" + ], + "description": "CUIT/CUIL (normalized, digits only)", + "example": "20123456783" + } }, - "role": { - "description": "A beneficial owner is someone who directly or indirectly owns 25% or more of your business. A controlling person is someone with significant responsibility to control, manage or direct your business (typically a CEO, senior executive officer or equivalent).", - "enum": [ - "beneficial_controlling", - "beneficial_owner", - "controlling_person" - ], - "example": "beneficial_owner", - "type": "string" + "required": [ + "account", + "type" + ] + }, + "ted_instruction": { + "type": [ + "object", + "null" + ], + "properties": { + "beneficiary_name": { + "type": "string", + "example": "Blind Pay, Inc." + }, + "tax_id": { + "type": "string", + "example": "57.599.376/0001-81" + }, + "bank_code": { + "type": "string", + "example": "665" + }, + "bank_name": { + "type": "string", + "example": "STARK BANK S.A." + }, + "branch_code": { + "type": "string", + "example": "5340" + }, + "account_number": { + "type": "string", + "example": "01011707084-8" + }, + "account_type": { + "type": "string", + "example": "checking" + } }, - "state_province_region": { - "example": "MA", - "type": "string" + "required": [ + "beneficiary_name", + "tax_id", + "bank_code", + "bank_name", + "branch_code", + "account_number", + "account_type" + ] + } + }, + "required": [ + "step" + ] + }, + "billing_fee_amount": { + "type": [ + "number", + "null" + ], + "description": "Billing fee in cents (charged at the end of the month)", + "example": 50 + }, + "transaction_fee_amount": { + "type": [ + "number", + "null" + ], + "description": "Transaction fee in cents (percentage-based fee)", + "example": 100 + }, + "blindpay_bank_details": { + "type": "object", + "properties": { + "routing_number": { + "type": "string", + "default": "121145349", + "example": "121145349" + }, + "account_number": { + "type": "string", + "default": "621327727210181", + "example": "621327727210181" + }, + "account_type": { + "type": "string", + "default": "Business checking", + "example": "Business checking" + }, + "swift_bic_code": { + "type": [ + "string", + "null" + ], + "default": "CHASUS33", + "example": "CHASUS33" + }, + "ach": { + "type": [ + "object", + "null" + ], + "properties": { + "routing_number": { + "type": "string", + "example": "123456789" + }, + "account_number": { + "type": "string", + "example": "123456789" + } }, - "tax_id": { - "example": "536804398", - "type": [ - "string", - "null" - ] + "required": [ + "routing_number", + "account_number" + ] + }, + "wire": { + "type": [ + "object", + "null" + ], + "properties": { + "routing_number": { + "type": "string", + "example": "123456789" + }, + "account_number": { + "type": "string", + "example": "123456789" + } }, - "tax_type": { - "description": "Tax identifier type. Mandatory when country is US; must be SSN or ITIN.", - "enum": [ - "SSN", - "ITIN" - ], - "example": "SSN", - "type": [ - "string", - "null" - ] + "required": [ + "routing_number", + "account_number" + ] + }, + "rtp": { + "type": [ + "object", + "null" + ], + "properties": { + "routing_number": { + "type": "string", + "example": "123456789" + }, + "account_number": { + "type": "string", + "example": "123456789" + } }, - "title": { - "description": "Job title of the owner", - "example": "CEO", - "maxLength": 128, - "type": [ - "string", - "null" - ] + "required": [ + "routing_number", + "account_number" + ] + }, + "beneficiary": { + "type": "object", + "properties": { + "name": { + "type": "string", + "default": "BlindPay, Inc.", + "example": "BlindPay, Inc." + }, + "address_line_1": { + "type": "string", + "default": "8 The Green, #19364", + "example": "8 The Green, #19364" + }, + "address_line_2": { + "type": "string", + "default": "Dover, DE 19901", + "example": "Dover, DE 19901" + } + } + }, + "receiving_bank": { + "type": "object", + "properties": { + "name": { + "type": "string", + "default": "CFSB", + "example": "CFSB" + }, + "address_line_1": { + "type": "string", + "default": "1 Letterman Drive, Building A, Suite A4-700", + "example": "1 Letterman Drive, Building A, Suite A4-700" + }, + "address_line_2": { + "type": "string", + "default": "San Francisco, CA 94129", + "example": "San Francisco, CA 94129" + } + } + }, + "swift_account_number": { + "type": [ + "string", + "null" + ], + "example": "GB50TCCL04140449730892" + }, + "swift_receiving_bank": { + "type": [ + "object", + "null" + ], + "properties": { + "name": { + "type": [ + "string", + "null" + ], + "example": "JPMorgan Chase" + }, + "address_line_1": { + "type": [ + "string", + "null" + ], + "example": "270 Park Ave" + }, + "address_line_2": { + "type": [ + "string", + "null" + ], + "example": "New York, NY, 10017-2070" + } } + } + }, + "required": [ + "beneficiary", + "receiving_bank" + ] + }, + "customer_id": { + "type": [ + "string", + "null" + ], + "minLength": 15, + "maxLength": 15, + "example": "re_000000000000" + }, + "receiver_amount": { + "type": [ + "number", + "null" + ], + "description": "10.10 USDC", + "example": 1010 + }, + "payment_method": { + "type": [ + "string", + "null" + ], + "enum": [ + "ach", + "wire", + "pix", + "ted", + "spei", + "transfers", + "pse", + "international_swift", + "rtp" + ], + "example": "pix" + }, + "sender_amount": { + "type": [ + "number", + "null" + ], + "description": "52.40 BRL needs to be sent in a pix transfer", + "example": 5240 + } + }, + "required": [ + "webhook_event", + "id", + "status", + "tracking_complete", + "tracking_payment", + "tracking_transaction", + "blindpay_bank_details" + ] + }, + "PayoutNewWebhookOut": { + "type": "object", + "properties": { + "webhook_event": { + "type": "string", + "enum": [ + "payout.new" + ] + }, + "id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "pa_000000000000" + }, + "status": { + "type": "string", + "enum": [ + "processing", + "failed", + "refunded", + "completed", + "on_hold" + ], + "description": "Payout general status", + "example": "processing" + }, + "sender_wallet_address": { + "type": "string", + "description": "Payout wallet address", + "example": "0x123...890" + }, + "billing_fee_amount": { + "type": [ + "number", + "null" + ], + "description": "Billing fee in cents (charged via invoice at the end of the month)", + "example": 50 + }, + "transaction_fee_amount": { + "type": [ + "number", + "null" + ], + "description": "Transaction fee in cents (percentage-based fee)", + "example": 100 + }, + "partner_fee": { + "type": "integer", + "minimum": 0, + "default": 0, + "description": "Payout partner fee amount in cents (can be negative for rebates)", + "example": -25000 + }, + "tracking_complete": { + "type": "object", + "properties": { + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Complete step", + "example": "on_hold" + }, + "status": { + "type": [ + "string", + "null" + ], + "enum": [ + "tokens_refunded", + "paid" + ], + "description": "Complete status", + "example": "tokens_refunded" + }, + "refund_reason": { + "type": [ + "string", + "null" + ], + "description": "Reason for refund when tokens are returned to sender", + "example": "fiat_payment_failed" + }, + "transaction_hash": { + "type": [ + "string", + "null" + ], + "description": "Complete transaction hash", + "example": "0x123...890" + }, + "provider_transaction_id": { + "type": [ + "string", + "null" + ], + "description": "Provider-side handle for the refund transaction (e.g. Circle transaction id)", + "example": "67c12eae-b7bc-31cc-a5ef-623dcea82346" + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "description": "Complete completed date", + "example": "2011-10-05T14:48:00.000Z" + } + }, + "required": [ + "step" + ] + }, + "tracking_payment": { + "type": "object", + "properties": { + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Payment step", + "example": "on_hold" + }, + "provider_name": { + "type": [ + "string", + "null" + ], + "enum": [ + "Nvio Pagos", + "Brex", + "Stark Bank", + "JPMorgan Chase", + "HSBC", + "Inter", + "JP Morgan Chase", + "Bitso", + "Citi", + "CFSB", + "Triple A Technologies", + "Portage Bank" + ], + "description": "Payment provider name", + "example": "HSBC" + }, + "provider_integration": { + "type": [ + "string", + "null" + ], + "enum": [ + "veem", + "zenus", + "checkbook", + "onemoney", + "bitso", + "starkbank", + "triplea", + "infinitus" + ], + "description": "Machine-readable integration that executed the fiat leg. Unlike provider_name (a client-facing bank label), this uniquely identifies the integration — e.g. zenus vs checkbook, which share the \"JPMorgan Chase\" label.", + "example": "zenus" + }, + "provider_transaction_id": { + "type": [ + "string", + "null" + ], + "description": "Payment provider transaction id", + "example": "0x123...890" + }, + "provider_status": { + "type": [ + "string", + "null" + ], + "enum": [ + "canceled", + "failed", + "returned", + "sent" + ], + "description": "Payment provider status", + "example": "canceled" + }, + "provider_error_reason": { + "type": [ + "string", + "null" + ], + "description": "Provider error reason when payment fails (e.g. invalid_key, wrong_parameters)", + "example": "invalid_key" + }, + "provider_uetr": { + "type": [ + "string", + "null" + ], + "maxLength": 120, + "description": "Unique end-to-end transaction reference (UETR). Populated once the wire is confirmed by the network; null while the payment is in flight or when the rail does not expose it (e.g. ACH).", + "example": "37d10eff-d450-4aba-a5d4-e3978f5a3343" + }, + "provider_imad": { + "type": [ + "string", + "null" + ], + "maxLength": 120, + "description": "Fed Input Message Accountability Data (IMAD). Domestic Fedwire payments only; null on ACH and SWIFT.", + "example": "20260526MMQFMP2M008120" + }, + "provider_reference": { + "type": [ + "string", + "null" + ], + "maxLength": 120, + "description": "Provider (JPMorgan/Zenus) payment reference captured from the ACCOUNT.ACCOUNT booking webhook (Zenus contractSource.sourceRef). Present for some ACH/wire payouts; a bank-side reference, not the formal ACH network trace number.", + "example": "2084734238TC" + }, + "provider_clearing_system": { + "type": [ + "string", + "null" + ], + "maxLength": 40, + "description": "Clearing system that processed the payment (e.g. FED, CHIPS, ACH, SWIFT).", + "example": "FED" + }, + "recipient_name": { + "type": [ + "string", + "null" + ], + "description": "Recipient name", + "example": "John Doe" + }, + "recipient_tax_id": { + "type": [ + "string", + "null" + ], + "description": "Recipient tax id", + "example": "123.456.789-10" + }, + "recipient_bank_code": { + "type": [ + "string", + "null" + ], + "description": "Recipient bank code", + "example": "00416968" + }, + "recipient_branch_code": { + "type": [ + "string", + "null" + ], + "description": "Recipient branch code", + "example": "0001" + }, + "recipient_account_number": { + "type": [ + "string", + "null" + ], + "description": "Recipient account number", + "example": "1234567890" + }, + "recipient_account_type": { + "type": [ + "string", + "null" + ], + "description": "Recipient account type", + "example": "checking" + }, + "coelsa_id": { + "type": [ + "string", + "null" + ], + "description": "COELSA transaction reference ID for ARS transfers (Argentine national banking system)", + "example": "1LMP68NKV46DRDYK2R7OEV" + }, + "end_to_end_id": { + "type": [ + "string", + "null" + ], + "description": "BACEN Pix end-to-end transaction ID (govt Pix ID)", + "example": "E20018183202603311320vm6ALFpJpsS" + }, + "estimated_time_of_arrival": { + "type": [ + "string", + "null" + ], + "enum": [ + "5_min", + "5_30_min", + "30_min", + "2_hours", + "1_business_day", + "2_business_days", + "5_business_days" + ], + "description": "Estimated time of arrival", + "example": "5_min" + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "description": "Payment completed date", + "example": "2011-10-05T14:48:00.000Z" + } + }, + "required": [ + "step" + ] + }, + "tracking_transaction": { + "type": "object", + "properties": { + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Payout transaction step", + "example": "processing" + }, + "status": { + "type": [ + "string", + "null" + ], + "enum": [ + "failed", + "found" + ], + "description": "Payout transaction status", + "example": "failed" + }, + "transaction_hash": { + "type": [ + "string", + "null" + ], + "description": "Blockchain transaction hash", + "example": "0x123...890" + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "description": "Payout transaction completed date", + "example": "2011-10-05T14:48:00.000Z" + }, + "provider_transaction_id": { + "type": [ + "string", + "null" + ], + "description": "Provider-side handle for the on-chain leg (e.g. Circle CPN payment id).", + "example": "67c12eae-b7bc-31cc-a5ef-623dcea82346" + }, + "provider_error_reason": { + "type": [ + "string", + "null" + ], + "description": "Provider error reason when the crypto collection fails (e.g. erc20_allowance_insufficient, ESTIMATION_ERROR: execution reverted)", + "example": "erc20_allowance_insufficient" + }, + "ledger_in_transaction_id": { + "type": [ + "string", + "null" + ], + "description": "Ledger transaction ID for the IN (crypto deposit) transaction" + }, + "ledger_out_transaction_id": { + "type": [ + "string", + "null" + ], + "description": "Ledger transaction ID for the OUT (fiat withdrawal) transaction" + } + }, + "required": [ + "step" + ] + }, + "tracking_liquidity": { + "type": [ + "object", + "null" + ], + "properties": { + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Payout liquidity step", + "example": "processing" + }, + "provider_transaction_id": { + "type": [ + "string", + "null" + ], + "description": "Payment provider transaction id", + "example": "0x123...890" + }, + "provider_status": { + "type": [ + "string", + "null" + ], + "enum": [ + "deposited", + "converted", + "withdrawn" + ], + "description": "Payment provider status", + "example": "deposited" + }, + "estimated_time_of_arrival": { + "type": [ + "string", + "null" + ], + "enum": [ + "5_min", + "5_30_min", + "30_min", + "2_hours", + "1_business_day", + "2_business_days", + "5_business_days" + ], + "description": "Estimated time of arrival", + "example": "1_business_day" + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "description": "Payout transaction completed date", + "example": "2011-10-05T14:48:00.000Z" + } + }, + "required": [ + "step" + ] + }, + "tracking_documents": { + "type": [ + "object", + "null" + ], + "properties": { + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Documents step", + "example": "processing" + }, + "status": { + "type": [ + "string", + "null" + ], + "enum": [ + "waiting_documents", + "compliance_reviewing" + ], + "description": "Documents status", + "example": "waiting_documents" + }, + "reviewed_by": { + "type": [ + "string", + "null" + ], + "description": "Reviewer email/name", + "example": "compliance@example.com" + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "description": "Documents completed date", + "example": "2011-10-05T14:48:00.000Z" + } + }, + "required": [ + "step" + ] + }, + "customer_id": { + "type": [ + "string", + "null" + ], + "minLength": 15, + "maxLength": 15, + "example": "re_000000000000" + }, + "bank_account_id": { + "type": [ + "string", + "null" + ], + "minLength": 15, + "maxLength": 15, + "example": "ba_000000000000" + }, + "offramp_wallet_id": { + "type": [ + "string", + "null" + ], + "minLength": 15, + "maxLength": 15, + "example": "ow_000000000000" + } + }, + "required": [ + "webhook_event", + "id", + "status", + "sender_wallet_address", + "tracking_complete", + "tracking_payment", + "tracking_transaction" + ] + }, + "PayoutCompleteWebhookOut": { + "type": "object", + "properties": { + "webhook_event": { + "type": "string", + "enum": [ + "payout.complete" + ] + }, + "id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "pa_000000000000" + }, + "status": { + "type": "string", + "enum": [ + "processing", + "failed", + "refunded", + "completed", + "on_hold" + ], + "description": "Payout general status", + "example": "processing" + }, + "sender_wallet_address": { + "type": "string", + "description": "Payout wallet address", + "example": "0x123...890" + }, + "billing_fee_amount": { + "type": [ + "number", + "null" + ], + "description": "Billing fee in cents (charged via invoice at the end of the month)", + "example": 50 + }, + "transaction_fee_amount": { + "type": [ + "number", + "null" + ], + "description": "Transaction fee in cents (percentage-based fee)", + "example": 100 + }, + "partner_fee": { + "type": "integer", + "minimum": 0, + "default": 0, + "description": "Payout partner fee amount in cents (can be negative for rebates)", + "example": -25000 + }, + "tracking_complete": { + "type": "object", + "properties": { + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Complete step", + "example": "on_hold" + }, + "status": { + "type": [ + "string", + "null" + ], + "enum": [ + "tokens_refunded", + "paid" + ], + "description": "Complete status", + "example": "tokens_refunded" + }, + "refund_reason": { + "type": [ + "string", + "null" + ], + "description": "Reason for refund when tokens are returned to sender", + "example": "fiat_payment_failed" + }, + "transaction_hash": { + "type": [ + "string", + "null" + ], + "description": "Complete transaction hash", + "example": "0x123...890" + }, + "provider_transaction_id": { + "type": [ + "string", + "null" + ], + "description": "Provider-side handle for the refund transaction (e.g. Circle transaction id)", + "example": "67c12eae-b7bc-31cc-a5ef-623dcea82346" + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "description": "Complete completed date", + "example": "2011-10-05T14:48:00.000Z" + } + }, + "required": [ + "step" + ] + }, + "tracking_payment": { + "type": "object", + "properties": { + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Payment step", + "example": "on_hold" + }, + "provider_name": { + "type": [ + "string", + "null" + ], + "enum": [ + "Nvio Pagos", + "Brex", + "Stark Bank", + "JPMorgan Chase", + "HSBC", + "Inter", + "JP Morgan Chase", + "Bitso", + "Citi", + "CFSB", + "Triple A Technologies", + "Portage Bank" + ], + "description": "Payment provider name", + "example": "HSBC" + }, + "provider_integration": { + "type": [ + "string", + "null" + ], + "enum": [ + "veem", + "zenus", + "checkbook", + "onemoney", + "bitso", + "starkbank", + "triplea", + "infinitus" + ], + "description": "Machine-readable integration that executed the fiat leg. Unlike provider_name (a client-facing bank label), this uniquely identifies the integration — e.g. zenus vs checkbook, which share the \"JPMorgan Chase\" label.", + "example": "zenus" + }, + "provider_transaction_id": { + "type": [ + "string", + "null" + ], + "description": "Payment provider transaction id", + "example": "0x123...890" + }, + "provider_status": { + "type": [ + "string", + "null" + ], + "enum": [ + "canceled", + "failed", + "returned", + "sent" + ], + "description": "Payment provider status", + "example": "canceled" + }, + "provider_error_reason": { + "type": [ + "string", + "null" + ], + "description": "Provider error reason when payment fails (e.g. invalid_key, wrong_parameters)", + "example": "invalid_key" + }, + "provider_uetr": { + "type": [ + "string", + "null" + ], + "maxLength": 120, + "description": "Unique end-to-end transaction reference (UETR). Populated once the wire is confirmed by the network; null while the payment is in flight or when the rail does not expose it (e.g. ACH).", + "example": "37d10eff-d450-4aba-a5d4-e3978f5a3343" + }, + "provider_imad": { + "type": [ + "string", + "null" + ], + "maxLength": 120, + "description": "Fed Input Message Accountability Data (IMAD). Domestic Fedwire payments only; null on ACH and SWIFT.", + "example": "20260526MMQFMP2M008120" + }, + "provider_reference": { + "type": [ + "string", + "null" + ], + "maxLength": 120, + "description": "Provider (JPMorgan/Zenus) payment reference captured from the ACCOUNT.ACCOUNT booking webhook (Zenus contractSource.sourceRef). Present for some ACH/wire payouts; a bank-side reference, not the formal ACH network trace number.", + "example": "2084734238TC" + }, + "provider_clearing_system": { + "type": [ + "string", + "null" + ], + "maxLength": 40, + "description": "Clearing system that processed the payment (e.g. FED, CHIPS, ACH, SWIFT).", + "example": "FED" + }, + "recipient_name": { + "type": [ + "string", + "null" + ], + "description": "Recipient name", + "example": "John Doe" + }, + "recipient_tax_id": { + "type": [ + "string", + "null" + ], + "description": "Recipient tax id", + "example": "123.456.789-10" + }, + "recipient_bank_code": { + "type": [ + "string", + "null" + ], + "description": "Recipient bank code", + "example": "00416968" + }, + "recipient_branch_code": { + "type": [ + "string", + "null" + ], + "description": "Recipient branch code", + "example": "0001" + }, + "recipient_account_number": { + "type": [ + "string", + "null" + ], + "description": "Recipient account number", + "example": "1234567890" + }, + "recipient_account_type": { + "type": [ + "string", + "null" + ], + "description": "Recipient account type", + "example": "checking" + }, + "coelsa_id": { + "type": [ + "string", + "null" + ], + "description": "COELSA transaction reference ID for ARS transfers (Argentine national banking system)", + "example": "1LMP68NKV46DRDYK2R7OEV" + }, + "end_to_end_id": { + "type": [ + "string", + "null" + ], + "description": "BACEN Pix end-to-end transaction ID (govt Pix ID)", + "example": "E20018183202603311320vm6ALFpJpsS" + }, + "estimated_time_of_arrival": { + "type": [ + "string", + "null" + ], + "enum": [ + "5_min", + "5_30_min", + "30_min", + "2_hours", + "1_business_day", + "2_business_days", + "5_business_days" + ], + "description": "Estimated time of arrival", + "example": "5_min" + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "description": "Payment completed date", + "example": "2011-10-05T14:48:00.000Z" + } + }, + "required": [ + "step" + ] + }, + "tracking_transaction": { + "type": "object", + "properties": { + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Payout transaction step", + "example": "processing" + }, + "status": { + "type": [ + "string", + "null" + ], + "enum": [ + "failed", + "found" + ], + "description": "Payout transaction status", + "example": "failed" + }, + "transaction_hash": { + "type": [ + "string", + "null" + ], + "description": "Blockchain transaction hash", + "example": "0x123...890" + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "description": "Payout transaction completed date", + "example": "2011-10-05T14:48:00.000Z" + }, + "provider_transaction_id": { + "type": [ + "string", + "null" + ], + "description": "Provider-side handle for the on-chain leg (e.g. Circle CPN payment id).", + "example": "67c12eae-b7bc-31cc-a5ef-623dcea82346" + }, + "provider_error_reason": { + "type": [ + "string", + "null" + ], + "description": "Provider error reason when the crypto collection fails (e.g. erc20_allowance_insufficient, ESTIMATION_ERROR: execution reverted)", + "example": "erc20_allowance_insufficient" + }, + "ledger_in_transaction_id": { + "type": [ + "string", + "null" + ], + "description": "Ledger transaction ID for the IN (crypto deposit) transaction" + }, + "ledger_out_transaction_id": { + "type": [ + "string", + "null" + ], + "description": "Ledger transaction ID for the OUT (fiat withdrawal) transaction" + } + }, + "required": [ + "step" + ] + }, + "tracking_liquidity": { + "type": [ + "object", + "null" + ], + "properties": { + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Payout liquidity step", + "example": "processing" + }, + "provider_transaction_id": { + "type": [ + "string", + "null" + ], + "description": "Payment provider transaction id", + "example": "0x123...890" + }, + "provider_status": { + "type": [ + "string", + "null" + ], + "enum": [ + "deposited", + "converted", + "withdrawn" + ], + "description": "Payment provider status", + "example": "deposited" + }, + "estimated_time_of_arrival": { + "type": [ + "string", + "null" + ], + "enum": [ + "5_min", + "5_30_min", + "30_min", + "2_hours", + "1_business_day", + "2_business_days", + "5_business_days" + ], + "description": "Estimated time of arrival", + "example": "1_business_day" + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "description": "Payout transaction completed date", + "example": "2011-10-05T14:48:00.000Z" + } + }, + "required": [ + "step" + ] + }, + "tracking_documents": { + "type": [ + "object", + "null" + ], + "properties": { + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Documents step", + "example": "processing" + }, + "status": { + "type": [ + "string", + "null" + ], + "enum": [ + "waiting_documents", + "compliance_reviewing" + ], + "description": "Documents status", + "example": "waiting_documents" + }, + "reviewed_by": { + "type": [ + "string", + "null" + ], + "description": "Reviewer email/name", + "example": "compliance@example.com" + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "description": "Documents completed date", + "example": "2011-10-05T14:48:00.000Z" + } + }, + "required": [ + "step" + ] + }, + "customer_id": { + "type": [ + "string", + "null" + ], + "minLength": 15, + "maxLength": 15, + "example": "re_000000000000" + }, + "bank_account_id": { + "type": [ + "string", + "null" + ], + "minLength": 15, + "maxLength": 15, + "example": "ba_000000000000" + }, + "offramp_wallet_id": { + "type": [ + "string", + "null" + ], + "minLength": 15, + "maxLength": 15, + "example": "ow_000000000000" + } + }, + "required": [ + "webhook_event", + "id", + "status", + "sender_wallet_address", + "tracking_complete", + "tracking_payment", + "tracking_transaction" + ] + }, + "PayoutUpdateWebhookOut": { + "type": "object", + "properties": { + "webhook_event": { + "type": "string", + "enum": [ + "payout.update" + ] + }, + "id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "pa_000000000000" + }, + "status": { + "type": "string", + "enum": [ + "processing", + "failed", + "refunded", + "completed", + "on_hold" + ], + "description": "Payout general status", + "example": "processing" + }, + "sender_wallet_address": { + "type": "string", + "description": "Payout wallet address", + "example": "0x123...890" + }, + "billing_fee_amount": { + "type": [ + "number", + "null" + ], + "description": "Billing fee in cents (charged via invoice at the end of the month)", + "example": 50 + }, + "transaction_fee_amount": { + "type": [ + "number", + "null" + ], + "description": "Transaction fee in cents (percentage-based fee)", + "example": 100 + }, + "partner_fee": { + "type": "integer", + "minimum": 0, + "default": 0, + "description": "Payout partner fee amount in cents (can be negative for rebates)", + "example": -25000 + }, + "tracking_complete": { + "type": "object", + "properties": { + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Complete step", + "example": "on_hold" + }, + "status": { + "type": [ + "string", + "null" + ], + "enum": [ + "tokens_refunded", + "paid" + ], + "description": "Complete status", + "example": "tokens_refunded" + }, + "refund_reason": { + "type": [ + "string", + "null" + ], + "description": "Reason for refund when tokens are returned to sender", + "example": "fiat_payment_failed" + }, + "transaction_hash": { + "type": [ + "string", + "null" + ], + "description": "Complete transaction hash", + "example": "0x123...890" + }, + "provider_transaction_id": { + "type": [ + "string", + "null" + ], + "description": "Provider-side handle for the refund transaction (e.g. Circle transaction id)", + "example": "67c12eae-b7bc-31cc-a5ef-623dcea82346" + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "description": "Complete completed date", + "example": "2011-10-05T14:48:00.000Z" + } + }, + "required": [ + "step" + ] + }, + "tracking_payment": { + "type": "object", + "properties": { + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Payment step", + "example": "on_hold" + }, + "provider_name": { + "type": [ + "string", + "null" + ], + "enum": [ + "Nvio Pagos", + "Brex", + "Stark Bank", + "JPMorgan Chase", + "HSBC", + "Inter", + "JP Morgan Chase", + "Bitso", + "Citi", + "CFSB", + "Triple A Technologies", + "Portage Bank" + ], + "description": "Payment provider name", + "example": "HSBC" + }, + "provider_integration": { + "type": [ + "string", + "null" + ], + "enum": [ + "veem", + "zenus", + "checkbook", + "onemoney", + "bitso", + "starkbank", + "triplea", + "infinitus" + ], + "description": "Machine-readable integration that executed the fiat leg. Unlike provider_name (a client-facing bank label), this uniquely identifies the integration — e.g. zenus vs checkbook, which share the \"JPMorgan Chase\" label.", + "example": "zenus" + }, + "provider_transaction_id": { + "type": [ + "string", + "null" + ], + "description": "Payment provider transaction id", + "example": "0x123...890" + }, + "provider_status": { + "type": [ + "string", + "null" + ], + "enum": [ + "canceled", + "failed", + "returned", + "sent" + ], + "description": "Payment provider status", + "example": "canceled" + }, + "provider_error_reason": { + "type": [ + "string", + "null" + ], + "description": "Provider error reason when payment fails (e.g. invalid_key, wrong_parameters)", + "example": "invalid_key" + }, + "provider_uetr": { + "type": [ + "string", + "null" + ], + "maxLength": 120, + "description": "Unique end-to-end transaction reference (UETR). Populated once the wire is confirmed by the network; null while the payment is in flight or when the rail does not expose it (e.g. ACH).", + "example": "37d10eff-d450-4aba-a5d4-e3978f5a3343" + }, + "provider_imad": { + "type": [ + "string", + "null" + ], + "maxLength": 120, + "description": "Fed Input Message Accountability Data (IMAD). Domestic Fedwire payments only; null on ACH and SWIFT.", + "example": "20260526MMQFMP2M008120" + }, + "provider_reference": { + "type": [ + "string", + "null" + ], + "maxLength": 120, + "description": "Provider (JPMorgan/Zenus) payment reference captured from the ACCOUNT.ACCOUNT booking webhook (Zenus contractSource.sourceRef). Present for some ACH/wire payouts; a bank-side reference, not the formal ACH network trace number.", + "example": "2084734238TC" + }, + "provider_clearing_system": { + "type": [ + "string", + "null" + ], + "maxLength": 40, + "description": "Clearing system that processed the payment (e.g. FED, CHIPS, ACH, SWIFT).", + "example": "FED" + }, + "recipient_name": { + "type": [ + "string", + "null" + ], + "description": "Recipient name", + "example": "John Doe" + }, + "recipient_tax_id": { + "type": [ + "string", + "null" + ], + "description": "Recipient tax id", + "example": "123.456.789-10" + }, + "recipient_bank_code": { + "type": [ + "string", + "null" + ], + "description": "Recipient bank code", + "example": "00416968" + }, + "recipient_branch_code": { + "type": [ + "string", + "null" + ], + "description": "Recipient branch code", + "example": "0001" + }, + "recipient_account_number": { + "type": [ + "string", + "null" + ], + "description": "Recipient account number", + "example": "1234567890" + }, + "recipient_account_type": { + "type": [ + "string", + "null" + ], + "description": "Recipient account type", + "example": "checking" + }, + "coelsa_id": { + "type": [ + "string", + "null" + ], + "description": "COELSA transaction reference ID for ARS transfers (Argentine national banking system)", + "example": "1LMP68NKV46DRDYK2R7OEV" + }, + "end_to_end_id": { + "type": [ + "string", + "null" + ], + "description": "BACEN Pix end-to-end transaction ID (govt Pix ID)", + "example": "E20018183202603311320vm6ALFpJpsS" + }, + "estimated_time_of_arrival": { + "type": [ + "string", + "null" + ], + "enum": [ + "5_min", + "5_30_min", + "30_min", + "2_hours", + "1_business_day", + "2_business_days", + "5_business_days" + ], + "description": "Estimated time of arrival", + "example": "5_min" + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "description": "Payment completed date", + "example": "2011-10-05T14:48:00.000Z" + } + }, + "required": [ + "step" + ] + }, + "tracking_transaction": { + "type": "object", + "properties": { + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Payout transaction step", + "example": "processing" + }, + "status": { + "type": [ + "string", + "null" + ], + "enum": [ + "failed", + "found" + ], + "description": "Payout transaction status", + "example": "failed" + }, + "transaction_hash": { + "type": [ + "string", + "null" + ], + "description": "Blockchain transaction hash", + "example": "0x123...890" + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "description": "Payout transaction completed date", + "example": "2011-10-05T14:48:00.000Z" + }, + "provider_transaction_id": { + "type": [ + "string", + "null" + ], + "description": "Provider-side handle for the on-chain leg (e.g. Circle CPN payment id).", + "example": "67c12eae-b7bc-31cc-a5ef-623dcea82346" + }, + "provider_error_reason": { + "type": [ + "string", + "null" + ], + "description": "Provider error reason when the crypto collection fails (e.g. erc20_allowance_insufficient, ESTIMATION_ERROR: execution reverted)", + "example": "erc20_allowance_insufficient" + }, + "ledger_in_transaction_id": { + "type": [ + "string", + "null" + ], + "description": "Ledger transaction ID for the IN (crypto deposit) transaction" + }, + "ledger_out_transaction_id": { + "type": [ + "string", + "null" + ], + "description": "Ledger transaction ID for the OUT (fiat withdrawal) transaction" + } + }, + "required": [ + "step" + ] + }, + "tracking_liquidity": { + "type": [ + "object", + "null" + ], + "properties": { + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Payout liquidity step", + "example": "processing" + }, + "provider_transaction_id": { + "type": [ + "string", + "null" + ], + "description": "Payment provider transaction id", + "example": "0x123...890" + }, + "provider_status": { + "type": [ + "string", + "null" + ], + "enum": [ + "deposited", + "converted", + "withdrawn" + ], + "description": "Payment provider status", + "example": "deposited" + }, + "estimated_time_of_arrival": { + "type": [ + "string", + "null" + ], + "enum": [ + "5_min", + "5_30_min", + "30_min", + "2_hours", + "1_business_day", + "2_business_days", + "5_business_days" + ], + "description": "Estimated time of arrival", + "example": "1_business_day" + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "description": "Payout transaction completed date", + "example": "2011-10-05T14:48:00.000Z" + } + }, + "required": [ + "step" + ] + }, + "tracking_documents": { + "type": [ + "object", + "null" + ], + "properties": { + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Documents step", + "example": "processing" + }, + "status": { + "type": [ + "string", + "null" + ], + "enum": [ + "waiting_documents", + "compliance_reviewing" + ], + "description": "Documents status", + "example": "waiting_documents" + }, + "reviewed_by": { + "type": [ + "string", + "null" + ], + "description": "Reviewer email/name", + "example": "compliance@example.com" + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "description": "Documents completed date", + "example": "2011-10-05T14:48:00.000Z" + } + }, + "required": [ + "step" + ] + }, + "customer_id": { + "type": [ + "string", + "null" + ], + "minLength": 15, + "maxLength": 15, + "example": "re_000000000000" + }, + "bank_account_id": { + "type": [ + "string", + "null" + ], + "minLength": 15, + "maxLength": 15, + "example": "ba_000000000000" + }, + "offramp_wallet_id": { + "type": [ + "string", + "null" + ], + "minLength": 15, + "maxLength": 15, + "example": "ow_000000000000" + } + }, + "required": [ + "webhook_event", + "id", + "status", + "sender_wallet_address", + "tracking_complete", + "tracking_payment", + "tracking_transaction" + ] + }, + "PayoutPartnerFeeWebhookOut": { + "type": "object", + "properties": { + "webhook_event": { + "type": "string", + "enum": [ + "payout.partnerFee" + ] + }, + "id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "pa_000000000000" + }, + "status": { + "type": "string", + "enum": [ + "processing", + "failed", + "refunded", + "completed", + "on_hold" + ], + "description": "Payout general status", + "example": "processing" + }, + "sender_wallet_address": { + "type": "string", + "description": "Payout wallet address", + "example": "0x123...890" + }, + "billing_fee_amount": { + "type": [ + "number", + "null" + ], + "description": "Billing fee in cents (charged via invoice at the end of the month)", + "example": 50 + }, + "transaction_fee_amount": { + "type": [ + "number", + "null" + ], + "description": "Transaction fee in cents (percentage-based fee)", + "example": 100 + }, + "partner_fee": { + "type": "integer", + "minimum": 0, + "default": 0, + "description": "Payout partner fee amount in cents (can be negative for rebates)", + "example": -25000 + }, + "tracking_complete": { + "type": "object", + "properties": { + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Complete step", + "example": "on_hold" + }, + "status": { + "type": [ + "string", + "null" + ], + "enum": [ + "tokens_refunded", + "paid" + ], + "description": "Complete status", + "example": "tokens_refunded" + }, + "refund_reason": { + "type": [ + "string", + "null" + ], + "description": "Reason for refund when tokens are returned to sender", + "example": "fiat_payment_failed" + }, + "transaction_hash": { + "type": [ + "string", + "null" + ], + "description": "Complete transaction hash", + "example": "0x123...890" + }, + "provider_transaction_id": { + "type": [ + "string", + "null" + ], + "description": "Provider-side handle for the refund transaction (e.g. Circle transaction id)", + "example": "67c12eae-b7bc-31cc-a5ef-623dcea82346" + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "description": "Complete completed date", + "example": "2011-10-05T14:48:00.000Z" + } + }, + "required": [ + "step" + ] + }, + "tracking_payment": { + "type": "object", + "properties": { + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Payment step", + "example": "on_hold" + }, + "provider_name": { + "type": [ + "string", + "null" + ], + "enum": [ + "Nvio Pagos", + "Brex", + "Stark Bank", + "JPMorgan Chase", + "HSBC", + "Inter", + "JP Morgan Chase", + "Bitso", + "Citi", + "CFSB", + "Triple A Technologies", + "Portage Bank" + ], + "description": "Payment provider name", + "example": "HSBC" + }, + "provider_integration": { + "type": [ + "string", + "null" + ], + "enum": [ + "veem", + "zenus", + "checkbook", + "onemoney", + "bitso", + "starkbank", + "triplea", + "infinitus" + ], + "description": "Machine-readable integration that executed the fiat leg. Unlike provider_name (a client-facing bank label), this uniquely identifies the integration — e.g. zenus vs checkbook, which share the \"JPMorgan Chase\" label.", + "example": "zenus" + }, + "provider_transaction_id": { + "type": [ + "string", + "null" + ], + "description": "Payment provider transaction id", + "example": "0x123...890" + }, + "provider_status": { + "type": [ + "string", + "null" + ], + "enum": [ + "canceled", + "failed", + "returned", + "sent" + ], + "description": "Payment provider status", + "example": "canceled" + }, + "provider_error_reason": { + "type": [ + "string", + "null" + ], + "description": "Provider error reason when payment fails (e.g. invalid_key, wrong_parameters)", + "example": "invalid_key" + }, + "provider_uetr": { + "type": [ + "string", + "null" + ], + "maxLength": 120, + "description": "Unique end-to-end transaction reference (UETR). Populated once the wire is confirmed by the network; null while the payment is in flight or when the rail does not expose it (e.g. ACH).", + "example": "37d10eff-d450-4aba-a5d4-e3978f5a3343" + }, + "provider_imad": { + "type": [ + "string", + "null" + ], + "maxLength": 120, + "description": "Fed Input Message Accountability Data (IMAD). Domestic Fedwire payments only; null on ACH and SWIFT.", + "example": "20260526MMQFMP2M008120" + }, + "provider_reference": { + "type": [ + "string", + "null" + ], + "maxLength": 120, + "description": "Provider (JPMorgan/Zenus) payment reference captured from the ACCOUNT.ACCOUNT booking webhook (Zenus contractSource.sourceRef). Present for some ACH/wire payouts; a bank-side reference, not the formal ACH network trace number.", + "example": "2084734238TC" + }, + "provider_clearing_system": { + "type": [ + "string", + "null" + ], + "maxLength": 40, + "description": "Clearing system that processed the payment (e.g. FED, CHIPS, ACH, SWIFT).", + "example": "FED" + }, + "recipient_name": { + "type": [ + "string", + "null" + ], + "description": "Recipient name", + "example": "John Doe" + }, + "recipient_tax_id": { + "type": [ + "string", + "null" + ], + "description": "Recipient tax id", + "example": "123.456.789-10" + }, + "recipient_bank_code": { + "type": [ + "string", + "null" + ], + "description": "Recipient bank code", + "example": "00416968" + }, + "recipient_branch_code": { + "type": [ + "string", + "null" + ], + "description": "Recipient branch code", + "example": "0001" + }, + "recipient_account_number": { + "type": [ + "string", + "null" + ], + "description": "Recipient account number", + "example": "1234567890" + }, + "recipient_account_type": { + "type": [ + "string", + "null" + ], + "description": "Recipient account type", + "example": "checking" + }, + "coelsa_id": { + "type": [ + "string", + "null" + ], + "description": "COELSA transaction reference ID for ARS transfers (Argentine national banking system)", + "example": "1LMP68NKV46DRDYK2R7OEV" + }, + "end_to_end_id": { + "type": [ + "string", + "null" + ], + "description": "BACEN Pix end-to-end transaction ID (govt Pix ID)", + "example": "E20018183202603311320vm6ALFpJpsS" + }, + "estimated_time_of_arrival": { + "type": [ + "string", + "null" + ], + "enum": [ + "5_min", + "5_30_min", + "30_min", + "2_hours", + "1_business_day", + "2_business_days", + "5_business_days" + ], + "description": "Estimated time of arrival", + "example": "5_min" }, - "type": "object" + "completed_at": { + "type": [ + "string", + "null" + ], + "description": "Payment completed date", + "example": "2011-10-05T14:48:00.000Z" + } }, - "type": [ - "array", - "null" - ] - }, - "phone_number": { - "example": "+13055555555", - "type": [ - "string", - "null" + "required": [ + "step" ] }, - "postal_code": { - "example": "02050", - "type": [ - "string", - "null" + "tracking_transaction": { + "type": "object", + "properties": { + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Payout transaction step", + "example": "processing" + }, + "status": { + "type": [ + "string", + "null" + ], + "enum": [ + "failed", + "found" + ], + "description": "Payout transaction status", + "example": "failed" + }, + "transaction_hash": { + "type": [ + "string", + "null" + ], + "description": "Blockchain transaction hash", + "example": "0x123...890" + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "description": "Payout transaction completed date", + "example": "2011-10-05T14:48:00.000Z" + }, + "provider_transaction_id": { + "type": [ + "string", + "null" + ], + "description": "Provider-side handle for the on-chain leg (e.g. Circle CPN payment id).", + "example": "67c12eae-b7bc-31cc-a5ef-623dcea82346" + }, + "provider_error_reason": { + "type": [ + "string", + "null" + ], + "description": "Provider error reason when the crypto collection fails (e.g. erc20_allowance_insufficient, ESTIMATION_ERROR: execution reverted)", + "example": "erc20_allowance_insufficient" + }, + "ledger_in_transaction_id": { + "type": [ + "string", + "null" + ], + "description": "Ledger transaction ID for the IN (crypto deposit) transaction" + }, + "ledger_out_transaction_id": { + "type": [ + "string", + "null" + ], + "description": "Ledger transaction ID for the OUT (fiat withdrawal) transaction" + } + }, + "required": [ + "step" ] }, - "proof_of_address_doc_file": { - "description": "Please upload one document that serve as proof of address, this needs to be the same physical address as the one provided above. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", - "example": "https://example.com/image.png", + "tracking_liquidity": { "type": [ - "string", + "object", "null" - ] - }, - "proof_of_address_doc_type": { - "enum": [ - "UTILITY_BILL", - "BANK_STATEMENT", - "RENTAL_AGREEMENT", - "TAX_DOCUMENT", - "GOVERNMENT_CORRESPONDENCE" ], - "example": "UTILITY_BILL", - "type": [ - "string", - "null" - ] - }, - "proof_of_ownership_doc_file": { - "description": "Please upload your proof of ownership below. This document usually includes information like the shareholders names and percentages. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", - "example": "https://example.com/image.png", - "type": [ - "string", - "null" + "properties": { + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Payout liquidity step", + "example": "processing" + }, + "provider_transaction_id": { + "type": [ + "string", + "null" + ], + "description": "Payment provider transaction id", + "example": "0x123...890" + }, + "provider_status": { + "type": [ + "string", + "null" + ], + "enum": [ + "deposited", + "converted", + "withdrawn" + ], + "description": "Payment provider status", + "example": "deposited" + }, + "estimated_time_of_arrival": { + "type": [ + "string", + "null" + ], + "enum": [ + "5_min", + "5_30_min", + "30_min", + "2_hours", + "1_business_day", + "2_business_days", + "5_business_days" + ], + "description": "Estimated time of arrival", + "example": "1_business_day" + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "description": "Payout transaction completed date", + "example": "2011-10-05T14:48:00.000Z" + } + }, + "required": [ + "step" ] }, - "publicly_traded": { - "example": false, + "tracking_documents": { "type": [ - "boolean", + "object", "null" - ] - }, - "purpose_of_transactions": { - "enum": [ - "business_transactions", - "charitable_donations", - "investment_purposes", - "payments_to_friends_or_family_abroad", - "personal_or_living_expenses", - "protect_wealth", - "purchase_good_and_services", - "receive_payment_for_freelancing", - "receive_salary", - "other" ], - "example": "business_transactions", - "type": [ - "string", - "null" + "properties": { + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Documents step", + "example": "processing" + }, + "status": { + "type": [ + "string", + "null" + ], + "enum": [ + "waiting_documents", + "compliance_reviewing" + ], + "description": "Documents status", + "example": "waiting_documents" + }, + "reviewed_by": { + "type": [ + "string", + "null" + ], + "description": "Reviewer email/name", + "example": "compliance@example.com" + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "description": "Documents completed date", + "example": "2011-10-05T14:48:00.000Z" + } + }, + "required": [ + "step" ] }, - "purpose_of_transactions_explanation": { - "example": "I am a business owner and I want to receive payments from my customers", + "customer_id": { "type": [ "string", "null" - ] + ], + "minLength": 15, + "maxLength": 15, + "example": "re_000000000000" }, - "selfie_file": { - "description": "Only image files are accepted (.jpg, .jpeg, .png)", - "example": "https://example.com/image.png", + "bank_account_id": { "type": [ "string", "null" - ] + ], + "minLength": 15, + "maxLength": 15, + "example": "ba_000000000000" }, - "source_of_funds_doc_file": { - "example": "https://example.com/image.png", + "offramp_wallet_id": { "type": [ "string", "null" - ] - }, - "source_of_funds_doc_type": { - "enum": [ - "business_income", - "gambling_proceeds", - "gifts", - "government_benefits", - "inheritance", - "investment_loans", - "pension_retirement", - "salary", - "sale_of_assets_real_estate", - "savings", - "esops", - "investment_proceeds", - "someone_else_funds" ], - "example": "business_income", - "type": [ - "string", - "null" - ] - }, - "source_of_wealth": { + "minLength": 15, + "maxLength": 15, + "example": "ow_000000000000" + } + }, + "required": [ + "webhook_event", + "id", + "status", + "sender_wallet_address", + "tracking_complete", + "tracking_payment", + "tracking_transaction" + ] + }, + "AdditionalInfoItem": { + "type": "object", + "properties": { + "label": { + "type": "string", "enum": [ - "business_dividends_or_profits", - "investments", - "asset_sales", - "client_investor_contributions", - "gambling", - "charitable_contributions", - "inheritance", - "affiliate_or_royalty_income" - ], - "example": "affiliate_or_royalty_income", - "type": [ - "string", - "null" - ] - }, - "state_province_region": { - "example": "MA", - "type": [ - "string", - "null" + "EIN_LETTER", + "KYC_PROVIDER_DOCUMENT", + "FLOW_OF_FUNDS", + "BANK_STATEMENT", + "TAX_RETURN", + "AUDITED_FINANCIALS", + "OPERATING_AGREEMENT", + "BOARD_RESOLUTION", + "CERTIFICATE_OF_GOOD_STANDING", + "BUSINESS_LICENSE", + "MSB_LICENSE", + "POWER_OF_ATTORNEY", + "TRUST_DEED", + "SHAREHOLDER_REGISTRY", + "BENEFICIAL_OWNER_DECLARATION", + "COMPLIANCE_QUESTIONNAIRE", + "PROOF_OF_EMPLOYMENT", + "REFERENCE_LETTER", + "OTHER" ] }, - "tax_id": { - "example": "536804398", - "type": [ - "string", - "null" + "value": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "label", + "value" + ], + "example": { + "label": "EIN_LETTER", + "value": "https://example.com/ein.pdf" + } + }, + "CustomerNewWebhookOut": { + "type": "object", + "properties": { + "webhook_event": { + "type": "string", + "enum": [ + "customer.new" ] }, - "tos_id": { - "example": "to_000000000000", + "id": { + "type": "string", + "minLength": 15, "maxLength": 15, + "example": "re_000000000000" + }, + "customer_id": { + "type": "string", "minLength": 15, - "type": [ - "string", - "null" - ] + "maxLength": 15, + "example": "re_000000000000" }, "type": { + "type": "string", "enum": [ "individual", "business" ], - "example": "individual", - "type": "string" + "example": "individual" }, - "updated_at": { - "example": "2021-01-01T00:00:00Z", - "format": "date-time", - "type": [ - "string", - "null" - ] + "kyc_type": { + "type": "string", + "enum": [ + "light", + "standard", + "enhanced" + ], + "example": "standard" }, - "webhook_event": { + "kyc_status": { + "type": "string", "enum": [ - "customer.new" + "verifying", + "approved", + "rejected", + "deprecated", + "pending_review", + "awaiting_contract", + "compliance_request", + "approved_rfi" ], - "type": "string" + "example": "verifying" }, - "website": { - "example": "https://example.com", - "format": "uri", + "kyc_warnings": { "type": [ - "string", + "array", "null" - ] - } - }, - "required": [ - "webhook_event", - "id", - "customer_id", - "type", - "kyc_type", - "kyc_status", - "email", - "country", - "instance_id", - "limit" - ], - "type": "object" - }, - "CustomerOut": { - "properties": { - "account_purpose": { - "enum": [ - "charitable_donations", - "ecommerce_retail_payments", - "investment_purposes", - "business_expenses", - "payments_to_friends_or_family_abroad", - "personal_or_living_expenses", - "protect_wealth", - "purchase_goods_and_services", - "receive_payments_for_goods_and_services", - "tax_optimization", - "third_party_money_transmission", - "payroll", - "treasury_management", - "other" ], - "example": "treasury_management", - "type": [ - "string", - "null" + "items": { + "type": "object", + "properties": { + "code": { + "type": [ + "string", + "null" + ] + }, + "message": { + "type": [ + "string", + "null" + ] + }, + "resolution_status": { + "type": [ + "string", + "null" + ] + }, + "warning_id": { + "type": [ + "string", + "null" + ] + } + } + }, + "description": "You can find more information here: https://docs.aiprise.com/docs/warnings-and-error-codes", + "example": [ + { + "code": "BIRTH_DATE_MISMATCH", + "message": "Mismatch between supplied birth date and extracted/looked up birth date.", + "resolution_status": "UNRESOLVED", + "warning_id": "38170889-50aa-4271-9eb1-61113ebf408c" + } ] }, - "account_purpose_other": { - "description": "Required when account_purpose is \"other\". Max 512 characters.", - "example": "Custom account purpose description", - "maxLength": 512, + "fraud_warnings": { "type": [ - "string", + "array", "null" - ] - }, - "additional_info": { - "description": "Optional extra documents or notes for this customer. `label` is a known category, `value` is either a URL to upload or a free-text description. Any URLs are downloaded and re-hosted on Blindpay storage before being stored.", - "example": [ - { - "label": "EIN_LETTER", - "value": "https://example.com/ein.pdf" - }, - { - "label": "FLOW_OF_FUNDS", - "value": "Funds originate from US payroll deposits, forwarded weekly to customer." - } ], "items": { - "$ref": "#/components/schemas/AdditionalInfoItem" + "type": "object", + "properties": { + "id": { + "type": [ + "string", + "null" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + }, + "operation": { + "type": [ + "string", + "null" + ] + }, + "score": { + "type": [ + "number", + "null" + ] + } + } }, - "type": [ - "array", - "null" + "example": [ + { + "id": "UC114", + "name": "User never used a Datacenter proxy and this device before", + "operation": "+", + "score": 10 + } ] }, - "address_line_1": { - "example": "738 Plain St", - "type": [ - "string", - "null" - ] + "email": { + "type": "string", + "format": "email", + "example": "email@example.com" }, - "address_line_2": { - "example": "Building 22", + "tax_id": { "type": [ "string", "null" - ] + ], + "example": "536804398" }, - "alternate_name": { - "example": "Company Name Inc.", + "address_line_1": { "type": [ "string", "null" - ] - }, - "aml_hits": { - "description": "AML screening match details from SEON.", - "example": { - "has_adversemedia_match": false, - "has_crimelist_match": false, - "has_pep_match": false, - "has_sanction_match": false, - "has_watchlist_match": false - }, - "properties": { - "has_adversemedia_match": { - "default": false, - "type": "boolean" - }, - "has_crimelist_match": { - "default": false, - "type": "boolean" - }, - "has_pep_match": { - "default": false, - "type": "boolean" - }, - "has_sanction_match": { - "default": false, - "type": "boolean" - }, - "has_watchlist_match": { - "default": false, - "type": "boolean" - } - }, - "type": [ - "object", - "null" - ] - }, - "aml_status": { - "description": "AML screening status from SEON. null = not yet screened.", - "enum": [ - "clear", - "hit", - "error" ], - "example": "clear", - "type": [ - "string", - "null" - ] + "example": "738 Plain St" }, - "business_description": { - "example": "Software development company", - "maxLength": 1000, + "address_line_2": { "type": [ "string", "null" - ] - }, - "business_industry": { - "enum": [ - "111998", - "112120", - "113310", - "115114", - "541211", - "541810", - "541430", - "541715", - "541930", - "561422", - "561311", - "561612", - "561740", - "561730", - "236115", - "236220", - "237310", - "238210", - "811111", - "812111", - "812112", - "532111", - "624410", - "541922", - "811210", - "812199", - "611110", - "611310", - "611410", - "611710", - "211120", - "212114", - "221310", - "562111", - "562920", - "213112", - "522110", - "522210", - "522320", - "523150", - "523940", - "523999", - "524113", - "813110", - "813211", - "813219", - "551112", - "721110", - "722511", - "722513", - "561510", - "713110", - "713210", - "712110", - "711110", - "711211", - "621111", - "621210", - "622110", - "623110", - "621511", - "623220", - "541940", - "621399", - "621910", - "541110", - "311421", - "337121", - "322220", - "339920", - "334210", - "339930", - "312130", - "334111", - "334118", - "325412", - "339112", - "336110", - "336390", - "315990", - "313110", - "339910", - "516120", - "513130", - "512250", - "519130", - "711410", - "711510", - "531110", - "531120", - "531130", - "531190", - "531210", - "531311", - "531312", - "531320", - "531390", - "454110", - "445110", - "455110", - "457110", - "449210", - "444110", - "459210", - "459120", - "445320", - "458110", - "458210", - "458310", - "455219", - "424210", - "456110", - "446120", - "541511", - "541512", - "541519", - "518210", - "511210", - "517111", - "517112", - "517410", - "481111", - "483111", - "485210", - "488510", - "484121", - "493110", - "423430", - "423690", - "423110", - "423830", - "423840", - "423510", - "424690", - "424990", - "424410", - "424480", - "423940", - "541611", - "541618", - "541330", - "541990", - "541214", - "561499" ], - "example": "541511", - "type": [ - "string", - "null" - ] + "example": "Building 22" }, - "business_type": { - "enum": [ - "corporation", - "llc", - "partnership", - "sole_proprietorship", - "trust", - "non_profit" - ], - "example": "llc", + "city": { "type": [ "string", "null" - ] + ], + "example": "Marshfield" }, - "city": { - "example": "Marshfield", + "state_province_region": { "type": [ "string", "null" - ] + ], + "example": "MA" }, "country": { + "type": "string", "enum": [ "AF", "AL", @@ -17484,77 +9018,98 @@ "ZW", "AX" ], - "example": "US", - "type": "string" + "example": "US" }, - "created_at": { - "example": "2021-01-01T00:00:00Z", - "format": "date-time", + "postal_code": { "type": [ "string", "null" - ] + ], + "example": "02050" }, - "customer_id": { - "example": "re_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" + "ip_address": { + "type": [ + "string", + "null" + ], + "format": "ip", + "example": "127.0.0.1" }, - "date_of_birth": { - "anyOf": [ - { - "format": "date-time", - "type": "string" - }, - { - "type": "string" - }, - { - "type": "null" - } + "latitude": { + "type": [ + "number", + "null" ], - "example": "1998-01-01T00:00:00Z" + "minimum": -90, + "maximum": 90, + "description": "Optional geolocation latitude collected from the customer. Forwarded to AiPrise and SEON for fraud analysis.", + "example": 37.7749 }, - "email": { - "example": "email@example.com", - "format": "email", - "type": "string" + "longitude": { + "type": [ + "number", + "null" + ], + "minimum": -180, + "maximum": 180, + "description": "Optional geolocation longitude collected from the customer. Forwarded to AiPrise and SEON for fraud analysis.", + "example": -122.4194 }, - "estimated_annual_revenue": { - "enum": [ - "0_99999", - "100000_999999", - "1000000_9999999", - "10000000_49999999", - "50000000_249999999", - "250000000_plus" + "image_url": { + "type": [ + "string", + "null" ], - "example": "1000000_9999999", + "example": "https://example.com/image.png" + }, + "phone_number": { "type": [ "string", "null" - ] + ], + "example": "+13055555555" }, - "external_id": { - "example": "your_company_external_id", + "proof_of_address_doc_type": { "type": [ "string", "null" - ] + ], + "enum": [ + "UTILITY_BILL", + "BANK_STATEMENT", + "RENTAL_AGREEMENT", + "TAX_DOCUMENT", + "GOVERNMENT_CORRESPONDENCE" + ], + "example": "UTILITY_BILL" + }, + "proof_of_address_doc_file": { + "type": [ + "string", + "null" + ], + "description": "Please upload one document that serve as proof of address, this needs to be the same physical address as the one provided above. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", + "example": "https://example.com/image.png" }, "first_name": { - "example": "John", "type": [ "string", "null" - ] + ], + "example": "John" }, - "formation_date": { + "last_name": { + "type": [ + "string", + "null" + ], + "example": "Doe" + }, + "date_of_birth": { "anyOf": [ { - "format": "date-time", - "type": "string" + "type": "string", + "format": "date-time" }, { "type": "string" @@ -17563,67 +9118,13 @@ "type": "null" } ], - "example": "1998-01-01T00:00:00Z", - "format": "date-time" - }, - "fraud_warnings": { - "example": [ - { - "id": "UC114", - "name": "User never used a Datacenter proxy and this device before", - "operation": "+", - "score": 10 - } - ], - "items": { - "properties": { - "id": { - "type": [ - "string", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - }, - "operation": { - "type": [ - "string", - "null" - ] - }, - "score": { - "type": [ - "number", - "null" - ] - } - }, - "type": "object" - }, - "type": [ - "array", - "null" - ] - }, - "id": { - "example": "re_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" + "example": "1998-01-01T00:00:00Z" }, - "id_doc_back_file": { - "description": "Only image files are accepted (.jpg, .jpeg, .png)", - "example": "https://example.com/image.png", + "id_doc_country": { "type": [ "string", "null" - ] - }, - "id_doc_country": { + ], "enum": [ "AF", "AL", @@ -17875,251 +9376,160 @@ "ZW", "AX" ], - "example": "BR", - "type": [ - "string", - "null" - ] + "example": "BR" }, - "id_doc_front_file": { - "description": "Only image files are accepted (.jpg, .jpeg, .png)", - "example": "https://example.com/image.png", + "id_doc_type": { "type": [ "string", "null" - ] - }, - "id_doc_type": { + ], "enum": [ "PASSPORT", "ID_CARD", "DRIVERS" ], - "example": "PASSPORT", - "type": [ - "string", - "null" - ] - }, - "image_url": { - "example": "https://example.com/image.png", - "type": [ - "string", - "null" - ] + "example": "PASSPORT" }, - "incorporation_doc_file": { - "description": "Please upload your articles of incorporation below. The articles of incorporation or a certificate of incorporation usually includes information like the company name, business purpose, number of shares offered, value of shares, etc. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", - "example": "https://example.com/image.png", + "id_doc_front_file": { "type": [ "string", "null" - ] - }, - "instance_id": { - "example": "in_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" + ], + "description": "Only image files are accepted (.jpg, .jpeg, .png)", + "example": "https://example.com/image.png" }, - "ip_address": { - "example": "127.0.0.1", - "format": "ip", + "id_doc_back_file": { "type": [ "string", "null" - ] - }, - "is_fbo": { - "example": false, - "type": [ - "boolean", - "null" - ] - }, - "is_tos_accepted": { - "type": [ - "boolean", - "null" - ] - }, - "kyc_status": { - "enum": [ - "verifying", - "approved", - "rejected", - "deprecated", - "pending_review", - "awaiting_contract", - "compliance_request", - "approved_rfi" ], - "example": "verifying", - "type": "string" - }, - "kyc_type": { - "enum": [ - "light", - "standard", - "enhanced" - ], - "example": "standard", - "type": "string" - }, - "kyc_warnings": { - "description": "You can find more information here: https://docs.aiprise.com/docs/warnings-and-error-codes", - "example": [ - { - "code": "BIRTH_DATE_MISMATCH", - "message": "Mismatch between supplied birth date and extracted/looked up birth date.", - "resolution_status": "UNRESOLVED", - "warning_id": "38170889-50aa-4271-9eb1-61113ebf408c" - } - ], - "items": { - "properties": { - "code": { - "type": [ - "string", - "null" - ] - }, - "message": { - "type": [ - "string", - "null" - ] - }, - "resolution_status": { - "type": [ - "string", - "null" - ] - }, - "warning_id": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - "type": [ - "array", - "null" - ] + "description": "Only image files are accepted (.jpg, .jpeg, .png)", + "example": "https://example.com/image.png" }, - "last_name": { - "example": "Doe", + "legal_name": { "type": [ "string", "null" - ] - }, - "latitude": { - "description": "Optional geolocation latitude collected from the customer. Forwarded to AiPrise and SEON for fraud analysis.", - "example": 37.7749, - "maximum": 90, - "minimum": -90, - "type": [ - "number", - "null" - ] + ], + "example": "Company Name Inc." }, - "legal_name": { - "example": "Company Name Inc.", + "alternate_name": { "type": [ "string", "null" - ] + ], + "example": "Company Name Inc." }, - "limit": { - "properties": { - "daily": { - "example": 200000, - "type": [ - "number", - "null" - ] + "formation_date": { + "anyOf": [ + { + "type": "string", + "format": "date-time" }, - "monthly": { - "example": 1000000, - "type": [ - "number", - "null" - ] + { + "type": "string" }, - "per_transaction": { - "example": 100000, - "type": [ - "number", - "null" - ] + { + "type": "null" } - }, - "required": [ - "per_transaction", - "daily", - "monthly" ], - "type": "object" - }, - "longitude": { - "description": "Optional geolocation longitude collected from the customer. Forwarded to AiPrise and SEON for fraud analysis.", - "example": -122.4194, - "maximum": 180, - "minimum": -180, - "type": [ - "number", - "null" - ] + "example": "1998-01-01T00:00:00Z", + "format": "date-time" }, - "occupation": { - "example": "Software Engineer", - "maxLength": 255, + "website": { "type": [ "string", "null" - ] + ], + "format": "uri", + "example": "https://example.com" }, "owners": { - "description": "Customer owners", - "example": [ - { - "address_line_1": "738 Plain St", - "address_line_2": "Building 22", - "city": "Marshfield", - "country": "US", - "first_name": "John", - "id": "ub_000000000000", - "id_doc_back_file": "https://example.com/image.png", - "id_doc_country": "BR", - "id_doc_front_file": "https://example.com/image.png", - "id_doc_type": "PASSPORT", - "last_name": "Doe", - "postal_code": "02050", - "state_province_region": "MA" - } + "type": [ + "array", + "null" ], "items": { + "type": "object", "properties": { + "id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "ub_000000000000" + }, + "instance_id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "in_000000000000" + }, + "customer_id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "re_000000000000" + }, + "role": { + "type": "string", + "enum": [ + "beneficial_controlling", + "beneficial_owner", + "controlling_person" + ], + "description": "A beneficial owner is someone who directly or indirectly owns 25% or more of your business. A controlling person is someone with significant responsibility to control, manage or direct your business (typically a CEO, senior executive officer or equivalent).", + "example": "beneficial_owner" + }, + "first_name": { + "type": "string", + "minLength": 1, + "example": "John" + }, + "last_name": { + "type": "string", + "minLength": 1, + "example": "Doe" + }, + "date_of_birth": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "string" + } + ], + "example": "1998-01-01T00:00:00Z" + }, + "tax_id": { + "type": [ + "string", + "null" + ], + "example": "536804398" + }, "address_line_1": { - "example": "738 Plain St", - "type": "string" + "type": "string", + "example": "738 Plain St" }, "address_line_2": { - "example": "Building 22", "type": [ "string", "null" - ] + ], + "example": "Building 22" }, "city": { - "example": "Marshfield", - "type": "string" + "type": "string", + "example": "Marshfield" + }, + "state_province_region": { + "type": "string", + "example": "MA" }, "country": { + "type": "string", "enum": [ "AF", "AL", @@ -18371,46 +9781,14 @@ "ZW", "AX" ], - "example": "US", - "type": "string" + "example": "US" }, - "customer_id": { - "example": "re_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - }, - "date_of_birth": { - "anyOf": [ - { - "format": "date-time", - "type": "string" - }, - { - "type": "string" - } - ], - "example": "1998-01-01T00:00:00Z" - }, - "first_name": { - "example": "John", - "minLength": 1, - "type": "string" - }, - "id": { - "example": "ub_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - }, - "id_doc_back_file": { - "description": "Only image files are accepted (.jpg, .jpeg, .png)", - "type": [ - "string", - "null" - ] + "postal_code": { + "type": "string", + "example": "02050" }, "id_doc_country": { + "type": "string", "enum": [ "AF", "AL", @@ -18662,214 +10040,125 @@ "ZW", "AX" ], - "example": "BR", - "type": "string" - }, - "id_doc_front_file": { - "description": "Only image files are accepted (.jpg, .jpeg, .png)", - "type": [ - "string", - "null" - ] + "example": "BR" }, "id_doc_type": { + "type": "string", "enum": [ "PASSPORT", "ID_CARD", "DRIVERS" ], - "example": "PASSPORT", - "type": "string" - }, - "instance_id": { - "example": "in_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" + "example": "PASSPORT" }, - "last_name": { - "example": "Doe", - "minLength": 1, - "type": "string" - }, - "ownership_percentage": { - "description": "Ownership percentage of the beneficial owner (0-100)", - "example": 25, - "maximum": 100, - "minimum": 0, + "id_doc_front_file": { "type": [ - "integer", + "string", "null" - ] - }, - "postal_code": { - "example": "02050", - "type": "string" + ], + "description": "Only image files are accepted (.jpg, .jpeg, .png)" }, - "proof_of_address_doc_file": { - "description": "Please upload one document that serve as proof of address, this needs to be the same address as the one provided above. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", + "id_doc_back_file": { "type": [ "string", "null" - ] + ], + "description": "Only image files are accepted (.jpg, .jpeg, .png)" }, "proof_of_address_doc_type": { + "type": [ + "string", + "null" + ], "enum": [ "UTILITY_BILL", "BANK_STATEMENT", "RENTAL_AGREEMENT", "TAX_DOCUMENT", "GOVERNMENT_CORRESPONDENCE" - ], - "example": "UTILITY_BILL", - "type": [ - "string", - "null" - ] - }, - "role": { - "description": "A beneficial owner is someone who directly or indirectly owns 25% or more of your business. A controlling person is someone with significant responsibility to control, manage or direct your business (typically a CEO, senior executive officer or equivalent).", - "enum": [ - "beneficial_controlling", - "beneficial_owner", - "controlling_person" - ], - "example": "beneficial_owner", - "type": "string" - }, - "state_province_region": { - "example": "MA", - "type": "string" + ], + "example": "UTILITY_BILL" }, - "tax_id": { - "example": "536804398", + "proof_of_address_doc_file": { "type": [ "string", "null" - ] - }, - "tax_type": { - "description": "Tax identifier type. Mandatory when country is US; must be SSN or ITIN.", - "enum": [ - "SSN", - "ITIN" ], - "example": "SSN", + "description": "Please upload one document that serve as proof of address, this needs to be the same address as the one provided above. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB." + }, + "ownership_percentage": { "type": [ - "string", + "integer", "null" - ] + ], + "minimum": 0, + "maximum": 100, + "description": "Ownership percentage of the beneficial owner (0-100)", + "example": 25 }, "title": { - "description": "Job title of the owner", - "example": "CEO", + "type": [ + "string", + "null" + ], "maxLength": 128, + "description": "Job title of the owner", + "example": "CEO" + }, + "tax_type": { "type": [ "string", "null" - ] + ], + "enum": [ + "SSN", + "ITIN" + ], + "description": "Tax identifier type. Mandatory when country is US; must be SSN or ITIN.", + "example": "SSN" } - }, - "type": "object" + } }, - "type": [ - "array", - "null" - ] - }, - "phone_number": { - "example": "+13055555555", - "type": [ - "string", - "null" - ] - }, - "postal_code": { - "example": "02050", - "type": [ - "string", - "null" + "description": "Customer owners", + "example": [ + { + "id": "ub_000000000000", + "first_name": "John", + "last_name": "Doe", + "address_line_1": "738 Plain St", + "address_line_2": "Building 22", + "city": "Marshfield", + "state_province_region": "MA", + "country": "US", + "postal_code": "02050", + "id_doc_country": "BR", + "id_doc_type": "PASSPORT", + "id_doc_front_file": "https://example.com/image.png", + "id_doc_back_file": "https://example.com/image.png" + } ] }, - "proof_of_address_doc_file": { - "description": "Please upload one document that serve as proof of address, this needs to be the same physical address as the one provided above. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", - "example": "https://example.com/image.png", + "incorporation_doc_file": { "type": [ "string", "null" - ] - }, - "proof_of_address_doc_type": { - "enum": [ - "UTILITY_BILL", - "BANK_STATEMENT", - "RENTAL_AGREEMENT", - "TAX_DOCUMENT", - "GOVERNMENT_CORRESPONDENCE" ], - "example": "UTILITY_BILL", - "type": [ - "string", - "null" - ] + "description": "Please upload your articles of incorporation below. The articles of incorporation or a certificate of incorporation usually includes information like the company name, business purpose, number of shares offered, value of shares, etc. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", + "example": "https://example.com/image.png" }, "proof_of_ownership_doc_file": { - "description": "Please upload your proof of ownership below. This document usually includes information like the shareholders names and percentages. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", - "example": "https://example.com/image.png", "type": [ "string", "null" - ] - }, - "publicly_traded": { - "example": false, - "type": [ - "boolean", - "null" - ] - }, - "purpose_of_transactions": { - "enum": [ - "business_transactions", - "charitable_donations", - "investment_purposes", - "payments_to_friends_or_family_abroad", - "personal_or_living_expenses", - "protect_wealth", - "purchase_good_and_services", - "receive_payment_for_freelancing", - "receive_salary", - "other" ], - "example": "business_transactions", - "type": [ - "string", - "null" - ] - }, - "purpose_of_transactions_explanation": { - "example": "I am a business owner and I want to receive payments from my customers", - "type": [ - "string", - "null" - ] - }, - "selfie_file": { - "description": "Only image files are accepted (.jpg, .jpeg, .png)", - "example": "https://example.com/image.png", - "type": [ - "string", - "null" - ] + "description": "Please upload your proof of ownership below. This document usually includes information like the shareholders names and percentages. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", + "example": "https://example.com/image.png" }, - "source_of_funds_doc_file": { - "example": "https://example.com/image.png", + "source_of_funds_doc_type": { "type": [ "string", "null" - ] - }, - "source_of_funds_doc_type": { + ], "enum": [ "business_income", "gambling_proceeds", @@ -18885,93 +10174,61 @@ "investment_proceeds", "someone_else_funds" ], - "example": "business_income", - "type": [ - "string", - "null" - ] + "example": "business_income" }, - "source_of_wealth": { - "enum": [ - "business_dividends_or_profits", - "investments", - "asset_sales", - "client_investor_contributions", - "gambling", - "charitable_contributions", - "inheritance", - "affiliate_or_royalty_income" - ], - "example": "affiliate_or_royalty_income", + "source_of_funds_doc_file": { "type": [ "string", "null" - ] + ], + "example": "https://example.com/image.png" }, - "state_province_region": { - "example": "MA", + "selfie_file": { "type": [ "string", "null" - ] + ], + "description": "Only image files are accepted (.jpg, .jpeg, .png)", + "example": "https://example.com/image.png" }, - "tax_id": { - "example": "536804398", + "purpose_of_transactions": { "type": [ "string", "null" - ] + ], + "enum": [ + "business_transactions", + "charitable_donations", + "investment_purposes", + "payments_to_friends_or_family_abroad", + "personal_or_living_expenses", + "protect_wealth", + "purchase_good_and_services", + "receive_payment_for_freelancing", + "receive_salary", + "other" + ], + "example": "business_transactions" }, - "tos_id": { - "example": "to_000000000000", - "maxLength": 15, - "minLength": 15, + "purpose_of_transactions_explanation": { "type": [ "string", "null" - ] - }, - "type": { - "enum": [ - "individual", - "business" ], - "example": "individual", - "type": "string" + "example": "I am a business owner and I want to receive payments from my customers" }, - "updated_at": { - "example": "2021-01-01T00:00:00Z", - "format": "date-time", + "is_fbo": { "type": [ - "string", + "boolean", "null" - ] + ], + "example": false }, - "website": { - "example": "https://example.com", - "format": "uri", + "account_purpose": { "type": [ "string", "null" - ] - } - }, - "required": [ - "id", - "customer_id", - "type", - "kyc_type", - "kyc_status", - "email", - "country", - "instance_id", - "limit" - ], - "type": "object" - }, - "CustomerUpdateWebhookOut": { - "properties": { - "account_purpose": { + ], "enum": [ "charitable_donations", "ecommerce_retail_payments", @@ -18988,120 +10245,45 @@ "treasury_management", "other" ], - "example": "treasury_management", - "type": [ - "string", - "null" - ] + "example": "treasury_management" }, "account_purpose_other": { - "description": "Required when account_purpose is \"other\". Max 512 characters.", - "example": "Custom account purpose description", - "maxLength": 512, "type": [ "string", "null" - ] - }, - "additional_info": { - "description": "Optional extra documents or notes for this customer. `label` is a known category, `value` is either a URL to upload or a free-text description. Any URLs are downloaded and re-hosted on Blindpay storage before being stored.", - "example": [ - { - "label": "EIN_LETTER", - "value": "https://example.com/ein.pdf" - }, - { - "label": "FLOW_OF_FUNDS", - "value": "Funds originate from US payroll deposits, forwarded weekly to customer." - } ], - "items": { - "$ref": "#/components/schemas/AdditionalInfoItem" - }, - "type": [ - "array", - "null" - ] - }, - "address_line_1": { - "example": "738 Plain St", - "type": [ - "string", - "null" - ] - }, - "address_line_2": { - "example": "Building 22", - "type": [ - "string", - "null" - ] + "maxLength": 512, + "description": "Required when account_purpose is \"other\". Max 512 characters.", + "example": "Custom account purpose description" }, - "alternate_name": { - "example": "Company Name Inc.", + "business_type": { "type": [ "string", "null" - ] - }, - "aml_hits": { - "description": "AML screening match details from SEON.", - "example": { - "has_adversemedia_match": false, - "has_crimelist_match": false, - "has_pep_match": false, - "has_sanction_match": false, - "has_watchlist_match": false - }, - "properties": { - "has_adversemedia_match": { - "default": false, - "type": "boolean" - }, - "has_crimelist_match": { - "default": false, - "type": "boolean" - }, - "has_pep_match": { - "default": false, - "type": "boolean" - }, - "has_sanction_match": { - "default": false, - "type": "boolean" - }, - "has_watchlist_match": { - "default": false, - "type": "boolean" - } - }, - "type": [ - "object", - "null" - ] - }, - "aml_status": { - "description": "AML screening status from SEON. null = not yet screened.", + ], "enum": [ - "clear", - "hit", - "error" + "corporation", + "llc", + "partnership", + "sole_proprietorship", + "trust", + "non_profit" ], - "example": "clear", - "type": [ - "string", - "null" - ] + "example": "llc" }, "business_description": { - "example": "Software development company", - "maxLength": 1000, "type": [ "string", "null" - ] + ], + "maxLength": 1000, + "example": "Software development company" }, "business_industry": { + "type": [ + "string", + "null" + ], "enum": [ "111998", "112120", @@ -19248,35 +10430,394 @@ "541214", "561499" ], - "example": "541511", + "example": "541511" + }, + "estimated_annual_revenue": { + "type": [ + "string", + "null" + ], + "enum": [ + "0_99999", + "100000_999999", + "1000000_9999999", + "10000000_49999999", + "50000000_249999999", + "250000000_plus" + ], + "example": "1000000_9999999" + }, + "source_of_wealth": { + "type": [ + "string", + "null" + ], + "enum": [ + "business_dividends_or_profits", + "investments", + "asset_sales", + "client_investor_contributions", + "gambling", + "charitable_contributions", + "inheritance", + "affiliate_or_royalty_income" + ], + "example": "affiliate_or_royalty_income" + }, + "publicly_traded": { + "type": [ + "boolean", + "null" + ], + "example": false + }, + "occupation": { + "type": [ + "string", + "null" + ], + "maxLength": 255, + "example": "Software Engineer" + }, + "external_id": { + "type": [ + "string", + "null" + ], + "example": "your_company_external_id" + }, + "instance_id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "in_000000000000" + }, + "tos_id": { + "type": [ + "string", + "null" + ], + "minLength": 15, + "maxLength": 15, + "example": "to_000000000000" + }, + "aml_status": { + "type": [ + "string", + "null" + ], + "enum": [ + "clear", + "hit", + "error" + ], + "description": "AML screening status from SEON. null = not yet screened.", + "example": "clear" + }, + "aml_hits": { + "type": [ + "object", + "null" + ], + "properties": { + "has_sanction_match": { + "type": "boolean", + "default": false + }, + "has_pep_match": { + "type": "boolean", + "default": false + }, + "has_watchlist_match": { + "type": "boolean", + "default": false + }, + "has_crimelist_match": { + "type": "boolean", + "default": false + }, + "has_adversemedia_match": { + "type": "boolean", + "default": false + } + }, + "description": "AML screening match details from SEON.", + "example": { + "has_sanction_match": false, + "has_pep_match": false, + "has_watchlist_match": false, + "has_crimelist_match": false, + "has_adversemedia_match": false + } + }, + "created_at": { + "type": [ + "string", + "null" + ], + "format": "date-time", + "example": "2021-01-01T00:00:00Z" + }, + "updated_at": { + "type": [ + "string", + "null" + ], + "format": "date-time", + "example": "2021-01-01T00:00:00Z" + }, + "limit": { + "type": "object", + "properties": { + "per_transaction": { + "type": [ + "number", + "null" + ], + "example": 100000 + }, + "daily": { + "type": [ + "number", + "null" + ], + "example": 200000 + }, + "monthly": { + "type": [ + "number", + "null" + ], + "example": 1000000 + } + }, + "required": [ + "per_transaction", + "daily", + "monthly" + ] + }, + "is_tos_accepted": { + "type": [ + "boolean", + "null" + ] + }, + "additional_info": { + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/components/schemas/AdditionalInfoItem" + }, + "description": "Optional extra documents or notes for this customer. `label` is a known category, `value` is either a URL to upload or a free-text description. Any URLs are downloaded and re-hosted on Blindpay storage before being stored.", + "example": [ + { + "label": "EIN_LETTER", + "value": "https://example.com/ein.pdf" + }, + { + "label": "FLOW_OF_FUNDS", + "value": "Funds originate from US payroll deposits, forwarded weekly to customer." + } + ] + } + }, + "required": [ + "webhook_event", + "id", + "customer_id", + "type", + "kyc_type", + "kyc_status", + "email", + "country", + "instance_id", + "limit" + ] + }, + "CustomerUpdateWebhookOut": { + "type": "object", + "properties": { + "webhook_event": { + "type": "string", + "enum": [ + "customer.update" + ] + }, + "id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "re_000000000000" + }, + "customer_id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "re_000000000000" + }, + "type": { + "type": "string", + "enum": [ + "individual", + "business" + ], + "example": "individual" + }, + "kyc_type": { + "type": "string", + "enum": [ + "light", + "standard", + "enhanced" + ], + "example": "standard" + }, + "kyc_status": { + "type": "string", + "enum": [ + "verifying", + "approved", + "rejected", + "deprecated", + "pending_review", + "awaiting_contract", + "compliance_request", + "approved_rfi" + ], + "example": "verifying" + }, + "kyc_warnings": { "type": [ - "string", + "array", "null" + ], + "items": { + "type": "object", + "properties": { + "code": { + "type": [ + "string", + "null" + ] + }, + "message": { + "type": [ + "string", + "null" + ] + }, + "resolution_status": { + "type": [ + "string", + "null" + ] + }, + "warning_id": { + "type": [ + "string", + "null" + ] + } + } + }, + "description": "You can find more information here: https://docs.aiprise.com/docs/warnings-and-error-codes", + "example": [ + { + "code": "BIRTH_DATE_MISMATCH", + "message": "Mismatch between supplied birth date and extracted/looked up birth date.", + "resolution_status": "UNRESOLVED", + "warning_id": "38170889-50aa-4271-9eb1-61113ebf408c" + } ] }, - "business_type": { - "enum": [ - "corporation", - "llc", - "partnership", - "sole_proprietorship", - "trust", - "non_profit" + "fraud_warnings": { + "type": [ + "array", + "null" + ], + "items": { + "type": "object", + "properties": { + "id": { + "type": [ + "string", + "null" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + }, + "operation": { + "type": [ + "string", + "null" + ] + }, + "score": { + "type": [ + "number", + "null" + ] + } + } + }, + "example": [ + { + "id": "UC114", + "name": "User never used a Datacenter proxy and this device before", + "operation": "+", + "score": 10 + } + ] + }, + "email": { + "type": "string", + "format": "email", + "example": "email@example.com" + }, + "tax_id": { + "type": [ + "string", + "null" ], - "example": "llc", + "example": "536804398" + }, + "address_line_1": { "type": [ "string", "null" - ] + ], + "example": "738 Plain St" + }, + "address_line_2": { + "type": [ + "string", + "null" + ], + "example": "Building 22" }, "city": { - "example": "Marshfield", "type": [ "string", "null" - ] + ], + "example": "Marshfield" + }, + "state_province_region": { + "type": [ + "string", + "null" + ], + "example": "MA" }, "country": { + "type": "string", "enum": [ "AF", "AL", @@ -19528,77 +11069,98 @@ "ZW", "AX" ], - "example": "US", - "type": "string" + "example": "US" }, - "created_at": { - "example": "2021-01-01T00:00:00Z", - "format": "date-time", + "postal_code": { "type": [ "string", "null" - ] + ], + "example": "02050" }, - "customer_id": { - "example": "re_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" + "ip_address": { + "type": [ + "string", + "null" + ], + "format": "ip", + "example": "127.0.0.1" }, - "date_of_birth": { - "anyOf": [ - { - "format": "date-time", - "type": "string" - }, - { - "type": "string" - }, - { - "type": "null" - } + "latitude": { + "type": [ + "number", + "null" ], - "example": "1998-01-01T00:00:00Z" + "minimum": -90, + "maximum": 90, + "description": "Optional geolocation latitude collected from the customer. Forwarded to AiPrise and SEON for fraud analysis.", + "example": 37.7749 }, - "email": { - "example": "email@example.com", - "format": "email", - "type": "string" + "longitude": { + "type": [ + "number", + "null" + ], + "minimum": -180, + "maximum": 180, + "description": "Optional geolocation longitude collected from the customer. Forwarded to AiPrise and SEON for fraud analysis.", + "example": -122.4194 }, - "estimated_annual_revenue": { - "enum": [ - "0_99999", - "100000_999999", - "1000000_9999999", - "10000000_49999999", - "50000000_249999999", - "250000000_plus" + "image_url": { + "type": [ + "string", + "null" ], - "example": "1000000_9999999", + "example": "https://example.com/image.png" + }, + "phone_number": { "type": [ "string", "null" - ] + ], + "example": "+13055555555" }, - "external_id": { - "example": "your_company_external_id", + "proof_of_address_doc_type": { "type": [ "string", "null" - ] + ], + "enum": [ + "UTILITY_BILL", + "BANK_STATEMENT", + "RENTAL_AGREEMENT", + "TAX_DOCUMENT", + "GOVERNMENT_CORRESPONDENCE" + ], + "example": "UTILITY_BILL" + }, + "proof_of_address_doc_file": { + "type": [ + "string", + "null" + ], + "description": "Please upload one document that serve as proof of address, this needs to be the same physical address as the one provided above. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", + "example": "https://example.com/image.png" }, "first_name": { - "example": "John", "type": [ "string", "null" - ] + ], + "example": "John" }, - "formation_date": { + "last_name": { + "type": [ + "string", + "null" + ], + "example": "Doe" + }, + "date_of_birth": { "anyOf": [ { - "format": "date-time", - "type": "string" + "type": "string", + "format": "date-time" }, { "type": "string" @@ -19607,67 +11169,13 @@ "type": "null" } ], - "example": "1998-01-01T00:00:00Z", - "format": "date-time" - }, - "fraud_warnings": { - "example": [ - { - "id": "UC114", - "name": "User never used a Datacenter proxy and this device before", - "operation": "+", - "score": 10 - } - ], - "items": { - "properties": { - "id": { - "type": [ - "string", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - }, - "operation": { - "type": [ - "string", - "null" - ] - }, - "score": { - "type": [ - "number", - "null" - ] - } - }, - "type": "object" - }, - "type": [ - "array", - "null" - ] - }, - "id": { - "example": "re_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" + "example": "1998-01-01T00:00:00Z" }, - "id_doc_back_file": { - "description": "Only image files are accepted (.jpg, .jpeg, .png)", - "example": "https://example.com/image.png", + "id_doc_country": { "type": [ "string", "null" - ] - }, - "id_doc_country": { + ], "enum": [ "AF", "AL", @@ -19919,251 +11427,160 @@ "ZW", "AX" ], - "example": "BR", - "type": [ - "string", - "null" - ] + "example": "BR" }, - "id_doc_front_file": { - "description": "Only image files are accepted (.jpg, .jpeg, .png)", - "example": "https://example.com/image.png", + "id_doc_type": { "type": [ "string", "null" - ] - }, - "id_doc_type": { + ], "enum": [ "PASSPORT", "ID_CARD", "DRIVERS" ], - "example": "PASSPORT", - "type": [ - "string", - "null" - ] - }, - "image_url": { - "example": "https://example.com/image.png", - "type": [ - "string", - "null" - ] + "example": "PASSPORT" }, - "incorporation_doc_file": { - "description": "Please upload your articles of incorporation below. The articles of incorporation or a certificate of incorporation usually includes information like the company name, business purpose, number of shares offered, value of shares, etc. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", - "example": "https://example.com/image.png", + "id_doc_front_file": { "type": [ "string", "null" - ] - }, - "instance_id": { - "example": "in_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" + ], + "description": "Only image files are accepted (.jpg, .jpeg, .png)", + "example": "https://example.com/image.png" }, - "ip_address": { - "example": "127.0.0.1", - "format": "ip", + "id_doc_back_file": { "type": [ "string", "null" - ] - }, - "is_fbo": { - "example": false, - "type": [ - "boolean", - "null" - ] - }, - "is_tos_accepted": { - "type": [ - "boolean", - "null" - ] - }, - "kyc_status": { - "enum": [ - "verifying", - "approved", - "rejected", - "deprecated", - "pending_review", - "awaiting_contract", - "compliance_request", - "approved_rfi" - ], - "example": "verifying", - "type": "string" - }, - "kyc_type": { - "enum": [ - "light", - "standard", - "enhanced" - ], - "example": "standard", - "type": "string" - }, - "kyc_warnings": { - "description": "You can find more information here: https://docs.aiprise.com/docs/warnings-and-error-codes", - "example": [ - { - "code": "BIRTH_DATE_MISMATCH", - "message": "Mismatch between supplied birth date and extracted/looked up birth date.", - "resolution_status": "UNRESOLVED", - "warning_id": "38170889-50aa-4271-9eb1-61113ebf408c" - } ], - "items": { - "properties": { - "code": { - "type": [ - "string", - "null" - ] - }, - "message": { - "type": [ - "string", - "null" - ] - }, - "resolution_status": { - "type": [ - "string", - "null" - ] - }, - "warning_id": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - "type": [ - "array", - "null" - ] + "description": "Only image files are accepted (.jpg, .jpeg, .png)", + "example": "https://example.com/image.png" }, - "last_name": { - "example": "Doe", + "legal_name": { "type": [ "string", "null" - ] - }, - "latitude": { - "description": "Optional geolocation latitude collected from the customer. Forwarded to AiPrise and SEON for fraud analysis.", - "example": 37.7749, - "maximum": 90, - "minimum": -90, - "type": [ - "number", - "null" - ] + ], + "example": "Company Name Inc." }, - "legal_name": { - "example": "Company Name Inc.", + "alternate_name": { "type": [ "string", "null" - ] + ], + "example": "Company Name Inc." }, - "limit": { - "properties": { - "daily": { - "example": 200000, - "type": [ - "number", - "null" - ] + "formation_date": { + "anyOf": [ + { + "type": "string", + "format": "date-time" }, - "monthly": { - "example": 1000000, - "type": [ - "number", - "null" - ] + { + "type": "string" }, - "per_transaction": { - "example": 100000, - "type": [ - "number", - "null" - ] + { + "type": "null" } - }, - "required": [ - "per_transaction", - "daily", - "monthly" ], - "type": "object" - }, - "longitude": { - "description": "Optional geolocation longitude collected from the customer. Forwarded to AiPrise and SEON for fraud analysis.", - "example": -122.4194, - "maximum": 180, - "minimum": -180, - "type": [ - "number", - "null" - ] + "example": "1998-01-01T00:00:00Z", + "format": "date-time" }, - "occupation": { - "example": "Software Engineer", - "maxLength": 255, + "website": { "type": [ "string", "null" - ] + ], + "format": "uri", + "example": "https://example.com" }, "owners": { - "description": "Customer owners", - "example": [ - { - "address_line_1": "738 Plain St", - "address_line_2": "Building 22", - "city": "Marshfield", - "country": "US", - "first_name": "John", - "id": "ub_000000000000", - "id_doc_back_file": "https://example.com/image.png", - "id_doc_country": "BR", - "id_doc_front_file": "https://example.com/image.png", - "id_doc_type": "PASSPORT", - "last_name": "Doe", - "postal_code": "02050", - "state_province_region": "MA" - } + "type": [ + "array", + "null" ], "items": { + "type": "object", "properties": { + "id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "ub_000000000000" + }, + "instance_id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "in_000000000000" + }, + "customer_id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "re_000000000000" + }, + "role": { + "type": "string", + "enum": [ + "beneficial_controlling", + "beneficial_owner", + "controlling_person" + ], + "description": "A beneficial owner is someone who directly or indirectly owns 25% or more of your business. A controlling person is someone with significant responsibility to control, manage or direct your business (typically a CEO, senior executive officer or equivalent).", + "example": "beneficial_owner" + }, + "first_name": { + "type": "string", + "minLength": 1, + "example": "John" + }, + "last_name": { + "type": "string", + "minLength": 1, + "example": "Doe" + }, + "date_of_birth": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "string" + } + ], + "example": "1998-01-01T00:00:00Z" + }, + "tax_id": { + "type": [ + "string", + "null" + ], + "example": "536804398" + }, "address_line_1": { - "example": "738 Plain St", - "type": "string" + "type": "string", + "example": "738 Plain St" }, "address_line_2": { - "example": "Building 22", "type": [ "string", "null" - ] + ], + "example": "Building 22" }, "city": { - "example": "Marshfield", - "type": "string" + "type": "string", + "example": "Marshfield" + }, + "state_province_region": { + "type": "string", + "example": "MA" }, "country": { + "type": "string", "enum": [ "AF", "AL", @@ -20415,46 +11832,14 @@ "ZW", "AX" ], - "example": "US", - "type": "string" - }, - "customer_id": { - "example": "re_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - }, - "date_of_birth": { - "anyOf": [ - { - "format": "date-time", - "type": "string" - }, - { - "type": "string" - } - ], - "example": "1998-01-01T00:00:00Z" + "example": "US" }, - "first_name": { - "example": "John", - "minLength": 1, - "type": "string" - }, - "id": { - "example": "ub_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - }, - "id_doc_back_file": { - "description": "Only image files are accepted (.jpg, .jpeg, .png)", - "type": [ - "string", - "null" - ] + "postal_code": { + "type": "string", + "example": "02050" }, "id_doc_country": { + "type": "string", "enum": [ "AF", "AL", @@ -20706,820 +12091,5556 @@ "ZW", "AX" ], - "example": "BR", - "type": "string" - }, - "id_doc_front_file": { - "description": "Only image files are accepted (.jpg, .jpeg, .png)", - "type": [ - "string", - "null" - ] + "example": "BR" }, "id_doc_type": { + "type": "string", "enum": [ "PASSPORT", "ID_CARD", "DRIVERS" ], - "example": "PASSPORT", - "type": "string" + "example": "PASSPORT" }, - "instance_id": { - "example": "in_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" + "id_doc_front_file": { + "type": [ + "string", + "null" + ], + "description": "Only image files are accepted (.jpg, .jpeg, .png)" }, - "last_name": { - "example": "Doe", - "minLength": 1, - "type": "string" + "id_doc_back_file": { + "type": [ + "string", + "null" + ], + "description": "Only image files are accepted (.jpg, .jpeg, .png)" + }, + "proof_of_address_doc_type": { + "type": [ + "string", + "null" + ], + "enum": [ + "UTILITY_BILL", + "BANK_STATEMENT", + "RENTAL_AGREEMENT", + "TAX_DOCUMENT", + "GOVERNMENT_CORRESPONDENCE" + ], + "example": "UTILITY_BILL" + }, + "proof_of_address_doc_file": { + "type": [ + "string", + "null" + ], + "description": "Please upload one document that serve as proof of address, this needs to be the same address as the one provided above. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB." }, "ownership_percentage": { - "description": "Ownership percentage of the beneficial owner (0-100)", - "example": 25, - "maximum": 100, - "minimum": 0, "type": [ "integer", "null" - ] + ], + "minimum": 0, + "maximum": 100, + "description": "Ownership percentage of the beneficial owner (0-100)", + "example": 25 }, - "postal_code": { - "example": "02050", + "title": { + "type": [ + "string", + "null" + ], + "maxLength": 128, + "description": "Job title of the owner", + "example": "CEO" + }, + "tax_type": { + "type": [ + "string", + "null" + ], + "enum": [ + "SSN", + "ITIN" + ], + "description": "Tax identifier type. Mandatory when country is US; must be SSN or ITIN.", + "example": "SSN" + } + } + }, + "description": "Customer owners", + "example": [ + { + "id": "ub_000000000000", + "first_name": "John", + "last_name": "Doe", + "address_line_1": "738 Plain St", + "address_line_2": "Building 22", + "city": "Marshfield", + "state_province_region": "MA", + "country": "US", + "postal_code": "02050", + "id_doc_country": "BR", + "id_doc_type": "PASSPORT", + "id_doc_front_file": "https://example.com/image.png", + "id_doc_back_file": "https://example.com/image.png" + } + ] + }, + "incorporation_doc_file": { + "type": [ + "string", + "null" + ], + "description": "Please upload your articles of incorporation below. The articles of incorporation or a certificate of incorporation usually includes information like the company name, business purpose, number of shares offered, value of shares, etc. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", + "example": "https://example.com/image.png" + }, + "proof_of_ownership_doc_file": { + "type": [ + "string", + "null" + ], + "description": "Please upload your proof of ownership below. This document usually includes information like the shareholders names and percentages. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", + "example": "https://example.com/image.png" + }, + "source_of_funds_doc_type": { + "type": [ + "string", + "null" + ], + "enum": [ + "business_income", + "gambling_proceeds", + "gifts", + "government_benefits", + "inheritance", + "investment_loans", + "pension_retirement", + "salary", + "sale_of_assets_real_estate", + "savings", + "esops", + "investment_proceeds", + "someone_else_funds" + ], + "example": "business_income" + }, + "source_of_funds_doc_file": { + "type": [ + "string", + "null" + ], + "example": "https://example.com/image.png" + }, + "selfie_file": { + "type": [ + "string", + "null" + ], + "description": "Only image files are accepted (.jpg, .jpeg, .png)", + "example": "https://example.com/image.png" + }, + "purpose_of_transactions": { + "type": [ + "string", + "null" + ], + "enum": [ + "business_transactions", + "charitable_donations", + "investment_purposes", + "payments_to_friends_or_family_abroad", + "personal_or_living_expenses", + "protect_wealth", + "purchase_good_and_services", + "receive_payment_for_freelancing", + "receive_salary", + "other" + ], + "example": "business_transactions" + }, + "purpose_of_transactions_explanation": { + "type": [ + "string", + "null" + ], + "example": "I am a business owner and I want to receive payments from my customers" + }, + "is_fbo": { + "type": [ + "boolean", + "null" + ], + "example": false + }, + "account_purpose": { + "type": [ + "string", + "null" + ], + "enum": [ + "charitable_donations", + "ecommerce_retail_payments", + "investment_purposes", + "business_expenses", + "payments_to_friends_or_family_abroad", + "personal_or_living_expenses", + "protect_wealth", + "purchase_goods_and_services", + "receive_payments_for_goods_and_services", + "tax_optimization", + "third_party_money_transmission", + "payroll", + "treasury_management", + "other" + ], + "example": "treasury_management" + }, + "account_purpose_other": { + "type": [ + "string", + "null" + ], + "maxLength": 512, + "description": "Required when account_purpose is \"other\". Max 512 characters.", + "example": "Custom account purpose description" + }, + "business_type": { + "type": [ + "string", + "null" + ], + "enum": [ + "corporation", + "llc", + "partnership", + "sole_proprietorship", + "trust", + "non_profit" + ], + "example": "llc" + }, + "business_description": { + "type": [ + "string", + "null" + ], + "maxLength": 1000, + "example": "Software development company" + }, + "business_industry": { + "type": [ + "string", + "null" + ], + "enum": [ + "111998", + "112120", + "113310", + "115114", + "541211", + "541810", + "541430", + "541715", + "541930", + "561422", + "561311", + "561612", + "561740", + "561730", + "236115", + "236220", + "237310", + "238210", + "811111", + "812111", + "812112", + "532111", + "624410", + "541922", + "811210", + "812199", + "611110", + "611310", + "611410", + "611710", + "211120", + "212114", + "221310", + "562111", + "562920", + "213112", + "522110", + "522210", + "522320", + "523150", + "523940", + "523999", + "524113", + "813110", + "813211", + "813219", + "551112", + "721110", + "722511", + "722513", + "561510", + "713110", + "713210", + "712110", + "711110", + "711211", + "621111", + "621210", + "622110", + "623110", + "621511", + "623220", + "541940", + "621399", + "621910", + "541110", + "311421", + "337121", + "322220", + "339920", + "334210", + "339930", + "312130", + "334111", + "334118", + "325412", + "339112", + "336110", + "336390", + "315990", + "313110", + "339910", + "516120", + "513130", + "512250", + "519130", + "711410", + "711510", + "531110", + "531120", + "531130", + "531190", + "531210", + "531311", + "531312", + "531320", + "531390", + "454110", + "445110", + "455110", + "457110", + "449210", + "444110", + "459210", + "459120", + "445320", + "458110", + "458210", + "458310", + "455219", + "424210", + "456110", + "446120", + "541511", + "541512", + "541519", + "518210", + "511210", + "517111", + "517112", + "517410", + "481111", + "483111", + "485210", + "488510", + "484121", + "493110", + "423430", + "423690", + "423110", + "423830", + "423840", + "423510", + "424690", + "424990", + "424410", + "424480", + "423940", + "541611", + "541618", + "541330", + "541990", + "541214", + "561499" + ], + "example": "541511" + }, + "estimated_annual_revenue": { + "type": [ + "string", + "null" + ], + "enum": [ + "0_99999", + "100000_999999", + "1000000_9999999", + "10000000_49999999", + "50000000_249999999", + "250000000_plus" + ], + "example": "1000000_9999999" + }, + "source_of_wealth": { + "type": [ + "string", + "null" + ], + "enum": [ + "business_dividends_or_profits", + "investments", + "asset_sales", + "client_investor_contributions", + "gambling", + "charitable_contributions", + "inheritance", + "affiliate_or_royalty_income" + ], + "example": "affiliate_or_royalty_income" + }, + "publicly_traded": { + "type": [ + "boolean", + "null" + ], + "example": false + }, + "occupation": { + "type": [ + "string", + "null" + ], + "maxLength": 255, + "example": "Software Engineer" + }, + "external_id": { + "type": [ + "string", + "null" + ], + "example": "your_company_external_id" + }, + "instance_id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "in_000000000000" + }, + "tos_id": { + "type": [ + "string", + "null" + ], + "minLength": 15, + "maxLength": 15, + "example": "to_000000000000" + }, + "aml_status": { + "type": [ + "string", + "null" + ], + "enum": [ + "clear", + "hit", + "error" + ], + "description": "AML screening status from SEON. null = not yet screened.", + "example": "clear" + }, + "aml_hits": { + "type": [ + "object", + "null" + ], + "properties": { + "has_sanction_match": { + "type": "boolean", + "default": false + }, + "has_pep_match": { + "type": "boolean", + "default": false + }, + "has_watchlist_match": { + "type": "boolean", + "default": false + }, + "has_crimelist_match": { + "type": "boolean", + "default": false + }, + "has_adversemedia_match": { + "type": "boolean", + "default": false + } + }, + "description": "AML screening match details from SEON.", + "example": { + "has_sanction_match": false, + "has_pep_match": false, + "has_watchlist_match": false, + "has_crimelist_match": false, + "has_adversemedia_match": false + } + }, + "created_at": { + "type": [ + "string", + "null" + ], + "format": "date-time", + "example": "2021-01-01T00:00:00Z" + }, + "updated_at": { + "type": [ + "string", + "null" + ], + "format": "date-time", + "example": "2021-01-01T00:00:00Z" + }, + "limit": { + "type": "object", + "properties": { + "per_transaction": { + "type": [ + "number", + "null" + ], + "example": 100000 + }, + "daily": { + "type": [ + "number", + "null" + ], + "example": 200000 + }, + "monthly": { + "type": [ + "number", + "null" + ], + "example": 1000000 + } + }, + "required": [ + "per_transaction", + "daily", + "monthly" + ] + }, + "is_tos_accepted": { + "type": [ + "boolean", + "null" + ] + }, + "additional_info": { + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/components/schemas/AdditionalInfoItem" + }, + "description": "Optional extra documents or notes for this customer. `label` is a known category, `value` is either a URL to upload or a free-text description. Any URLs are downloaded and re-hosted on Blindpay storage before being stored.", + "example": [ + { + "label": "EIN_LETTER", + "value": "https://example.com/ein.pdf" + }, + { + "label": "FLOW_OF_FUNDS", + "value": "Funds originate from US payroll deposits, forwarded weekly to customer." + } + ] + } + }, + "required": [ + "webhook_event", + "id", + "customer_id", + "type", + "kyc_type", + "kyc_status", + "email", + "country", + "instance_id", + "limit" + ] + }, + "CustomerDeleteWebhookOut": { + "type": "object", + "properties": { + "webhook_event": { + "type": "string", + "enum": [ + "customer.delete" + ] + }, + "id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "re_000000000000" + }, + "customer_id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "re_000000000000" + }, + "instance_id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "in_000000000000" + }, + "type": { + "type": "string", + "enum": [ + "individual", + "business" + ], + "example": "individual" + }, + "kyc_type": { + "type": "string", + "enum": [ + "light", + "standard", + "enhanced" + ], + "example": "standard" + }, + "kyc_status": { + "type": "string", + "enum": [ + "verifying", + "approved", + "rejected", + "deprecated", + "pending_review", + "awaiting_contract", + "compliance_request", + "approved_rfi" + ], + "example": "verifying" + }, + "deleted_at": { + "type": "string", + "format": "date-time" + } + }, + "required": [ + "webhook_event", + "id", + "customer_id", + "instance_id", + "type", + "kyc_type", + "kyc_status", + "deleted_at" + ] + }, + "TosAcceptWebhookOut": { + "type": "object", + "properties": { + "webhook_event": { + "type": "string", + "enum": [ + "tos.accept" + ] + }, + "tos_id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "to_000000000000" + }, + "idempotency_key": { + "type": "string", + "format": "uuid", + "example": "123e4567-e89b-12d3-a456-426614174000" + }, + "customer_id": { + "type": [ + "string", + "null" + ], + "minLength": 15, + "maxLength": 15, + "example": "re_000000000000" + }, + "version": { + "type": [ + "string", + "null" + ], + "enum": [ + "1.0.0", + "1.0.1" + ], + "example": "1.0.0" + } + }, + "required": [ + "webhook_event", + "tos_id", + "idempotency_key" + ] + }, + "CircleTransactionWebhookOut": { + "type": "object", + "properties": { + "notificationType": { + "type": "string", + "enum": [ + "transactions.outbound", + "transactions.inbound" + ] + }, + "notification": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "refId": { + "type": [ + "string", + "null" + ] + }, + "state": { + "type": "string", + "enum": [ + "INITIATED", + "PENDING_RISK_SCREENING", + "CLEARED", + "QUEUED", + "SENT", + "STUCK", + "CONFIRMED", + "COMPLETE", + "DENIED", + "FAILED", + "CANCELLED", + "ACCELERATED" + ] + }, + "errorReason": { + "type": [ + "string", + "null" + ] + }, + "transactionType": { + "type": "string", + "enum": [ + "OUTBOUND", + "INBOUND" + ] + }, + "txHash": { + "type": [ + "string", + "null" + ] + }, + "blockchain": { + "type": "string", + "enum": [ + "ETH", + "ETH-SEPOLIA", + "AVAX", + "AVAX-FUJI", + "MATIC", + "MATIC-AMOY", + "SOL", + "SOL-DEVNET", + "ARB", + "ARB-SEPOLIA", + "BASE", + "BASE-SEPOLIA", + "NEAR", + "NEAR-TESTNET", + "EVM", + "EVM-TESTNET", + "UNI-SEPOLIA" + ] + }, + "tokenId": { + "type": "string" + }, + "amounts": { + "type": "array", + "items": { "type": "string" + } + }, + "walletId": { + "type": "string" + }, + "sourceAddress": { + "type": [ + "string", + "null" + ] + }, + "destinationAddress": { + "type": [ + "string", + "null" + ] + }, + "createDate": { + "type": [ + "string", + "null" + ] + }, + "updateDate": { + "type": [ + "string", + "null" + ] + }, + "networkFeeInUSD": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id", + "state", + "transactionType", + "blockchain", + "tokenId", + "amounts", + "walletId" + ] + }, + "timestamp": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "notificationType", + "notification" + ] + }, + "CreateTransferSchemaOut": { + "type": "object", + "properties": { + "id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "pa_000000000000" + }, + "status": { + "type": "string", + "enum": [ + "processing", + "failed", + "refunded", + "completed" + ], + "description": "Transfer general status", + "example": "processing" + }, + "tracking_bridge_swap": { + "type": "object", + "properties": { + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Complete step", + "example": "on_hold" + }, + "transaction_hash": { + "type": [ + "string", + "null" + ], + "description": "Complete transaction hash", + "example": "0x123...890" + }, + "gas_fee": { + "type": [ + "string", + "null" + ], + "description": "Gas fee related to transaction", + "example": "100" + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "description": "Complete completed date", + "example": "2011-10-05T14:48:00.000Z" + }, + "error_message": { + "type": [ + "string", + "null" + ], + "example": "Gas fee is too low" + } + }, + "required": [ + "step" + ] + }, + "tracking_complete": { + "type": "object", + "properties": { + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Complete step", + "example": "on_hold" + }, + "transaction_hash": { + "type": [ + "string", + "null" + ], + "description": "Complete transaction hash", + "example": "0x123...890" + }, + "gas_fee": { + "type": [ + "string", + "null" + ], + "description": "Gas fee related to transaction", + "example": "100" + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "description": "Complete completed date", + "example": "2011-10-05T14:48:00.000Z" + }, + "error_message": { + "type": [ + "string", + "null" + ], + "example": "Gas fee is too low" + } + }, + "required": [ + "step" + ] + }, + "tracking_paymaster": { + "type": "object", + "properties": { + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Complete step", + "example": "on_hold" + }, + "transaction_hash": { + "type": [ + "string", + "null" + ], + "description": "Complete transaction hash", + "example": "0x123...890" + }, + "gas_fee": { + "type": [ + "string", + "null" + ], + "description": "Gas fee related to transaction", + "example": "100" + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "description": "Complete completed date", + "example": "2011-10-05T14:48:00.000Z" + }, + "error_message": { + "type": [ + "string", + "null" + ], + "example": "Gas fee is too low" + } + }, + "required": [ + "step" + ] + }, + "tracking_transaction_monitoring": { + "type": "object", + "properties": { + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Transaction monitoring step", + "example": "processing" + }, + "blockchain_screening": { + "type": [ + "number", + "null" + ], + "minimum": 0, + "maximum": 100, + "description": "Blindpay screening step", + "example": 1 + }, + "risk_score": { + "type": [ + "number", + "null" + ], + "minimum": 0, + "maximum": 100, + "description": "Risk score", + "example": 1 + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "description": "Transfer transaction completed date", + "example": "2011-10-05T14:48:00.000Z" + } + }, + "required": [ + "step" + ] + } + }, + "required": [ + "id", + "status", + "tracking_bridge_swap", + "tracking_complete", + "tracking_paymaster", + "tracking_transaction_monitoring" + ] + }, + "WalletTokenOut": { + "type": "object", + "properties": { + "address": { + "type": "string" + }, + "id": { + "type": "string" + }, + "symbol": { + "type": "string", + "enum": [ + "USDC", + "USDT", + "USDB" + ] + }, + "amount": { + "type": "number" + } + }, + "required": [ + "address", + "id", + "symbol", + "amount" + ] + }, + "WalletInboundSchemaOut": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "address": { + "type": "string" + }, + "network": { + "type": "string", + "enum": [ + "base", + "sepolia", + "arbitrum_sepolia", + "base_sepolia", + "arbitrum", + "polygon", + "polygon_amoy", + "ethereum", + "stellar", + "stellar_testnet", + "tron", + "solana", + "solana_devnet" + ] + }, + "token": { + "$ref": "#/components/schemas/WalletTokenOut" + } + }, + "required": [ + "id", + "address", + "network", + "token" + ] + }, + "Success": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + } + }, + "required": [ + "success" + ] + }, + "Error": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "code": { + "type": "string", + "description": "Stable error code. See the Error codes section for the full list.", + "example": "PAYOUTS_INSUFFICIENT_BALANCE" + }, + "message": { + "type": "string", + "description": "Legacy machine-readable message. Prefer `code` for programmatic handling.", + "example": "not_enough_balance" + }, + "description": { + "type": "string", + "description": "Human-readable explanation, safe to show to end users.", + "example": "There is not enough balance to complete this payout. Fund your balance and try again." + }, + "errors": { + "type": "array", + "items": { + "type": "string" + }, + "example": [ + "Bad Request" + ] + }, + "trace_id": { + "type": "string", + "description": "Request trace ID. Include it when contacting support.", + "example": "0af7651916cd43dd8448eb211c80319c" + } + }, + "required": [ + "success", + "message", + "errors" + ] + }, + "UploadOut": { + "type": "object", + "properties": { + "file_url": { + "type": "string" + } + }, + "required": [ + "file_url" + ] + }, + "UploadIn": { + "type": "object", + "properties": { + "file": {}, + "bucket": { + "type": "string", + "enum": [ + "avatar", + "onboarding", + "limit_increase" + ] + } + }, + "required": [ + "file", + "bucket" + ] + }, + "UploadAnalyzeOut": { + "type": "object", + "properties": { + "approval_rate": { + "type": "string", + "enum": [ + "low", + "medium", + "high" + ], + "description": "Confidence that the document should be approved.", + "example": "high" + }, + "description": { + "type": "string", + "description": "Short explanation of why the document should or should not be approved." + } + }, + "required": [ + "approval_rate", + "description" + ] + }, + "UploadAnalyzeIn": { + "type": "object", + "properties": { + "file": { + "description": "The document to analyze (PDF, JPG, or PNG).", + "example": {} + }, + "type": { + "type": "string", + "enum": [ + "proof_of_address", + "identity_document", + "incorporation_document", + "proof_of_ownership", + "source_of_funds", + "selfie", + "bank_statement", + "tax_return", + "proof_of_income", + "financial_statement", + "invoice", + "transaction_document", + "passport", + "pay_stub", + "employment_letter", + "investment", + "crypto_exchange", + "blockchain_wallet", + "contract", + "accounts_receivable", + "merchant_processor", + "shareholder_loan" + ], + "description": "The kind of document being analyzed. Selects the rule set used for the analysis.", + "example": "proof_of_address" + }, + "metadata": { + "type": "string", + "description": "Optional JSON object of expected values to verify against the document (e.g. {\"full_name\":\"Jane Doe\",\"date_of_birth\":\"1990-01-01\"}). When provided, a clear mismatch caps the rating at low.", + "example": "{\"full_name\":\"Jane Doe\"}" + } + }, + "required": [ + "file", + "type" + ] + }, + "QuoteOut": { + "type": "object", + "properties": { + "id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "qu_000000000000" + }, + "expires_at": { + "type": [ + "number", + "null" + ], + "description": "Epoch unix timestamp that represents the final datetime to transaction be received on blockchain. For SEPA payouts this may be shorter than the default 5 minute window if Circle CPN returns an earlier expiry.", + "example": 1712958191 + }, + "commercial_quotation": { + "type": [ + "number", + "null" + ], + "description": "1 USD = 4.95 BRL", + "example": 495 + }, + "blindpay_quotation": { + "type": [ + "number", + "null" + ], + "description": "1 USD = 4.85 BRL (commercial quotation - (blindpay taxes))", + "example": 485 + }, + "receiver_amount": { + "type": [ + "number", + "null" + ], + "description": "52.40 BRL", + "example": 5240 + }, + "sender_amount": { + "type": [ + "number", + "null" + ], + "description": "10.10 USDC needs to be sent to bank account blockchain address", + "example": 1010 + }, + "partner_fee_amount": { + "type": [ + "number", + "null" + ], + "default": 0, + "description": "1.5 USDC", + "example": 150 + }, + "flat_fee": { + "type": [ + "number", + "null" + ], + "description": "0.5 USDC", + "example": 50 + }, + "billing_fee_amount": { + "type": [ + "number", + "null" + ], + "description": "Billing fee in cents (charged via invoice at the end of the month)", + "example": 50 + }, + "contract": { + "type": [ + "object", + "null" + ], + "properties": { + "abi": { + "type": "array", + "items": { + "type": "object", + "properties": {}, + "description": "Contract abi related to the network you send in request params", + "example": {} + } + }, + "address": { + "type": "string", + "description": "Token address related to the network you send in request params", + "example": "0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238" + }, + "functionName": { + "type": "string", + "enum": [ + "approve" + ], + "description": "Function name from ERC20 smart contract", + "example": "approve" + }, + "blindpayContractAddress": { + "type": "string", + "description": "Blindpay contract address", + "example": "0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238" + }, + "amount": { + "type": "string", + "description": "Amount to approve with correct decimal places", + "example": "1000000000000000000" + }, + "network": { + "type": "object", + "properties": { + "name": { + "type": "string", + "example": "Ethereum" + }, + "chainId": { + "type": "number", + "example": 1 + } }, - "proof_of_address_doc_file": { - "description": "Please upload one document that serve as proof of address, this needs to be the same address as the one provided above. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", - "type": [ - "string", - "null" - ] + "required": [ + "name", + "chainId" + ] + } + }, + "required": [ + "abi", + "address", + "functionName", + "blindpayContractAddress", + "amount", + "network" + ] + }, + "customer_local_amount": { + "type": [ + "number", + "null" + ], + "description": "Estimated amount in the currency of recipient bank account", + "example": 1000 + }, + "description": { + "type": [ + "string", + "null" + ], + "maxLength": 128, + "example": "Memo code or description, only works with USD and BRL" + } + }, + "required": [ + "id", + "expires_at", + "commercial_quotation", + "blindpay_quotation", + "receiver_amount", + "sender_amount" + ] + }, + "QuoteIn": { + "type": "object", + "properties": { + "bank_account_id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "ba_000000000000" + }, + "currency_type": { + "type": "string", + "enum": [ + "sender", + "receiver" + ], + "description": "", + "example": "sender" + }, + "cover_fees": { + "type": [ + "boolean", + "null" + ], + "description": "If true, the sender will cover the fees. If false, the customer will cover the fees.", + "example": true + }, + "request_amount": { + "type": "integer", + "minimum": 500, + "description": "1000 represents 10.00, 2050 represents 20.50", + "example": 1000 + }, + "network": { + "type": "string", + "enum": [ + "base", + "sepolia", + "arbitrum_sepolia", + "base_sepolia", + "arbitrum", + "polygon", + "polygon_amoy", + "ethereum", + "stellar", + "stellar_testnet", + "tron", + "solana", + "solana_devnet" + ], + "description": "Check blindpay available networks", + "example": "sepolia" + }, + "token": { + "type": "string", + "enum": [ + "USDC", + "USDT", + "USDB" + ], + "description": "Check blindpay available tokens", + "example": "USDC" + }, + "description": { + "type": [ + "string", + "null" + ], + "maxLength": 128, + "example": "Memo code or description, only works with USD and BRL" + }, + "partner_fee_id": { + "type": [ + "string", + "null" + ], + "minLength": 15, + "maxLength": 15, + "example": "pf_000000000000" + }, + "refund_wallet_address": { + "type": [ + "string", + "null" + ], + "description": "Optional wallet address to receive the refund if this payout fails or is refunded. Must be a valid address on the quote network. When omitted, refunds are sent back to the sender wallet address.", + "example": "0xDD6a3aD0949396e57C7738ba8FC1A46A5a1C372C" + } + }, + "required": [ + "bank_account_id", + "currency_type", + "request_amount", + "network", + "token" + ] + }, + "PayoutOut": { + "type": "object", + "properties": { + "customer_id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "description": "Customer id", + "example": "re_000000000000" + }, + "id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "pa_000000000000" + }, + "status": { + "type": "string", + "enum": [ + "processing", + "failed", + "refunded", + "completed", + "on_hold" + ], + "description": "Payout general status", + "example": "processing" + }, + "sender_wallet_address": { + "type": "string", + "description": "Payout wallet address", + "example": "0x123...890" + }, + "signed_transaction": { + "type": [ + "string", + "null" + ], + "description": "Signed transaction", + "example": "AAA...Zey8y0A" + }, + "quote_id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "qu_000000000000" + }, + "instance_id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "in_000000000000" + }, + "partner_fee": { + "type": "integer", + "minimum": 0, + "default": 0, + "description": "Payout partner fee amount in cents (can be negative for rebates)", + "example": -25000 + }, + "tracking_transaction": { + "type": "object", + "properties": { + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Payout transaction step", + "example": "processing" + }, + "status": { + "type": [ + "string", + "null" + ], + "enum": [ + "failed", + "found" + ], + "description": "Payout transaction status", + "example": "failed" + }, + "transaction_hash": { + "type": [ + "string", + "null" + ], + "description": "Blockchain transaction hash", + "example": "0x123...890" + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "description": "Payout transaction completed date", + "example": "2011-10-05T14:48:00.000Z" + }, + "provider_transaction_id": { + "type": [ + "string", + "null" + ], + "description": "Provider-side handle for the on-chain leg (e.g. Circle CPN payment id).", + "example": "67c12eae-b7bc-31cc-a5ef-623dcea82346" + }, + "provider_error_reason": { + "type": [ + "string", + "null" + ], + "description": "Provider error reason when the crypto collection fails (e.g. erc20_allowance_insufficient, ESTIMATION_ERROR: execution reverted)", + "example": "erc20_allowance_insufficient" + }, + "ledger_in_transaction_id": { + "type": [ + "string", + "null" + ], + "description": "Ledger transaction ID for the IN (crypto deposit) transaction" + }, + "ledger_out_transaction_id": { + "type": [ + "string", + "null" + ], + "description": "Ledger transaction ID for the OUT (fiat withdrawal) transaction" + } + }, + "required": [ + "step" + ] + }, + "tracking_payment": { + "type": "object", + "properties": { + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Payment step", + "example": "on_hold" + }, + "provider_name": { + "type": [ + "string", + "null" + ], + "enum": [ + "Nvio Pagos", + "Brex", + "Stark Bank", + "JPMorgan Chase", + "HSBC", + "Inter", + "JP Morgan Chase", + "Bitso", + "Citi", + "CFSB", + "Triple A Technologies", + "Portage Bank" + ], + "description": "Payment provider name", + "example": "HSBC" + }, + "provider_integration": { + "type": [ + "string", + "null" + ], + "enum": [ + "veem", + "zenus", + "checkbook", + "onemoney", + "bitso", + "starkbank", + "triplea", + "infinitus" + ], + "description": "Machine-readable integration that executed the fiat leg. Unlike provider_name (a client-facing bank label), this uniquely identifies the integration — e.g. zenus vs checkbook, which share the \"JPMorgan Chase\" label.", + "example": "zenus" + }, + "provider_transaction_id": { + "type": [ + "string", + "null" + ], + "description": "Payment provider transaction id", + "example": "0x123...890" + }, + "provider_status": { + "type": [ + "string", + "null" + ], + "enum": [ + "canceled", + "failed", + "returned", + "sent" + ], + "description": "Payment provider status", + "example": "canceled" + }, + "provider_error_reason": { + "type": [ + "string", + "null" + ], + "description": "Provider error reason when payment fails (e.g. invalid_key, wrong_parameters)", + "example": "invalid_key" + }, + "provider_uetr": { + "type": [ + "string", + "null" + ], + "maxLength": 120, + "description": "Unique end-to-end transaction reference (UETR). Populated once the wire is confirmed by the network; null while the payment is in flight or when the rail does not expose it (e.g. ACH).", + "example": "37d10eff-d450-4aba-a5d4-e3978f5a3343" + }, + "provider_imad": { + "type": [ + "string", + "null" + ], + "maxLength": 120, + "description": "Fed Input Message Accountability Data (IMAD). Domestic Fedwire payments only; null on ACH and SWIFT.", + "example": "20260526MMQFMP2M008120" + }, + "provider_reference": { + "type": [ + "string", + "null" + ], + "maxLength": 120, + "description": "Provider (JPMorgan/Zenus) payment reference captured from the ACCOUNT.ACCOUNT booking webhook (Zenus contractSource.sourceRef). Present for some ACH/wire payouts; a bank-side reference, not the formal ACH network trace number.", + "example": "2084734238TC" + }, + "provider_clearing_system": { + "type": [ + "string", + "null" + ], + "maxLength": 40, + "description": "Clearing system that processed the payment (e.g. FED, CHIPS, ACH, SWIFT).", + "example": "FED" + }, + "recipient_name": { + "type": [ + "string", + "null" + ], + "description": "Recipient name", + "example": "John Doe" + }, + "recipient_tax_id": { + "type": [ + "string", + "null" + ], + "description": "Recipient tax id", + "example": "123.456.789-10" + }, + "recipient_bank_code": { + "type": [ + "string", + "null" + ], + "description": "Recipient bank code", + "example": "00416968" + }, + "recipient_branch_code": { + "type": [ + "string", + "null" + ], + "description": "Recipient branch code", + "example": "0001" + }, + "recipient_account_number": { + "type": [ + "string", + "null" + ], + "description": "Recipient account number", + "example": "1234567890" + }, + "recipient_account_type": { + "type": [ + "string", + "null" + ], + "description": "Recipient account type", + "example": "checking" + }, + "coelsa_id": { + "type": [ + "string", + "null" + ], + "description": "COELSA transaction reference ID for ARS transfers (Argentine national banking system)", + "example": "1LMP68NKV46DRDYK2R7OEV" + }, + "end_to_end_id": { + "type": [ + "string", + "null" + ], + "description": "BACEN Pix end-to-end transaction ID (govt Pix ID)", + "example": "E20018183202603311320vm6ALFpJpsS" + }, + "estimated_time_of_arrival": { + "type": [ + "string", + "null" + ], + "enum": [ + "5_min", + "5_30_min", + "30_min", + "2_hours", + "1_business_day", + "2_business_days", + "5_business_days" + ], + "description": "Estimated time of arrival", + "example": "5_min" + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "description": "Payment completed date", + "example": "2011-10-05T14:48:00.000Z" + } + }, + "required": [ + "step" + ] + }, + "tracking_liquidity": { + "type": [ + "object", + "null" + ], + "properties": { + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Payout liquidity step", + "example": "processing" + }, + "provider_transaction_id": { + "type": [ + "string", + "null" + ], + "description": "Payment provider transaction id", + "example": "0x123...890" + }, + "provider_status": { + "type": [ + "string", + "null" + ], + "enum": [ + "deposited", + "converted", + "withdrawn" + ], + "description": "Payment provider status", + "example": "deposited" + }, + "estimated_time_of_arrival": { + "type": [ + "string", + "null" + ], + "enum": [ + "5_min", + "5_30_min", + "30_min", + "2_hours", + "1_business_day", + "2_business_days", + "5_business_days" + ], + "description": "Estimated time of arrival", + "example": "1_business_day" + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "description": "Payout transaction completed date", + "example": "2011-10-05T14:48:00.000Z" + } + }, + "required": [ + "step" + ] + }, + "tracking_complete": { + "type": "object", + "properties": { + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Complete step", + "example": "on_hold" + }, + "status": { + "type": [ + "string", + "null" + ], + "enum": [ + "tokens_refunded", + "paid" + ], + "description": "Complete status", + "example": "tokens_refunded" + }, + "refund_reason": { + "type": [ + "string", + "null" + ], + "description": "Reason for refund when tokens are returned to sender", + "example": "fiat_payment_failed" + }, + "transaction_hash": { + "type": [ + "string", + "null" + ], + "description": "Complete transaction hash", + "example": "0x123...890" + }, + "provider_transaction_id": { + "type": [ + "string", + "null" + ], + "description": "Provider-side handle for the refund transaction (e.g. Circle transaction id)", + "example": "67c12eae-b7bc-31cc-a5ef-623dcea82346" + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "description": "Complete completed date", + "example": "2011-10-05T14:48:00.000Z" + } + }, + "required": [ + "step" + ] + }, + "tracking_documents": { + "type": [ + "object", + "null" + ], + "properties": { + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Documents step", + "example": "processing" + }, + "status": { + "type": [ + "string", + "null" + ], + "enum": [ + "waiting_documents", + "compliance_reviewing" + ], + "description": "Documents status", + "example": "waiting_documents" + }, + "reviewed_by": { + "type": [ + "string", + "null" + ], + "description": "Reviewer email/name", + "example": "compliance@example.com" + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "description": "Documents completed date", + "example": "2011-10-05T14:48:00.000Z" + } + }, + "required": [ + "step" + ] + }, + "jpm_track_data": { + "type": [ + "object", + "null" + ], + "properties": { + "jpm_trace_number": { + "type": [ + "string", + "null" + ], + "description": "JPM trace number", + "example": "317802200000565" + }, + "jpm_processing_status": { + "type": [ + "string", + "null" + ], + "description": "JPM processing status", + "example": "Completed" + }, + "extended_tracking_status": { + "type": [ + "string", + "null" + ], + "description": "Extended tracking status from JPM", + "example": "Delivered to next bank" + }, + "jpm_reference_number": { + "type": [ + "string", + "null" + ], + "description": "JPM reference number", + "example": "9483400364JO" + }, + "uetr": { + "type": [ + "string", + "null" + ], + "description": "Unique end-to-end transaction reference", + "example": "4ad5f98a-5279-410a-99a2-39a729aceb35" + }, + "fed_imad": { + "type": [ + "string", + "null" + ], + "description": "Fed IMAD number (Wire payments only)", + "example": "1230MMQFMP2L034796" + }, + "payment_date": { + "type": [ + "string", + "null" + ], + "description": "Payment date", + "example": "Dec 30 2025" + }, + "payment_amount": { + "type": [ + "string", + "null" + ], + "description": "Payment amount", + "example": "3,914.00" + }, + "payment_currency": { + "type": [ + "string", + "null" + ], + "description": "Payment currency", + "example": "USD" + } + } + }, + "cpn_payment_id": { + "type": [ + "string", + "null" + ], + "description": "Circle CPN payment id", + "example": "f06dbc45-58a4-389f-beb8-581c3fafff3c" + }, + "created_at": { + "type": [ + "string", + "null" + ], + "format": "date-time", + "example": "2021-01-01T00:00:00Z" + }, + "updated_at": { + "type": [ + "string", + "null" + ], + "format": "date-time", + "example": "2021-01-01T00:00:00Z" + }, + "image_url": { + "type": [ + "string", + "null" + ], + "format": "uri", + "example": "https://example.com/image.png" + }, + "first_name": { + "type": [ + "string", + "null" + ], + "example": "John" + }, + "last_name": { + "type": [ + "string", + "null" + ], + "example": "Doe" + }, + "legal_name": { + "type": [ + "string", + "null" + ], + "example": "Company Name Inc." + }, + "network": { + "type": "string", + "enum": [ + "base", + "sepolia", + "arbitrum_sepolia", + "base_sepolia", + "arbitrum", + "polygon", + "polygon_amoy", + "ethereum", + "stellar", + "stellar_testnet", + "tron", + "solana", + "solana_devnet" + ], + "description": "Check blindpay available networks", + "example": "sepolia" + }, + "token": { + "type": "string", + "enum": [ + "USDC", + "USDT", + "USDB" + ], + "description": "Check blindpay available tokens", + "example": "USDC" + }, + "description": { + "type": [ + "string", + "null" + ], + "maxLength": 128, + "example": "Memo code or description, only works with USD and BRL" + }, + "sender_amount": { + "type": [ + "number", + "null" + ], + "description": "10.10 USDC needs to be sent to bank account blockchain address", + "example": 1010 + }, + "receiver_amount": { + "type": [ + "number", + "null" + ], + "description": "52.40 BRL", + "example": 5240 + }, + "partner_fee_id": { + "type": [ + "string", + "null" + ], + "minLength": 15, + "maxLength": 15, + "example": "pf_000000000000" + }, + "partner_fee_amount": { + "type": [ + "number", + "null" + ], + "default": 0, + "description": "1.5 USDC", + "example": 150 + }, + "commercial_quotation": { + "type": [ + "number", + "null" + ], + "description": "1 USD = 4.95 BRL", + "example": 495 + }, + "blindpay_quotation": { + "type": [ + "number", + "null" + ], + "description": "1 USD = 4.85 BRL (commercial quotation - (blindpay taxes))", + "example": 485 + }, + "total_fee_amount": { + "type": [ + "number", + "null" + ], + "default": 0, + "description": "1.5 USDC", + "example": 1.5 + }, + "customer_local_amount": { + "type": [ + "number", + "null" + ], + "description": "Estimated amount in the currency of recipient bank account", + "example": 1000 + }, + "currency": { + "type": "string", + "enum": [ + "BRL", + "USD", + "MXN", + "COP", + "ARS", + "EUR" + ], + "description": "ISO 4271 currency code", + "example": "BRL" + }, + "transaction_fee_amount": { + "type": [ + "number", + "null" + ], + "description": "Transaction fee in cents (percentage-based fee)", + "example": 100 + }, + "billing_fee_amount": { + "type": [ + "number", + "null" + ], + "description": "Billing fee in cents (charged via invoice at the end of the month)", + "example": 50 + }, + "transaction_document_file": { + "type": [ + "string", + "null" + ], + "format": "uri", + "example": "https://example.com/image.png" + }, + "transaction_document_type": { + "type": [ + "string", + "null" + ], + "enum": [ + "invoice", + "purchase_order", + "delivery_slip", + "contract", + "customs_declaration", + "bill_of_lading", + "others" + ], + "example": "invoice" + }, + "transaction_document_id": { + "type": [ + "string", + "null" + ], + "maxLength": 512, + "example": "1234567890" + }, + "name": { + "type": "string", + "example": "Bank Account Name" + }, + "type": { + "type": "string", + "enum": [ + "wire", + "ach", + "pix", + "pix_safe", + "ted", + "spei_bitso", + "transfers_bitso", + "ach_cop_bitso", + "international_swift", + "rtp", + "sepa" + ], + "example": "wire" + }, + "pix_key": { + "type": [ + "string", + "null" + ], + "example": "14947677768" + }, + "pix_safe_bank_code": { + "type": [ + "string", + "null" + ], + "pattern": "^\\d{4,8}$", + "example": "00416968" + }, + "pix_safe_branch_code": { + "type": [ + "string", + "null" + ], + "pattern": "^\\d{4}(-\\d)?$", + "example": "0001" + }, + "pix_safe_cpf_cnpj": { + "type": [ + "string", + "null" + ], + "example": "12345678901" + }, + "ted_bank_code": { + "type": [ + "string", + "null" + ], + "pattern": "^\\d{3,5}$", + "example": "033" + }, + "ted_branch_code": { + "type": [ + "string", + "null" + ], + "pattern": "^\\d{4}(-\\d)?$", + "example": "0001" + }, + "ted_cpf_cnpj": { + "type": [ + "string", + "null" + ], + "example": "12345678901" + }, + "account_number": { + "type": [ + "string", + "null" + ], + "example": "1001001234" + }, + "routing_number": { + "type": [ + "string", + "null" + ], + "example": "012345678" + }, + "country": { + "type": [ + "string", + "null" + ], + "enum": [ + "AF", + "AL", + "DZ", + "AS", + "AD", + "AO", + "AI", + "AQ", + "AG", + "AR", + "AM", + "AW", + "AU", + "AT", + "AZ", + "BS", + "BH", + "BD", + "BB", + "BY", + "BE", + "BZ", + "BJ", + "BM", + "BT", + "BO", + "BQ", + "BA", + "BW", + "BV", + "BR", + "IO", + "BN", + "BG", + "BF", + "BI", + "CV", + "KH", + "CM", + "CA", + "KY", + "CF", + "TD", + "CL", + "CN", + "CX", + "CC", + "CO", + "KM", + "CD", + "CG", + "CK", + "CR", + "HR", + "CU", + "CW", + "CY", + "CZ", + "CI", + "DK", + "DJ", + "DM", + "DO", + "EC", + "EG", + "SV", + "GQ", + "ER", + "EE", + "SZ", + "ET", + "FK", + "FO", + "FJ", + "FI", + "FR", + "GF", + "PF", + "TF", + "GA", + "GM", + "GE", + "DE", + "GH", + "GI", + "GR", + "GL", + "GD", + "GP", + "GU", + "GT", + "GG", + "GN", + "GW", + "GY", + "HT", + "HM", + "VA", + "HN", + "HK", + "HU", + "IS", + "IN", + "ID", + "IR", + "IQ", + "IE", + "IM", + "IL", + "IT", + "JM", + "JP", + "JE", + "JO", + "KZ", + "KE", + "KI", + "KP", + "KR", + "KW", + "KG", + "LA", + "LV", + "LB", + "LS", + "LR", + "LY", + "LI", + "LT", + "LU", + "MO", + "MG", + "MW", + "MY", + "MV", + "ML", + "MT", + "MH", + "MQ", + "MR", + "MU", + "YT", + "MX", + "FM", + "MD", + "MC", + "MN", + "ME", + "MS", + "MA", + "MZ", + "MM", + "NA", + "NR", + "NP", + "NL", + "NC", + "NZ", + "NI", + "NE", + "NG", + "NU", + "NF", + "MP", + "NO", + "OM", + "PK", + "PW", + "PS", + "PA", + "PG", + "PY", + "PE", + "PH", + "PN", + "PL", + "PT", + "PR", + "QA", + "MK", + "RO", + "RU", + "RW", + "RE", + "BL", + "SH", + "KN", + "LC", + "MF", + "PM", + "VC", + "WS", + "SM", + "ST", + "SA", + "SN", + "RS", + "SC", + "SL", + "SG", + "SX", + "SK", + "SI", + "SB", + "SO", + "ZA", + "GS", + "SS", + "ES", + "LK", + "SD", + "SR", + "SJ", + "SE", + "CH", + "SY", + "TW", + "TJ", + "TZ", + "TH", + "TL", + "TG", + "TK", + "TO", + "TT", + "TN", + "TR", + "TM", + "TC", + "TV", + "UG", + "UA", + "AE", + "GB", + "UM", + "US", + "UY", + "UZ", + "VU", + "VE", + "VN", + "VG", + "VI", + "WF", + "EH", + "YE", + "ZM", + "ZW", + "AX" + ], + "example": "US" + }, + "account_class": { + "type": [ + "string", + "null" + ], + "enum": [ + "individual", + "business" + ], + "example": "individual" + }, + "address_line_1": { + "type": [ + "string", + "null" + ], + "example": "Address line 1" + }, + "address_line_2": { + "type": [ + "string", + "null" + ], + "example": "Address line 2" + }, + "city": { + "type": [ + "string", + "null" + ], + "example": "City" + }, + "state_province_region": { + "type": [ + "string", + "null" + ], + "example": "State/Province/Region" + }, + "postal_code": { + "type": [ + "string", + "null" + ], + "example": "Postal code" + }, + "account_type": { + "type": [ + "string", + "null" + ], + "enum": [ + "checking", + "saving" + ], + "example": "checking" + }, + "ach_cop_beneficiary_first_name": { + "type": [ + "string", + "null" + ], + "example": "Fernando" + }, + "ach_cop_bank_account": { + "type": [ + "string", + "null" + ], + "example": "12345678" + }, + "ach_cop_bank_code": { + "type": [ + "string", + "null" + ], + "example": "051" + }, + "ach_cop_beneficiary_last_name": { + "type": [ + "string", + "null" + ], + "example": "Guzman Alarcón" + }, + "ach_cop_document_id": { + "type": [ + "string", + "null" + ], + "example": "1661105408" + }, + "ach_cop_document_type": { + "type": [ + "string", + "null" + ], + "enum": [ + "CC", + "CE", + "NIT", + "PASS", + "PEP" + ], + "description": "CC - Cédula de Ciudadanía; CE - Cédula de Extranjería; NIT - Número de Identificación Tributaria; PASS - Passport; PEP - Permiso Especial de Permanencia", + "example": "CC" + }, + "ach_cop_email": { + "type": [ + "string", + "null" + ], + "example": "fernando.guzman@gmail.com" + }, + "beneficiary_name": { + "type": [ + "string", + "null" + ], + "maxLength": 128, + "example": "Individual full name or business name" + }, + "spei_clabe": { + "type": [ + "string", + "null" + ], + "example": "5482347403740546" + }, + "spei_protocol": { + "type": [ + "string", + "null" + ], + "enum": [ + "clabe", + "debitcard", + "phonenum" + ], + "description": "For debitcard and phonenum the spei_institution_code is required", + "example": "clabe" + }, + "spei_institution_code": { + "type": [ + "string", + "null" + ], + "minLength": 5, + "maxLength": 5, + "example": "40002" + }, + "swift_beneficiary_country": { + "type": [ + "string", + "null" + ], + "enum": [ + "AF", + "AL", + "DZ", + "AS", + "AD", + "AO", + "AI", + "AQ", + "AG", + "AR", + "AM", + "AW", + "AU", + "AT", + "AZ", + "BS", + "BH", + "BD", + "BB", + "BY", + "BE", + "BZ", + "BJ", + "BM", + "BT", + "BO", + "BQ", + "BA", + "BW", + "BV", + "BR", + "IO", + "BN", + "BG", + "BF", + "BI", + "CV", + "KH", + "CM", + "CA", + "KY", + "CF", + "TD", + "CL", + "CN", + "CX", + "CC", + "CO", + "KM", + "CD", + "CG", + "CK", + "CR", + "HR", + "CU", + "CW", + "CY", + "CZ", + "CI", + "DK", + "DJ", + "DM", + "DO", + "EC", + "EG", + "SV", + "GQ", + "ER", + "EE", + "SZ", + "ET", + "FK", + "FO", + "FJ", + "FI", + "FR", + "GF", + "PF", + "TF", + "GA", + "GM", + "GE", + "DE", + "GH", + "GI", + "GR", + "GL", + "GD", + "GP", + "GU", + "GT", + "GG", + "GN", + "GW", + "GY", + "HT", + "HM", + "VA", + "HN", + "HK", + "HU", + "IS", + "IN", + "ID", + "IR", + "IQ", + "IE", + "IM", + "IL", + "IT", + "JM", + "JP", + "JE", + "JO", + "KZ", + "KE", + "KI", + "KP", + "KR", + "KW", + "KG", + "LA", + "LV", + "LB", + "LS", + "LR", + "LY", + "LI", + "LT", + "LU", + "MO", + "MG", + "MW", + "MY", + "MV", + "ML", + "MT", + "MH", + "MQ", + "MR", + "MU", + "YT", + "MX", + "FM", + "MD", + "MC", + "MN", + "ME", + "MS", + "MA", + "MZ", + "MM", + "NA", + "NR", + "NP", + "NL", + "NC", + "NZ", + "NI", + "NE", + "NG", + "NU", + "NF", + "MP", + "NO", + "OM", + "PK", + "PW", + "PS", + "PA", + "PG", + "PY", + "PE", + "PH", + "PN", + "PL", + "PT", + "PR", + "QA", + "MK", + "RO", + "RU", + "RW", + "RE", + "BL", + "SH", + "KN", + "LC", + "MF", + "PM", + "VC", + "WS", + "SM", + "ST", + "SA", + "SN", + "RS", + "SC", + "SL", + "SG", + "SX", + "SK", + "SI", + "SB", + "SO", + "ZA", + "GS", + "SS", + "ES", + "LK", + "SD", + "SR", + "SJ", + "SE", + "CH", + "SY", + "TW", + "TJ", + "TZ", + "TH", + "TL", + "TG", + "TK", + "TO", + "TT", + "TN", + "TR", + "TM", + "TC", + "TV", + "UG", + "UA", + "AE", + "GB", + "UM", + "US", + "UY", + "UZ", + "VU", + "VE", + "VN", + "VG", + "VI", + "WF", + "EH", + "YE", + "ZM", + "ZW", + "AX" + ], + "example": "MX" + }, + "swift_code_bic": { + "type": [ + "string", + "null" + ], + "example": "123456789" + }, + "swift_account_holder_name": { + "type": [ + "string", + "null" + ], + "maxLength": 50, + "example": "John Doe" + }, + "swift_account_number_iban": { + "type": [ + "string", + "null" + ], + "example": "123456789" + }, + "transfers_account": { + "type": [ + "string", + "null" + ], + "example": "BM123123123123" + }, + "transfers_type": { + "type": [ + "string", + "null" + ], + "enum": [ + "CVU", + "CBU", + "ALIAS" + ], + "example": "CVU" + }, + "has_virtual_account": { + "type": [ + "boolean", + "null" + ], + "description": "Has virtual account", + "example": true + }, + "sender_legal_name": { + "type": [ + "string", + "null" + ], + "description": "Legal name of the sending instance (originator), shown on the receipt", + "example": "LRB TRADING INVESTMENT L.L.C" + } + }, + "required": [ + "customer_id", + "id", + "status", + "sender_wallet_address", + "quote_id", + "instance_id", + "tracking_transaction", + "tracking_payment", + "tracking_complete", + "network", + "token", + "sender_amount", + "receiver_amount", + "commercial_quotation", + "blindpay_quotation", + "currency", + "name", + "type" + ] + }, + "PaginationMetadata": { + "type": "object", + "properties": { + "has_more": { + "type": "boolean", + "description": "Whether or not there are more elements available after this set.", + "example": true + }, + "next_page": { + "type": [ + "string", + "null" + ], + "description": "The ID of the first item in the next page of results.", + "example": "pi_123" + }, + "prev_page": { + "type": [ + "string", + "null" + ], + "description": "The ID of the first item in the previous page of results.", + "example": "pi_123" + } + }, + "required": [ + "has_more" + ] + }, + "PayoutOnStellarAuthorizeIn": { + "type": "object", + "properties": { + "quote_id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "qu_000000000000" + }, + "sender_wallet_address": { + "type": "string", + "description": "Payout wallet address", + "example": "0x123...890" + } + }, + "required": [ + "quote_id", + "sender_wallet_address" + ] + }, + "PayoutOnEvmOut": { + "type": "object", + "properties": { + "id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "pa_000000000000" + }, + "status": { + "type": "string", + "enum": [ + "processing", + "failed", + "refunded", + "completed", + "on_hold" + ], + "description": "Payout general status", + "example": "processing" + }, + "sender_wallet_address": { + "type": "string", + "description": "Payout wallet address", + "example": "0x123...890" + }, + "billing_fee_amount": { + "type": [ + "number", + "null" + ], + "description": "Billing fee in cents (charged via invoice at the end of the month)", + "example": 50 + }, + "transaction_fee_amount": { + "type": [ + "number", + "null" + ], + "description": "Transaction fee in cents (percentage-based fee)", + "example": 100 + }, + "partner_fee": { + "type": "integer", + "minimum": 0, + "default": 0, + "description": "Payout partner fee amount in cents (can be negative for rebates)", + "example": -25000 + }, + "tracking_complete": { + "type": "object", + "properties": { + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Complete step", + "example": "on_hold" + }, + "status": { + "type": [ + "string", + "null" + ], + "enum": [ + "tokens_refunded", + "paid" + ], + "description": "Complete status", + "example": "tokens_refunded" + }, + "refund_reason": { + "type": [ + "string", + "null" + ], + "description": "Reason for refund when tokens are returned to sender", + "example": "fiat_payment_failed" + }, + "transaction_hash": { + "type": [ + "string", + "null" + ], + "description": "Complete transaction hash", + "example": "0x123...890" + }, + "provider_transaction_id": { + "type": [ + "string", + "null" + ], + "description": "Provider-side handle for the refund transaction (e.g. Circle transaction id)", + "example": "67c12eae-b7bc-31cc-a5ef-623dcea82346" + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "description": "Complete completed date", + "example": "2011-10-05T14:48:00.000Z" + } + }, + "required": [ + "step" + ] + }, + "tracking_payment": { + "type": "object", + "properties": { + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Payment step", + "example": "on_hold" + }, + "provider_name": { + "type": [ + "string", + "null" + ], + "enum": [ + "Nvio Pagos", + "Brex", + "Stark Bank", + "JPMorgan Chase", + "HSBC", + "Inter", + "JP Morgan Chase", + "Bitso", + "Citi", + "CFSB", + "Triple A Technologies", + "Portage Bank" + ], + "description": "Payment provider name", + "example": "HSBC" + }, + "provider_integration": { + "type": [ + "string", + "null" + ], + "enum": [ + "veem", + "zenus", + "checkbook", + "onemoney", + "bitso", + "starkbank", + "triplea", + "infinitus" + ], + "description": "Machine-readable integration that executed the fiat leg. Unlike provider_name (a client-facing bank label), this uniquely identifies the integration — e.g. zenus vs checkbook, which share the \"JPMorgan Chase\" label.", + "example": "zenus" + }, + "provider_transaction_id": { + "type": [ + "string", + "null" + ], + "description": "Payment provider transaction id", + "example": "0x123...890" + }, + "provider_status": { + "type": [ + "string", + "null" + ], + "enum": [ + "canceled", + "failed", + "returned", + "sent" + ], + "description": "Payment provider status", + "example": "canceled" + }, + "provider_error_reason": { + "type": [ + "string", + "null" + ], + "description": "Provider error reason when payment fails (e.g. invalid_key, wrong_parameters)", + "example": "invalid_key" + }, + "provider_uetr": { + "type": [ + "string", + "null" + ], + "maxLength": 120, + "description": "Unique end-to-end transaction reference (UETR). Populated once the wire is confirmed by the network; null while the payment is in flight or when the rail does not expose it (e.g. ACH).", + "example": "37d10eff-d450-4aba-a5d4-e3978f5a3343" + }, + "provider_imad": { + "type": [ + "string", + "null" + ], + "maxLength": 120, + "description": "Fed Input Message Accountability Data (IMAD). Domestic Fedwire payments only; null on ACH and SWIFT.", + "example": "20260526MMQFMP2M008120" + }, + "provider_reference": { + "type": [ + "string", + "null" + ], + "maxLength": 120, + "description": "Provider (JPMorgan/Zenus) payment reference captured from the ACCOUNT.ACCOUNT booking webhook (Zenus contractSource.sourceRef). Present for some ACH/wire payouts; a bank-side reference, not the formal ACH network trace number.", + "example": "2084734238TC" + }, + "provider_clearing_system": { + "type": [ + "string", + "null" + ], + "maxLength": 40, + "description": "Clearing system that processed the payment (e.g. FED, CHIPS, ACH, SWIFT).", + "example": "FED" + }, + "recipient_name": { + "type": [ + "string", + "null" + ], + "description": "Recipient name", + "example": "John Doe" + }, + "recipient_tax_id": { + "type": [ + "string", + "null" + ], + "description": "Recipient tax id", + "example": "123.456.789-10" + }, + "recipient_bank_code": { + "type": [ + "string", + "null" + ], + "description": "Recipient bank code", + "example": "00416968" + }, + "recipient_branch_code": { + "type": [ + "string", + "null" + ], + "description": "Recipient branch code", + "example": "0001" + }, + "recipient_account_number": { + "type": [ + "string", + "null" + ], + "description": "Recipient account number", + "example": "1234567890" + }, + "recipient_account_type": { + "type": [ + "string", + "null" + ], + "description": "Recipient account type", + "example": "checking" + }, + "coelsa_id": { + "type": [ + "string", + "null" + ], + "description": "COELSA transaction reference ID for ARS transfers (Argentine national banking system)", + "example": "1LMP68NKV46DRDYK2R7OEV" + }, + "end_to_end_id": { + "type": [ + "string", + "null" + ], + "description": "BACEN Pix end-to-end transaction ID (govt Pix ID)", + "example": "E20018183202603311320vm6ALFpJpsS" + }, + "estimated_time_of_arrival": { + "type": [ + "string", + "null" + ], + "enum": [ + "5_min", + "5_30_min", + "30_min", + "2_hours", + "1_business_day", + "2_business_days", + "5_business_days" + ], + "description": "Estimated time of arrival", + "example": "5_min" + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "description": "Payment completed date", + "example": "2011-10-05T14:48:00.000Z" + } + }, + "required": [ + "step" + ] + }, + "tracking_transaction": { + "type": "object", + "properties": { + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Payout transaction step", + "example": "processing" + }, + "status": { + "type": [ + "string", + "null" + ], + "enum": [ + "failed", + "found" + ], + "description": "Payout transaction status", + "example": "failed" + }, + "transaction_hash": { + "type": [ + "string", + "null" + ], + "description": "Blockchain transaction hash", + "example": "0x123...890" + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "description": "Payout transaction completed date", + "example": "2011-10-05T14:48:00.000Z" + }, + "provider_transaction_id": { + "type": [ + "string", + "null" + ], + "description": "Provider-side handle for the on-chain leg (e.g. Circle CPN payment id).", + "example": "67c12eae-b7bc-31cc-a5ef-623dcea82346" + }, + "provider_error_reason": { + "type": [ + "string", + "null" + ], + "description": "Provider error reason when the crypto collection fails (e.g. erc20_allowance_insufficient, ESTIMATION_ERROR: execution reverted)", + "example": "erc20_allowance_insufficient" + }, + "ledger_in_transaction_id": { + "type": [ + "string", + "null" + ], + "description": "Ledger transaction ID for the IN (crypto deposit) transaction" + }, + "ledger_out_transaction_id": { + "type": [ + "string", + "null" + ], + "description": "Ledger transaction ID for the OUT (fiat withdrawal) transaction" + } + }, + "required": [ + "step" + ] + }, + "tracking_liquidity": { + "type": [ + "object", + "null" + ], + "properties": { + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Payout liquidity step", + "example": "processing" + }, + "provider_transaction_id": { + "type": [ + "string", + "null" + ], + "description": "Payment provider transaction id", + "example": "0x123...890" + }, + "provider_status": { + "type": [ + "string", + "null" + ], + "enum": [ + "deposited", + "converted", + "withdrawn" + ], + "description": "Payment provider status", + "example": "deposited" + }, + "estimated_time_of_arrival": { + "type": [ + "string", + "null" + ], + "enum": [ + "5_min", + "5_30_min", + "30_min", + "2_hours", + "1_business_day", + "2_business_days", + "5_business_days" + ], + "description": "Estimated time of arrival", + "example": "1_business_day" + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "description": "Payout transaction completed date", + "example": "2011-10-05T14:48:00.000Z" + } + }, + "required": [ + "step" + ] + }, + "tracking_documents": { + "type": [ + "object", + "null" + ], + "properties": { + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Documents step", + "example": "processing" + }, + "status": { + "type": [ + "string", + "null" + ], + "enum": [ + "waiting_documents", + "compliance_reviewing" + ], + "description": "Documents status", + "example": "waiting_documents" + }, + "reviewed_by": { + "type": [ + "string", + "null" + ], + "description": "Reviewer email/name", + "example": "compliance@example.com" + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "description": "Documents completed date", + "example": "2011-10-05T14:48:00.000Z" + } + }, + "required": [ + "step" + ] + }, + "customer_id": { + "type": [ + "string", + "null" + ], + "minLength": 15, + "maxLength": 15, + "example": "re_000000000000" + }, + "bank_account_id": { + "type": [ + "string", + "null" + ], + "minLength": 15, + "maxLength": 15, + "example": "ba_000000000000" + }, + "offramp_wallet_id": { + "type": [ + "string", + "null" + ], + "minLength": 15, + "maxLength": 15, + "example": "ow_000000000000" + } + }, + "required": [ + "id", + "status", + "sender_wallet_address", + "tracking_complete", + "tracking_payment", + "tracking_transaction" + ] + }, + "PayoutOnStellarIn": { + "type": "object", + "properties": { + "quote_id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "qu_000000000000" + }, + "signed_transaction": { + "type": [ + "string", + "null" + ], + "description": "Signed transaction", + "example": "AAA...Zey8y0A" + }, + "sender_wallet_address": { + "type": "string", + "description": "Payout wallet address", + "example": "0x123...890" + } + }, + "required": [ + "quote_id", + "sender_wallet_address" + ] + }, + "PayoutOnSolanaIn": { + "type": "object", + "properties": { + "quote_id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "qu_000000000000" + }, + "signed_transaction": { + "type": [ + "string", + "null" + ], + "description": "Signed transaction", + "example": "AAA...Zey8y0A" + }, + "sender_wallet_address": { + "type": "string", + "description": "Payout wallet address", + "example": "0x123...890" + } + }, + "required": [ + "quote_id", + "sender_wallet_address" + ] + }, + "PayoutOnEvmIn": { + "type": "object", + "properties": { + "quote_id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "qu_000000000000" + }, + "sender_wallet_address": { + "type": "string", + "description": "Payout wallet address", + "example": "0x123...890" + } + }, + "required": [ + "quote_id", + "sender_wallet_address" + ] + }, + "SubmitPayoutDocumentsIn": { + "type": "object", + "properties": { + "transaction_document_type": { + "type": "string", + "enum": [ + "invoice", + "purchase_order", + "delivery_slip", + "contract", + "customs_declaration", + "bill_of_lading", + "others" + ], + "description": "Document type", + "example": "invoice" + }, + "transaction_document_id": { + "type": "string", + "minLength": 1, + "maxLength": 512, + "description": "Document identifier (invoice number, contract ID, etc.)", + "example": "INV-12345" + }, + "transaction_document_file": { + "type": "string", + "format": "uri", + "description": "URL to the uploaded document", + "example": "https://example.com/document.pdf" + }, + "description": { + "type": "string", + "maxLength": 128, + "description": "Optional payment description/memo (max 128 chars)", + "example": "Payment for services - Invoice #12345" + } + }, + "required": [ + "transaction_document_type", + "transaction_document_id", + "transaction_document_file" + ] + }, + "AvailableBankDetails": { + "type": "array", + "items": { + "type": "object", + "properties": { + "label": { + "type": "string", + "example": "Account Number" + }, + "regex": { + "type": "string", + "example": "^[0-9]{9}$" + }, + "key": { + "type": "string", + "enum": [ + "type", + "name", + "status", + "recipient_relationship", + "swift_payment_code", + "pix_key", + "force_cpf_cnpj", + "beneficiary_name", + "routing_number", + "account_number", + "account_type", + "account_class", + "address_line_1", + "address_line_2", + "city", + "state_province_region", + "country", + "postal_code", + "checkbook_account_id", + "checkbook_user_key", + "onemoney_external_account_id", + "pix_safe_bank_code", + "pix_safe_branch_code", + "pix_safe_cpf_cnpj", + "ted_bank_code", + "ted_branch_code", + "ted_cpf_cnpj", + "spei_protocol", + "spei_institution_code", + "spei_clabe", + "transfers_type", + "transfers_account", + "ach_cop_beneficiary_first_name", + "ach_cop_beneficiary_last_name", + "ach_cop_document_id", + "ach_cop_document_type", + "ach_cop_email", + "ach_cop_bank_code", + "ach_cop_bank_account", + "swift_code_bic", + "swift_account_holder_name", + "swift_account_number_iban", + "swift_beneficiary_address_line_1", + "swift_beneficiary_address_line_2", + "swift_beneficiary_country", + "swift_beneficiary_city", + "swift_beneficiary_state_province_region", + "swift_beneficiary_postal_code", + "swift_bank_name", + "swift_bank_address_line_1", + "swift_bank_address_line_2", + "swift_bank_country", + "swift_bank_city", + "swift_bank_state_province_region", + "swift_bank_postal_code", + "swift_ifsc_branch_code", + "swift_intermediary_bank_swift_code_bic", + "swift_intermediary_bank_account_number_iban", + "swift_intermediary_bank_name", + "swift_intermediary_bank_country", + "sepa_iban", + "sepa_beneficiary_bic", + "sepa_beneficiary_legal_name", + "sepa_beneficiary_address_line_1", + "sepa_beneficiary_address_line_2", + "sepa_beneficiary_city", + "sepa_beneficiary_state_province_region", + "sepa_beneficiary_postal_code", + "sepa_beneficiary_country", + "business_industry", + "phone_number", + "tax_id", + "date_of_birth" + ], + "example": "account_number" + }, + "items": { + "type": "array", + "items": { + "type": "object", + "properties": { + "label": { + "type": "string", + "example": "United States of America" + }, + "value": { + "type": "string", + "example": "US" + }, + "is_active": { + "type": "boolean", + "example": true + } }, - "proof_of_address_doc_type": { + "required": [ + "label", + "value" + ] + } + }, + "required": { + "type": [ + "boolean", + "null" + ], + "example": false + }, + "requiredWhen": { + "type": "object", + "properties": { + "field": { + "type": "string", "enum": [ - "UTILITY_BILL", - "BANK_STATEMENT", - "RENTAL_AGREEMENT", - "TAX_DOCUMENT", - "GOVERNMENT_CORRESPONDENCE" + "type", + "name", + "status", + "recipient_relationship", + "swift_payment_code", + "pix_key", + "force_cpf_cnpj", + "beneficiary_name", + "routing_number", + "account_number", + "account_type", + "account_class", + "address_line_1", + "address_line_2", + "city", + "state_province_region", + "country", + "postal_code", + "checkbook_account_id", + "checkbook_user_key", + "onemoney_external_account_id", + "pix_safe_bank_code", + "pix_safe_branch_code", + "pix_safe_cpf_cnpj", + "ted_bank_code", + "ted_branch_code", + "ted_cpf_cnpj", + "spei_protocol", + "spei_institution_code", + "spei_clabe", + "transfers_type", + "transfers_account", + "ach_cop_beneficiary_first_name", + "ach_cop_beneficiary_last_name", + "ach_cop_document_id", + "ach_cop_document_type", + "ach_cop_email", + "ach_cop_bank_code", + "ach_cop_bank_account", + "swift_code_bic", + "swift_account_holder_name", + "swift_account_number_iban", + "swift_beneficiary_address_line_1", + "swift_beneficiary_address_line_2", + "swift_beneficiary_country", + "swift_beneficiary_city", + "swift_beneficiary_state_province_region", + "swift_beneficiary_postal_code", + "swift_bank_name", + "swift_bank_address_line_1", + "swift_bank_address_line_2", + "swift_bank_country", + "swift_bank_city", + "swift_bank_state_province_region", + "swift_bank_postal_code", + "swift_ifsc_branch_code", + "swift_intermediary_bank_swift_code_bic", + "swift_intermediary_bank_account_number_iban", + "swift_intermediary_bank_name", + "swift_intermediary_bank_country", + "sepa_iban", + "sepa_beneficiary_bic", + "sepa_beneficiary_legal_name", + "sepa_beneficiary_address_line_1", + "sepa_beneficiary_address_line_2", + "sepa_beneficiary_city", + "sepa_beneficiary_state_province_region", + "sepa_beneficiary_postal_code", + "sepa_beneficiary_country", + "business_industry", + "phone_number", + "tax_id", + "date_of_birth" ], - "example": "UTILITY_BILL", - "type": [ - "string", - "null" - ] + "example": "country" }, - "role": { - "description": "A beneficial owner is someone who directly or indirectly owns 25% or more of your business. A controlling person is someone with significant responsibility to control, manage or direct your business (typically a CEO, senior executive officer or equivalent).", + "operator": { + "type": "string", "enum": [ - "beneficial_controlling", - "beneficial_owner", - "controlling_person" + "in", + "eq", + "notIn", + "notEq" ], - "example": "beneficial_owner", - "type": "string" + "example": "in" }, - "state_province_region": { - "example": "MA", - "type": "string" - }, - "tax_id": { - "example": "536804398", - "type": [ - "string", - "null" - ] - }, - "tax_type": { - "description": "Tax identifier type. Mandatory when country is US; must be SSN or ITIN.", - "enum": [ - "SSN", - "ITIN" - ], - "example": "SSN", - "type": [ - "string", - "null" + "values": { + "type": "array", + "items": { + "type": "string" + }, + "example": [ + "US", + "GB" ] + } + }, + "required": [ + "field", + "operator", + "values" + ], + "example": { + "field": "country", + "operator": "in", + "values": [ + "US", + "GB" + ] + } + } + }, + "required": [ + "label", + "regex", + "key" + ] + } + }, + "AvailableRails": { + "type": "array", + "items": { + "type": "object", + "properties": { + "label": { + "type": "string", + "example": "Domestic Wire" + }, + "value": { + "type": "string", + "enum": [ + "wire", + "ach", + "pix", + "pix_safe", + "ted", + "spei_bitso", + "transfers_bitso", + "ach_cop_bitso", + "international_swift", + "rtp", + "sepa" + ], + "example": "wire" + }, + "country": { + "type": "string", + "enum": [ + "AF", + "AL", + "DZ", + "AS", + "AD", + "AO", + "AI", + "AQ", + "AG", + "AR", + "AM", + "AW", + "AU", + "AT", + "AZ", + "BS", + "BH", + "BD", + "BB", + "BY", + "BE", + "BZ", + "BJ", + "BM", + "BT", + "BO", + "BQ", + "BA", + "BW", + "BV", + "BR", + "IO", + "BN", + "BG", + "BF", + "BI", + "CV", + "KH", + "CM", + "CA", + "KY", + "CF", + "TD", + "CL", + "CN", + "CX", + "CC", + "CO", + "KM", + "CD", + "CG", + "CK", + "CR", + "HR", + "CU", + "CW", + "CY", + "CZ", + "CI", + "DK", + "DJ", + "DM", + "DO", + "EC", + "EG", + "SV", + "GQ", + "ER", + "EE", + "SZ", + "ET", + "FK", + "FO", + "FJ", + "FI", + "FR", + "GF", + "PF", + "TF", + "GA", + "GM", + "GE", + "DE", + "GH", + "GI", + "GR", + "GL", + "GD", + "GP", + "GU", + "GT", + "GG", + "GN", + "GW", + "GY", + "HT", + "HM", + "VA", + "HN", + "HK", + "HU", + "IS", + "IN", + "ID", + "IR", + "IQ", + "IE", + "IM", + "IL", + "IT", + "JM", + "JP", + "JE", + "JO", + "KZ", + "KE", + "KI", + "KP", + "KR", + "KW", + "KG", + "LA", + "LV", + "LB", + "LS", + "LR", + "LY", + "LI", + "LT", + "LU", + "MO", + "MG", + "MW", + "MY", + "MV", + "ML", + "MT", + "MH", + "MQ", + "MR", + "MU", + "YT", + "MX", + "FM", + "MD", + "MC", + "MN", + "ME", + "MS", + "MA", + "MZ", + "MM", + "NA", + "NR", + "NP", + "NL", + "NC", + "NZ", + "NI", + "NE", + "NG", + "NU", + "NF", + "MP", + "NO", + "OM", + "PK", + "PW", + "PS", + "PA", + "PG", + "PY", + "PE", + "PH", + "PN", + "PL", + "PT", + "PR", + "QA", + "MK", + "RO", + "RU", + "RW", + "RE", + "BL", + "SH", + "KN", + "LC", + "MF", + "PM", + "VC", + "WS", + "SM", + "ST", + "SA", + "SN", + "RS", + "SC", + "SL", + "SG", + "SX", + "SK", + "SI", + "SB", + "SO", + "ZA", + "GS", + "SS", + "ES", + "LK", + "SD", + "SR", + "SJ", + "SE", + "CH", + "SY", + "TW", + "TJ", + "TZ", + "TH", + "TL", + "TG", + "TK", + "TO", + "TT", + "TN", + "TR", + "TM", + "TC", + "TV", + "UG", + "UA", + "AE", + "GB", + "UM", + "US", + "UY", + "UZ", + "VU", + "VE", + "VN", + "VG", + "VI", + "WF", + "EH", + "YE", + "ZM", + "ZW", + "AX" + ], + "example": "US" + } + }, + "required": [ + "label", + "value", + "country" + ] + } + }, + "AvailableNaicsList": { + "type": "array", + "items": { + "type": "object", + "properties": { + "label": { + "type": "string", + "example": "(339910) Jewelry and Silverware Manufacturing" + }, + "value": { + "type": "string", + "example": "339910" + } + }, + "required": [ + "label", + "value" + ] + } + }, + "SwiftCodeItem": { + "type": "object", + "properties": { + "id": { + "type": "string", + "example": "416" + }, + "bank": { + "type": "string", + "example": "BANK OF AMERICA, N.A." + }, + "city": { + "type": "string", + "example": "NEW JERSEY" + }, + "branch": { + "type": "string", + "example": "LENDING SERVICES AND OPERATIONS (LSOP)" + }, + "swiftCode": { + "type": "string", + "example": "BOFAUS3NLMA" + }, + "swiftCodeLink": { + "type": "string", + "example": "https://bank.codes/swift-code/united-states/bofaus3nlma/" + }, + "country": { + "type": "string", + "example": "United States" + }, + "countrySlug": { + "type": "string", + "example": "united-states" + } + }, + "required": [ + "id", + "bank", + "city", + "branch", + "swiftCode", + "swiftCodeLink", + "country", + "countrySlug" + ] + }, + "SwiftCodeResponse": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SwiftCodeItem" + } + }, + "ExternalOnboardingInfo": { + "type": "object", + "properties": { + "legal_name": { + "type": [ + "string", + "null" + ] + }, + "onboarding_step": { + "type": "string", + "enum": [ + "initial", + "business_details", + "business_profile", + "documents", + "applicant", + "completed", + "blocked" + ], + "example": "initial" + }, + "email": { + "type": "string", + "format": "email" + } + }, + "required": [ + "legal_name", + "onboarding_step", + "email" + ] + }, + "InstanceIn": { + "type": "object", + "properties": { + "name": { + "type": "string", + "minLength": 3, + "maxLength": 100, + "example": "My Instance" + }, + "type": { + "type": "string", + "enum": [ + "production", + "development" + ], + "example": "development" + }, + "seed_sample_data": { + "type": "boolean", + "description": "Development instances only: seed sample customers, payouts and payins so the dashboard lands populated.", + "example": true + } + }, + "required": [ + "name", + "type" + ] + }, + "PaymentRoute": { + "type": [ + "object", + "null" + ], + "properties": { + "ach": { + "type": "string", + "enum": [ + "zenus", + "veem", + "infinitus_portage", + "blocked" + ] + }, + "wire": { + "type": "string", + "enum": [ + "zenus", + "veem", + "infinitus_portage", + "blocked" + ] + }, + "international_swift": { + "type": "string", + "enum": [ + "zenus", + "veem", + "infinitus_portage", + "blocked" + ] + }, + "rtp": { + "type": "string", + "enum": [ + "zenus", + "veem", + "infinitus_portage", + "blocked" + ] + } + }, + "description": "Per-instance USD payout rail override. Maps a bank rail to a PSP (zenus | veem | infinitus) or to \"blocked\" to disable the rail. Absent rails fall back to default routing.", + "example": { + "ach": "zenus", + "wire": "zenus", + "international_swift": "zenus", + "rtp": "blocked" + } + }, + "ManualReviewSkip": { + "type": [ + "object", + "null" + ], + "properties": { + "ach": { + "type": "object", + "properties": { + "max_amount_usd_cents": { + "type": "integer", + "minimum": 0, + "description": "Threshold in USD cents. Payins and payouts on this rail at or below it skip the manual review.", + "example": 100000 + } + }, + "required": [ + "max_amount_usd_cents" + ] + }, + "wire": { + "type": "object", + "properties": { + "max_amount_usd_cents": { + "type": "integer", + "minimum": 0, + "description": "Threshold in USD cents. Payins and payouts on this rail at or below it skip the manual review.", + "example": 100000 + } + }, + "required": [ + "max_amount_usd_cents" + ] + }, + "rtp": { + "type": "object", + "properties": { + "max_amount_usd_cents": { + "type": "integer", + "minimum": 0, + "description": "Threshold in USD cents. Payins and payouts on this rail at or below it skip the manual review.", + "example": 100000 + } + }, + "required": [ + "max_amount_usd_cents" + ] + }, + "pix": { + "type": "object", + "properties": { + "max_amount_brl_cents": { + "type": "integer", + "minimum": 0, + "description": "Threshold in BRL cents. Pix payins and payouts at or below it skip the manual review.", + "example": 500000 + } + }, + "required": [ + "max_amount_brl_cents" + ] + } + }, + "description": "Per-rail threshold (in cents of the rail currency: USD for ach/wire/rtp, BRL for pix) at or below which payins and payouts skip the manual review. Takes precedence over the manual-review toggles (customer force_manual_review and instance manual_review_all_payments). FULL bypass: it also takes precedence over the SEON pre-send fraud gate (the check still runs and flags are still posted to Slack for audit). Configure only for fully trusted instances with low thresholds.", + "example": { + "ach": { + "max_amount_usd_cents": 100000 + }, + "wire": { + "max_amount_usd_cents": 500000 + }, + "rtp": { + "max_amount_usd_cents": 50000 + }, + "pix": { + "max_amount_brl_cents": 500000 + } + } + }, + "InstanceOut": { + "type": "object", + "properties": { + "id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "in_000000000000" + }, + "name": { + "type": "string", + "minLength": 3, + "maxLength": 100, + "example": "My Instance" + }, + "type": { + "type": "string", + "enum": [ + "production", + "development" + ], + "example": "development" + }, + "last_payout_date": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "string" + }, + { + "type": "null" + } + ], + "example": "2022-01-01T00:00:00.000Z" + }, + "customers_amount": { + "type": [ + "number", + "null" + ], + "example": 150 + }, + "subscription_features": { + "anyOf": [ + { + "type": "object", + "properties": { + "international_swift": { + "type": "boolean" + }, + "virtual_accounts": { + "type": "boolean" + }, + "otc": { + "type": [ + "boolean", + "null" + ] + }, + "otc_dynamic_rate": { + "type": [ + "boolean", + "null" + ] + }, + "otc_manual_execution": { + "type": [ + "boolean", + "null" + ] + }, + "billing_charge": { + "type": [ + "boolean", + "null" + ] + }, + "wallets_and_transfers": { + "type": [ + "boolean", + "null" + ] + }, + "manual_review_all_payments": { + "type": [ + "boolean", + "null" + ] + }, + "ted_payin": { + "type": [ + "boolean", + "null" + ] + }, + "payment_route": { + "$ref": "#/components/schemas/PaymentRoute" + }, + "manual_review_skip": { + "$ref": "#/components/schemas/ManualReviewSkip" + } }, - "title": { - "description": "Job title of the owner", - "example": "CEO", - "maxLength": 128, - "type": [ - "string", - "null" - ] - } + "required": [ + "international_swift", + "virtual_accounts" + ] }, - "type": "object" - }, - "type": [ - "array", - "null" - ] - }, - "phone_number": { - "example": "+13055555555", - "type": [ - "string", - "null" - ] + { + "type": "string" + } + ], + "example": { + "international_swift": true, + "virtual_accounts": false, + "otc": false, + "otc_manual_execution": false, + "billing_charge": false, + "wallets_and_transfers": false, + "manual_review_all_payments": false + } }, - "postal_code": { - "example": "02050", + "subscription_plan": { "type": [ "string", "null" - ] + ], + "enum": [ + "Basic", + "Business", + "Enterprise" + ], + "description": "Subscription plan: Basic, Business, or Enterprise", + "example": "Basic" }, - "proof_of_address_doc_file": { - "description": "Please upload one document that serve as proof of address, this needs to be the same physical address as the one provided above. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", - "example": "https://example.com/image.png", + "subscription_status": { "type": [ "string", "null" - ] - }, - "proof_of_address_doc_type": { + ], "enum": [ - "UTILITY_BILL", - "BANK_STATEMENT", - "RENTAL_AGREEMENT", - "TAX_DOCUMENT", - "GOVERNMENT_CORRESPONDENCE" + "active", + "pending_payment", + "past_due", + "cancelled" ], - "example": "UTILITY_BILL", - "type": [ - "string", - "null" - ] + "description": "Subscription status: active, pending_payment, past_due, or cancelled", + "example": "active" }, - "proof_of_ownership_doc_file": { - "description": "Please upload your proof of ownership below. This document usually includes information like the shareholders names and percentages. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", - "example": "https://example.com/image.png", + "subscription_plan_amount": { "type": [ - "string", + "number", "null" - ] + ], + "minimum": 0, + "description": "Monthly subscription plan amount in USD", + "example": 249 }, - "publicly_traded": { - "example": false, + "invoice_due_date_days": { "type": [ - "boolean", + "integer", "null" - ] - }, - "purpose_of_transactions": { - "enum": [ - "business_transactions", - "charitable_donations", - "investment_purposes", - "payments_to_friends_or_family_abroad", - "personal_or_living_expenses", - "protect_wealth", - "purchase_good_and_services", - "receive_payment_for_freelancing", - "receive_salary", - "other" ], - "example": "business_transactions", - "type": [ - "string", - "null" - ] + "minimum": 0, + "description": "Number of days from invoice creation to due date", + "example": 15 }, - "purpose_of_transactions_explanation": { - "example": "I am a business owner and I want to receive payments from my customers", + "minimum_monthly_amount": { "type": [ - "string", + "number", "null" - ] + ], + "minimum": 0, + "description": "Minimum monthly billing amount in USD", + "example": 2000 }, - "selfie_file": { - "description": "Only image files are accepted (.jpg, .jpeg, .png)", - "example": "https://example.com/image.png", - "type": [ - "string", - "null" - ] + "user_owner_id": { + "type": "string", + "example": "us_000000000000" }, - "source_of_funds_doc_file": { - "example": "https://example.com/image.png", + "user_role": { "type": [ "string", "null" - ] - }, - "source_of_funds_doc_type": { + ], "enum": [ - "business_income", - "gambling_proceeds", - "gifts", - "government_benefits", - "inheritance", - "investment_loans", - "pension_retirement", - "salary", - "sale_of_assets_real_estate", - "savings", - "esops", - "investment_proceeds", - "someone_else_funds" + "owner", + "admin", + "finance", + "checker", + "operations", + "developer", + "viewer" ], - "example": "business_income", - "type": [ - "string", - "null" - ] + "example": "admin" }, - "source_of_wealth": { + "onboarding_step": { + "type": "string", "enum": [ - "business_dividends_or_profits", - "investments", - "asset_sales", - "client_investor_contributions", - "gambling", - "charitable_contributions", - "inheritance", - "affiliate_or_royalty_income" + "initial", + "business_details", + "business_profile", + "documents", + "applicant", + "completed", + "blocked" ], - "example": "affiliate_or_royalty_income", - "type": [ - "string", - "null" - ] - }, - "state_province_region": { - "example": "MA", - "type": [ - "string", - "null" - ] + "example": "initial" }, - "tax_id": { - "example": "536804398", + "customer_invite_redirect_url": { "type": [ "string", "null" - ] + ], + "format": "uri", + "example": "https://blindpay.com" }, - "tos_id": { - "example": "to_000000000000", - "maxLength": 15, - "minLength": 15, - "type": [ - "string", - "null" - ] + "email_notifications": { + "type": "boolean", + "default": true, + "description": "Whether email notifications are enabled for this instance", + "example": true }, - "type": { - "enum": [ - "individual", - "business" - ], - "example": "individual", - "type": "string" + "require_passkey": { + "type": "boolean", + "default": false, + "description": "Whether passkey verification is required for protected actions", + "example": false }, - "updated_at": { - "example": "2021-01-01T00:00:00Z", - "format": "date-time", + "compliance_emails": { "type": [ - "string", + "array", "null" + ], + "items": { + "type": "string", + "format": "email" + }, + "maxItems": 20, + "description": "When non-empty, compliance Request for Information emails are sent only to these addresses instead of all instance members", + "example": [ + "compliance@example.com" ] }, - "webhook_event": { - "enum": [ - "customer.update" - ], - "type": "string" + "customer_rfi_emails_enabled": { + "type": "boolean", + "default": true, + "description": "Whether customer (customer) Request for Information notification emails are sent for this instance. Instance-level RFI emails are always sent regardless of this setting.", + "example": true }, - "website": { - "example": "https://example.com", - "format": "uri", + "is_fbo": { "type": [ - "string", + "boolean", "null" - ] + ], + "example": false } }, "required": [ - "webhook_event", "id", - "customer_id", + "name", "type", - "kyc_type", - "kyc_status", - "email", - "country", - "instance_id", - "limit" - ], - "type": "object" - }, - "Error": { - "properties": { - "code": { - "description": "Stable error code. See the Error codes section for the full list.", - "example": "PAYOUTS_INSUFFICIENT_BALANCE", - "type": "string" - }, - "description": { - "description": "Human-readable explanation, safe to show to end users.", - "example": "There is not enough balance to complete this payout. Fund your balance and try again.", - "type": "string" - }, - "errors": { - "example": [ - "Bad Request" - ], - "items": { - "type": "string" - }, - "type": "array" - }, - "message": { - "description": "Legacy machine-readable message. Prefer `code` for programmatic handling.", - "example": "not_enough_balance", - "type": "string" - }, - "success": { - "example": false, - "type": "boolean" - }, - "trace_id": { - "description": "Request trace ID. Include it when contacting support.", - "example": "0af7651916cd43dd8448eb211c80319c", - "type": "string" - } - }, - "required": [ - "success", - "message", - "errors" - ], - "type": "object" + "subscription_features", + "user_owner_id", + "onboarding_step" + ] }, "ExternalInstanceOut": { + "type": "object", "properties": { - "customer_invite_redirect_url": { - "example": "https://blindpay.com", - "format": "uri", + "legal_name": { "type": [ "string", "null" - ] + ], + "example": "My Company" }, - "legal_name": { - "example": "My Company", + "customer_invite_redirect_url": { "type": [ "string", "null" - ] + ], + "format": "uri", + "example": "https://blindpay.com" } - }, - "type": "object" + } }, - "ExternalOnboardingInfo": { + "UpdateInstanceIn": { + "type": "object", "properties": { - "email": { - "format": "email", - "type": "string" + "name": { + "type": "string", + "minLength": 3, + "maxLength": 100, + "example": "My Instance" }, - "legal_name": { + "customer_invite_redirect_url": { "type": [ "string", "null" + ], + "format": "uri", + "example": "https://blindpay.com" + }, + "email_notifications": { + "type": "boolean", + "default": true, + "description": "Whether email notifications are enabled for this instance", + "example": true + }, + "require_passkey": { + "type": "boolean", + "default": false, + "description": "Whether passkey verification is required for protected actions", + "example": false + }, + "compliance_emails": { + "type": [ + "array", + "null" + ], + "items": { + "type": "string", + "format": "email" + }, + "maxItems": 20, + "description": "When non-empty, compliance Request for Information emails are sent only to these addresses instead of all instance members", + "example": [ + "compliance@example.com" ] }, - "onboarding_step": { + "customer_rfi_emails_enabled": { + "type": "boolean", + "description": "Whether customer (customer) Request for Information notification emails are sent for this instance. Omit to leave unchanged.", + "example": true + } + }, + "required": [ + "name" + ] + }, + "UpdateInstanceMemberIn": { + "type": "object", + "properties": { + "user_role": { + "type": "string", "enum": [ - "initial", - "business_details", - "business_profile", - "documents", - "applicant", - "completed", - "blocked" + "owner", + "admin", + "finance", + "checker", + "operations", + "developer", + "viewer" ], - "example": "initial", - "type": "string" + "example": "admin" } }, "required": [ - "legal_name", - "onboarding_step", - "email" - ], - "type": "object" + "user_role" + ] }, - "FeeOptions": { + "CopyInstanceMembersOut": { + "type": "object", "properties": { - "payin_flat": { - "description": "Payin flat fee in cents", - "example": 40, - "type": "integer" - }, - "payin_percentage": { - "description": "Payin percentage fee in basis points", - "example": 50, - "type": "integer" + "copied_members": { + "type": "integer", + "example": 3 }, - "payout_flat": { - "description": "Payout flat fee in cents", - "example": 40, - "type": "integer" + "copied_invites": { + "type": "integer", + "example": 1 }, - "payout_percentage": { - "description": "Payout percentage fee in basis points", - "example": 50, - "type": "integer" + "skipped_members": { + "type": "integer", + "description": "Source members that already belong to the target instance", + "example": 2 } }, "required": [ - "payin_flat", - "payin_percentage", - "payout_flat", - "payout_percentage" - ], - "type": "object" + "copied_members", + "copied_invites", + "skipped_members" + ] }, - "FeedbackActor": { + "CopyInstanceMembersIn": { + "type": "object", "properties": { - "email": { + "source_instance_id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "in_000000000000" + } + }, + "required": [ + "source_instance_id" + ] + }, + "MigrateInstanceOwnershipIn": { + "type": "object", + "properties": { + "user_id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "us_000000000000" + } + }, + "required": [ + "user_id" + ] + }, + "AuditActor": { + "type": [ + "object", + "null" + ], + "properties": { + "id": { "type": [ "string", "null" ] }, - "id": { - "type": "string" - }, "name": { "type": [ "string", "null" ] + }, + "email": { + "type": [ + "string", + "null" + ] + }, + "image_url": { + "type": [ + "string", + "null" + ] } }, "required": [ "id", "name", - "email" - ], - "type": [ - "object", - "null" + "email", + "image_url" ] }, - "FeedbackOut": { + "AuditLog": { + "type": "object", "properties": { - "created_at": { - "example": "2021-01-01T00:00:00Z", - "format": "date-time", + "id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "al_000000000000" + }, + "instance_id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "in_000000000000" + }, + "actor_type": { + "type": "string", + "enum": [ + "user", + "api_key" + ], + "example": "user" + }, + "user_id": { "type": [ "string", "null" - ] + ], + "example": "us_000000000000" }, - "description": { - "type": "string" + "api_key_id": { + "type": [ + "string", + "null" + ], + "example": null }, - "email": { + "role": { + "type": "string", + "example": "admin" + }, + "feature": { + "type": "string", + "example": "payin" + }, + "operation": { + "type": "string", + "enum": [ + "create", + "update", + "delete" + ], + "example": "create" + }, + "entity_type": { + "type": "string", + "example": "payin" + }, + "entity_id": { + "type": "string", + "example": "pi_000000000000" + }, + "metadata": { + "type": "object", + "additionalProperties": {}, + "example": {} + }, + "ip_address": { "type": [ "string", "null" - ] - }, - "id": { - "example": "fb_000000000000", - "type": "string" + ], + "example": "177.137.230.244" }, - "instance_id": { - "example": "in_000000000000", + "user_agent": { "type": [ "string", "null" - ] + ], + "example": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)" }, - "page_url": { + "country": { "type": [ "string", "null" - ] - }, - "title": { - "type": "string" + ], + "example": "US" }, - "type": { - "enum": [ - "bug", - "suggestion", - "feedback", - "praise", - "complaint" + "has_passkey": { + "type": [ + "boolean", + "null" ], - "type": "string" + "example": true }, - "user_agent": { + "request_id": { "type": [ "string", "null" - ] + ], + "example": "abcd1234" }, - "user_id": { - "example": "us_000000000000", + "created_at": { "type": [ "string", "null" - ] + ], + "format": "date-time", + "example": "2021-01-01T00:00:00Z" } }, "required": [ "id", "instance_id", + "actor_type", "user_id", - "type", - "title", - "description", - "email", - "page_url", - "user_agent" - ], - "type": "object" + "api_key_id", + "role", + "feature", + "operation", + "entity_type", + "entity_id", + "metadata", + "ip_address", + "user_agent", + "country", + "has_passkey", + "request_id" + ] }, - "FeedbackWithActorOut": { + "AuditLogOut": { "allOf": [ { - "$ref": "#/components/schemas/FeedbackOut" + "$ref": "#/components/schemas/AuditLog" }, { + "type": "object", "properties": { "actor": { - "$ref": "#/components/schemas/FeedbackActor" + "$ref": "#/components/schemas/AuditActor" } }, "required": [ "actor" - ], - "type": "object" + ] } ] }, - "GetCustomerLimitIncreaseOut": { + "FeedbackOut": { + "type": "object", "properties": { - "approved_daily": { - "example": 140000, - "maximum": 100000000000, - "type": [ - "integer", - "null" - ] - }, - "approved_monthly": { - "example": 700000, - "maximum": 100000000000, - "type": [ - "integer", - "null" - ] + "id": { + "type": "string", + "example": "fb_000000000000" }, - "approved_per_transaction": { - "example": 70000, - "maximum": 100000000000, + "instance_id": { "type": [ - "integer", + "string", "null" - ] + ], + "example": "in_000000000000" }, - "created_at": { - "example": "2021-01-01T00:00:00Z", - "format": "date-time", + "user_id": { "type": [ "string", "null" - ] - }, - "customer_id": { - "example": "re_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" + ], + "example": "us_000000000000" }, - "daily": { - "example": 200000, - "maximum": 100000000000, - "type": [ - "integer", - "null" + "type": { + "type": "string", + "enum": [ + "bug", + "suggestion", + "feedback", + "praise", + "complaint" ] }, - "id": { - "example": "rl_000000000000", - "maxLength": 15, - "minLength": 15, + "title": { "type": "string" }, - "monthly": { - "example": 1000000, - "maximum": 100000000000, - "type": [ - "integer", - "null" - ] + "description": { + "type": "string" }, - "per_transaction": { - "example": 100000, - "maximum": 100000000000, + "email": { "type": [ - "integer", + "string", "null" ] }, - "status": { - "enum": [ - "in_review", - "approved", - "rejected" - ], - "example": "in_review", - "type": "string" - }, - "supporting_document_file": { - "example": "https://example.com/document.pdf", - "format": "uri", + "page_url": { "type": [ "string", "null" ] }, - "supporting_document_type": { - "enum": [ - "individual_bank_statement", - "individual_tax_return", - "individual_proof_of_income", - "individual_pay_stub", - "individual_employment_letter", - "individual_investment_statement", - "individual_crypto_exchange_statement", - "individual_blockchain_wallet_statement", - "business_bank_statement", - "business_financial_statements", - "business_tax_return", - "business_contract", - "business_accounts_receivable", - "business_merchant_processor_statement", - "business_shareholder_loan" - ], - "example": "individual_bank_statement", + "user_agent": { "type": [ "string", "null" ] }, - "updated_at": { - "example": "2021-01-01T00:00:00Z", - "format": "date-time", + "created_at": { "type": [ "string", "null" - ] + ], + "format": "date-time", + "example": "2021-01-01T00:00:00Z" } }, "required": [ "id", - "status", - "customer_id" - ], - "type": "object" + "instance_id", + "user_id", + "type", + "title", + "description", + "email", + "page_url", + "user_agent" + ] }, - "GetCustomerLimitsOut": { - "example": { - "limits": { - "payin": { - "daily": 500000, - "monthly": 2000000 - }, - "payout": { - "daily": 300000, - "monthly": 1000000 - } - } - }, + "CreateFeedbackIn": { + "type": "object", "properties": { - "limits": { - "properties": { - "payin": { - "properties": { - "daily": { - "type": "number" - }, - "monthly": { - "type": "number" - } - }, - "required": [ - "daily", - "monthly" - ], - "type": "object" - }, - "payout": { - "properties": { - "daily": { - "type": "number" - }, - "monthly": { - "type": "number" - } - }, - "required": [ - "daily", - "monthly" - ], - "type": "object" - } - }, - "required": [ - "payin", - "payout" + "type": { + "type": "string", + "enum": [ + "bug", + "suggestion", + "feedback", + "praise" ], - "type": "object" - } - }, - "required": [ - "limits" - ], - "type": "object" - }, - "GetFeesOut": { - "properties": { - "ach": { - "$ref": "#/components/schemas/FeeOptions" + "example": "bug" }, - "ach_colombia": { - "$ref": "#/components/schemas/FeeOptions" + "title": { + "type": "string", + "minLength": 1, + "maxLength": 200, + "example": "Cannot create payout" }, - "arbitrum": { - "$ref": "#/components/schemas/FeeOptions" + "description": { + "type": "string", + "minLength": 1, + "maxLength": 5000, + "example": "When I click the create payout button, nothing happens." }, - "base": { - "$ref": "#/components/schemas/FeeOptions" + "page_url": { + "type": [ + "string", + "null" + ], + "maxLength": 2000, + "example": "https://app.blindpay.com/instances/in_123/payouts" }, - "created_at": { - "example": "2021-01-01T00:00:00Z", - "format": "date-time", + "user_agent": { "type": [ "string", "null" - ] + ], + "maxLength": 500, + "example": "Mozilla/5.0" + } + }, + "required": [ + "type", + "title", + "description" + ] + }, + "FeeOptions": { + "type": "object", + "properties": { + "payin_flat": { + "type": "integer", + "description": "Payin flat fee in cents", + "example": 40 }, - "domestic_wire": { - "$ref": "#/components/schemas/FeeOptions" + "payin_percentage": { + "type": "integer", + "description": "Payin percentage fee in basis points", + "example": 50 }, - "ethereum": { - "$ref": "#/components/schemas/FeeOptions" + "payout_flat": { + "type": "integer", + "description": "Payout flat fee in cents", + "example": 40 }, + "payout_percentage": { + "type": "integer", + "description": "Payout percentage fee in basis points", + "example": 50 + } + }, + "required": [ + "payin_flat", + "payin_percentage", + "payout_flat", + "payout_percentage" + ] + }, + "GetFeesOut": { + "type": "object", + "properties": { "id": { - "example": "fe_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" + "maxLength": 15, + "example": "fe_000000000000" }, "instance_id": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - }, - "international_swift": { - "$ref": "#/components/schemas/FeeOptions" - }, - "pix": { - "$ref": "#/components/schemas/FeeOptions" + "maxLength": 15, + "example": "in_000000000000" }, - "pix_safe": { + "ach": { "$ref": "#/components/schemas/FeeOptions" }, - "polygon": { + "domestic_wire": { "$ref": "#/components/schemas/FeeOptions" }, "rtp": { "$ref": "#/components/schemas/FeeOptions" }, - "sepa": { - "$ref": "#/components/schemas/FeeOptions" - }, - "solana": { + "international_swift": { "$ref": "#/components/schemas/FeeOptions" }, - "spei": { + "pix": { "$ref": "#/components/schemas/FeeOptions" }, - "stellar": { + "pix_safe": { "$ref": "#/components/schemas/FeeOptions" }, "ted": { @@ -21535,1939 +17656,1773 @@ } ] }, - "transfers_3": { + "ach_colombia": { "$ref": "#/components/schemas/FeeOptions" }, - "tron": { + "transfers_3": { "$ref": "#/components/schemas/FeeOptions" }, - "updated_at": { - "example": "2021-01-01T00:00:00Z", - "format": "date-time", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "id", - "instance_id", - "ach", - "domestic_wire", - "rtp", - "international_swift", - "pix", - "pix_safe", - "ach_colombia", - "transfers_3", - "spei", - "sepa", - "tron", - "ethereum", - "polygon", - "base", - "arbitrum", - "stellar", - "solana" - ], - "type": "object" - }, - "GetInvoicePdfSchemaOut": { - "properties": { - "url": { - "description": "Signed URL to the partner fee invoice PDF (expires in 15 minutes)", - "example": "https://invoices-bucket.s3.us-east-1.amazonaws.com/signed-url...", - "type": "string" - } - }, - "required": [ - "url" - ], - "type": "object" - }, - "GetInvoiceSchemaOut": { - "properties": { - "collection_id": { - "description": "Reference to invoice collection record", - "example": "ic_000000000000", - "type": [ - "string", - "null" - ] - }, - "credit_note_amount": { - "description": "Credit note amount in cents", - "example": 0, - "type": "integer" - }, - "discount": { - "description": "Discount amount in cents from Stripe coupon", - "example": 0, - "type": "integer" - }, - "due_date": { - "description": "Invoice due date (null for partner-fee-only invoices)", - "example": "2025-11-21T00:00:00.000Z", - "format": "date-time", - "type": [ - "string", - "null" - ] - }, - "has_partner_fee_invoice": { - "description": "Whether a partner fee collection invoice PDF is available", - "example": false, - "type": "boolean" - }, - "id": { - "description": "Invoice ID", - "example": "iv_000000000000", - "type": "string" - }, - "items": { - "description": "Addon items", - "items": { - "$ref": "#/components/schemas/AddonItemSchema" - }, - "type": "array" - }, - "minimum_per_month": { - "description": "Minimum monthly amount in cents", - "example": 200000, - "type": "integer" - }, - "payin_billing_fees": { - "description": "Payin billing fees in cents", - "example": 10000, - "type": "integer" - }, - "payin_partner_fees": { - "description": "Payin partner fees in cents (earnings)", - "example": 25000, - "type": "integer" - }, - "payment_id": { - "description": "Reference to invoice payment record", - "example": "ip_000000000000", - "type": [ - "string", - "null" - ] - }, - "payout_billing_fees": { - "description": "Payout billing fees in cents", - "example": 10000, - "type": "integer" - }, - "payout_partner_fees": { - "description": "Payout partner fees in cents (earnings)", - "example": 25000, - "type": "integer" - }, - "period_end": { - "description": "End of billing period", - "example": "2025-11-30T23:59:59.999Z", - "format": "date-time", - "type": "string" - }, - "period_start": { - "description": "Start of billing period", - "example": "2025-11-01T00:00:00.000Z", - "format": "date-time", - "type": "string" - }, - "status": { - "description": "Invoice status: owing (unpaid), paid (payment received), claimable (has partner fees to claim), collected (partner fees claimed), expired (voided), overdue (past due date)", - "enum": [ - "owing", - "paid", - "claimable", - "collected", - "expired", - "overdue" - ], - "example": "paid", - "type": "string" + "spei": { + "$ref": "#/components/schemas/FeeOptions" }, - "subscription_plan": { - "description": "Subscription plan: Basic, Business, or Enterprise", - "enum": [ - "Basic", - "Business", - "Enterprise" - ], - "example": "Basic", - "type": [ - "string", - "null" - ] + "sepa": { + "$ref": "#/components/schemas/FeeOptions" }, - "subscription_price": { - "description": "Subscription price in cents", - "example": 24900, - "type": "integer" + "tron": { + "$ref": "#/components/schemas/FeeOptions" }, - "total_to_collect": { - "description": "Total partner fees to collect (earnings) in cents", - "example": 50000, - "type": "integer" + "ethereum": { + "$ref": "#/components/schemas/FeeOptions" }, - "total_to_pay": { - "description": "Total amount owed to Blindpay in cents", - "example": 40000, - "type": "integer" + "polygon": { + "$ref": "#/components/schemas/FeeOptions" }, - "url": { - "description": "Invoice URL", - "example": "https://example.com", - "type": "string" + "base": { + "$ref": "#/components/schemas/FeeOptions" }, - "virtual_account_fees": { - "description": "Virtual account fees in cents", - "example": 10000, - "type": "integer" - } - }, - "required": [ - "id", - "status", - "period_start", - "period_end", - "due_date", - "virtual_account_fees", - "payin_billing_fees", - "payin_partner_fees", - "payout_billing_fees", - "payout_partner_fees", - "total_to_pay", - "total_to_collect", - "discount", - "credit_note_amount", - "url", - "has_partner_fee_invoice", - "minimum_per_month", - "subscription_price", - "items" - ], - "type": "object" - }, - "GetInvoicesSchemaOut": { - "properties": { - "current": { - "$ref": "#/components/schemas/CurrentUsageSchema" + "arbitrum": { + "$ref": "#/components/schemas/FeeOptions" }, - "invoices": { - "items": { - "$ref": "#/components/schemas/InvoiceItemSchema" - }, - "type": "array" - } - }, - "required": [ - "current", - "invoices" - ], - "type": "object" - }, - "InitiateTosIn": { - "properties": { - "customer_id": { - "example": "re_000000000000", - "maxLength": 15, - "minLength": 15, + "stellar": { + "$ref": "#/components/schemas/FeeOptions" + }, + "solana": { + "$ref": "#/components/schemas/FeeOptions" + }, + "created_at": { "type": [ "string", "null" - ] - }, - "idempotency_key": { - "example": "123e4567-e89b-12d3-a456-426614174000", - "format": "uuid", - "type": "string" + ], + "format": "date-time", + "example": "2021-01-01T00:00:00Z" }, - "redirect_url": { - "format": "uri", + "updated_at": { "type": [ "string", "null" - ] + ], + "format": "date-time", + "example": "2021-01-01T00:00:00Z" } }, "required": [ - "idempotency_key" - ], - "type": "object" + "id", + "instance_id", + "ach", + "domestic_wire", + "rtp", + "international_swift", + "pix", + "pix_safe", + "ach_colombia", + "transfers_3", + "spei", + "sepa", + "tron", + "ethereum", + "polygon", + "base", + "arbitrum", + "stellar", + "solana" + ] }, - "InitiateTosOut": { + "CreateInviteIn": { + "type": "object", "properties": { - "url": { - "example": "https://app.blindpay.com/e/terms-of-service?session_token=SESSION_TOKEN_FROM_INITIATE_TOS_RESPONSE", - "format": "uri", - "type": "string" + "email": { + "type": "string", + "format": "email", + "example": "john@doe.com" + }, + "user_role": { + "type": "string", + "enum": [ + "owner", + "admin", + "finance", + "checker", + "operations", + "developer", + "viewer" + ], + "example": "admin" + }, + "invite_all_owned_instances": { + "type": "boolean", + "default": false, + "description": "When true, the member is added/invited to every instance the inviter owns, ignoring the instance in the path.", + "example": false } }, "required": [ - "url" - ], - "type": "object" + "email", + "user_role" + ] }, - "InstanceIn": { + "InitiateTosOut": { + "type": "object", "properties": { - "name": { - "example": "My Instance", - "maxLength": 100, - "minLength": 3, - "type": "string" - }, - "seed_sample_data": { - "description": "Development instances only: seed sample customers, payouts and payins so the dashboard lands populated.", - "example": true, - "type": "boolean" - }, - "type": { - "enum": [ - "production", - "development" - ], - "example": "development", - "type": "string" + "url": { + "type": "string", + "format": "uri", + "example": "https://app.blindpay.com/e/terms-of-service?session_token=SESSION_TOKEN_FROM_INITIATE_TOS_RESPONSE" } }, "required": [ - "name", - "type" - ], - "type": "object" + "url" + ] }, - "InstanceOut": { + "InitiateTosIn": { + "type": "object", "properties": { - "compliance_emails": { - "description": "When non-empty, compliance Request for Information emails are sent only to these addresses instead of all instance members", - "example": [ - "compliance@example.com" - ], - "items": { - "format": "email", - "type": "string" - }, - "maxItems": 20, - "type": [ - "array", - "null" - ] + "idempotency_key": { + "type": "string", + "format": "uuid", + "example": "123e4567-e89b-12d3-a456-426614174000" }, - "customer_invite_redirect_url": { - "example": "https://blindpay.com", - "format": "uri", + "customer_id": { "type": [ "string", "null" - ] - }, - "customer_rfi_emails_enabled": { - "default": true, - "description": "Whether customer (customer) Request for Information notification emails are sent for this instance. Instance-level RFI emails are always sent regardless of this setting.", - "example": true, - "type": "boolean" + ], + "minLength": 15, + "maxLength": 15, + "example": "re_000000000000" }, - "customers_amount": { - "example": 150, + "redirect_url": { "type": [ - "number", + "string", "null" - ] - }, - "email_notifications": { - "default": true, - "description": "Whether email notifications are enabled for this instance", - "example": true, - "type": "boolean" - }, - "id": { - "example": "in_000000000000", - "maxLength": 15, + ], + "format": "uri" + } + }, + "required": [ + "idempotency_key" + ] + }, + "AcceptTosOut": { + "type": "object", + "properties": { + "tos_id": { + "type": "string", "minLength": 15, - "type": "string" + "maxLength": 15, + "example": "to_000000000000" }, - "invoice_due_date_days": { - "description": "Number of days from invoice creation to due date", - "example": 15, - "minimum": 0, - "type": [ - "integer", - "null" - ] + "idempotency_key": { + "type": "string", + "format": "uuid", + "example": "123e4567-e89b-12d3-a456-426614174000" }, - "is_fbo": { - "example": false, + "customer_id": { "type": [ - "boolean", + "string", "null" - ] - }, - "last_payout_date": { - "anyOf": [ - { - "format": "date-time", - "type": "string" - }, - { - "type": "string" - }, - { - "type": "null" - } ], - "example": "2022-01-01T00:00:00.000Z" + "minLength": 15, + "maxLength": 15, + "example": "re_000000000000" }, - "minimum_monthly_amount": { - "description": "Minimum monthly billing amount in USD", - "example": 2000, - "minimum": 0, + "version": { "type": [ - "number", + "string", "null" - ] - }, - "name": { - "example": "My Instance", - "maxLength": 100, - "minLength": 3, - "type": "string" - }, - "onboarding_step": { + ], "enum": [ - "initial", - "business_details", - "business_profile", - "documents", - "applicant", - "completed", - "blocked" + "1.0.0", + "1.0.1" ], - "example": "initial", - "type": "string" - }, - "require_passkey": { - "default": false, - "description": "Whether passkey verification is required for protected actions", - "example": false, - "type": "boolean" + "example": "1.0.0" + } + }, + "required": [ + "tos_id", + "idempotency_key" + ] + }, + "AcceptTosIn": { + "type": "object", + "properties": { + "session_token": { + "type": "string", + "example": "SESSION_TOKEN_FROM_INITIATE_TOS_RESPONSE" }, - "subscription_features": { - "anyOf": [ - { - "properties": { - "billing_charge": { - "type": [ - "boolean", - "null" - ] - }, - "international_swift": { - "type": "boolean" - }, - "manual_review_all_payments": { - "type": [ - "boolean", - "null" - ] - }, - "manual_review_skip": { - "$ref": "#/components/schemas/ManualReviewSkip" - }, - "otc": { - "type": [ - "boolean", - "null" - ] - }, - "otc_dynamic_rate": { - "type": [ - "boolean", - "null" - ] - }, - "otc_manual_execution": { - "type": [ - "boolean", - "null" - ] - }, - "payment_route": { - "$ref": "#/components/schemas/PaymentRoute" - }, - "ted_payin": { - "type": [ - "boolean", - "null" - ] - }, - "virtual_accounts": { - "type": "boolean" - }, - "wallets_and_transfers": { - "type": [ - "boolean", - "null" - ] - } - }, - "required": [ - "international_swift", - "virtual_accounts" - ], - "type": "object" - }, - { - "type": "string" - } - ], - "example": { - "billing_charge": false, - "international_swift": true, - "manual_review_all_payments": false, - "otc": false, - "otc_manual_execution": false, - "virtual_accounts": false, - "wallets_and_transfers": false - } + "idempotency_key": { + "type": "string", + "format": "uuid", + "example": "123e4567-e89b-12d3-a456-426614174000" }, - "subscription_plan": { - "description": "Subscription plan: Basic, Business, or Enterprise", - "enum": [ - "Basic", - "Business", - "Enterprise" - ], - "example": "Basic", + "customer_id": { "type": [ "string", "null" - ] - }, - "subscription_plan_amount": { - "description": "Monthly subscription plan amount in USD", - "example": 249, - "minimum": 0, - "type": [ - "number", - "null" - ] - }, - "subscription_status": { - "description": "Subscription status: active, pending_payment, past_due, or cancelled", - "enum": [ - "active", - "pending_payment", - "past_due", - "cancelled" ], - "example": "active", + "minLength": 15, + "maxLength": 15, + "example": "re_000000000000" + }, + "session": { "type": [ "string", "null" ] - }, + } + }, + "required": [ + "session_token", + "idempotency_key" + ] + }, + "CreateExternalCustomerTokenIn": { + "type": "object", + "properties": { "type": { + "type": "string", "enum": [ - "production", - "development" + "individual", + "business" ], - "example": "development", - "type": "string" - }, - "user_owner_id": { - "example": "us_000000000000", - "type": "string" + "example": "individual" }, - "user_role": { + "kyc_type": { + "type": "string", "enum": [ - "owner", - "admin", - "finance", - "checker", - "operations", - "developer", - "viewer" + "light", + "standard", + "enhanced" ], - "example": "admin", - "type": [ - "string", - "null" - ] + "example": "standard" } }, "required": [ - "id", - "name", "type", - "subscription_features", - "user_owner_id", - "onboarding_step" - ], - "type": "object" + "kyc_type" + ] }, - "InstanceRfi": { + "CreateInstanceOnboardingInviteIn": { + "type": "object", + "properties": { + "email": { + "type": "string", + "format": "email", + "description": "Email address of the person who will receive the onboarding invite", + "example": "collaborator@example.com" + } + }, + "required": [ + "email" + ] + }, + "CreateApiKeyOut": { + "type": "object", "properties": { - "created_at": { - "format": "date-time", - "type": "string" - }, - "expires_at": { - "format": "date-time", - "type": "string" - }, "id": { - "type": "string" - }, - "instance_id": { - "type": "string" - }, - "request": { - "items": { - "$ref": "#/components/schemas/RfiSection" - }, - "maxItems": 20, - "minItems": 1, - "type": "array" + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "ap_000000000000" }, - "response": { - "additionalProperties": { - "anyOf": [ - { - "maxLength": 4096, - "type": "string" - }, - { - "items": { - "format": "uri", - "type": "string" - }, - "maxItems": 20, - "type": "array" - } - ] - }, - "type": "object" + "token": { + "type": "string", + "example": "token" + } + }, + "required": [ + "id", + "token" + ] + }, + "CreateApiKeyIn": { + "type": "object", + "properties": { + "name": { + "type": "string", + "minLength": 1, + "example": "API Key Name" }, - "status": { + "permission": { + "type": "string", "enum": [ - "pending", - "submitted", - "expired", - "cancelled" + "full_access" ], - "type": "string" + "example": "full_access" }, - "submitted_at": { - "format": "date-time", + "ip_whitelist": { "type": [ - "string", + "array", "null" + ], + "items": { + "type": "string", + "format": "ip" + }, + "example": [ + "127.0.0.1", + "192.168.0.1" ] } }, "required": [ - "id", - "instance_id", - "status", - "request", - "response", - "expires_at", - "submitted_at", - "created_at" - ], - "type": [ - "object", - "null" + "name", + "permission" ] }, - "InvoiceItemSchema": { + "ApiKeyPublic": { + "type": "object", "properties": { - "collection_id": { - "description": "Reference to invoice_collection record", - "example": "ic_000000000000", - "type": [ - "string", - "null" - ] - }, - "discount": { - "description": "Discount amount in cents from Stripe coupon", - "example": 0, - "type": "integer" - }, - "due_date": { - "description": "Invoice due date (null for partner-fee-only invoices)", - "example": "2025-11-21T00:00:00.000Z", - "format": "date-time", - "type": [ - "string", - "null" - ] - }, - "has_partner_fee_invoice": { - "description": "Whether a partner fee collection invoice PDF is available", - "example": false, - "type": "boolean" - }, "id": { - "description": "Invoice ID", - "example": "iv_000000000000", - "type": "string" + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "ap_000000000000" }, - "minimum_per_month": { - "description": "Minimum monthly amount in cents at time of invoice", - "example": 200000, - "type": "integer" + "name": { + "type": "string", + "minLength": 1, + "example": "API Key Name" }, - "payin_billing_fees": { - "description": "Payin billing fees in cents", - "example": 10000, - "type": "integer" + "permission": { + "type": "string", + "enum": [ + "full_access" + ], + "example": "full_access" }, - "payin_partner_fees": { - "description": "Payin partner fees in cents (earnings)", - "example": 25000, - "type": "integer" + "token": { + "type": "string", + "example": "token" }, - "payment_id": { - "description": "Reference to invoice_payment record", - "example": "ip_000000000000", + "ip_whitelist": { "type": [ - "string", + "array", "null" + ], + "items": { + "type": "string", + "format": "ip" + }, + "example": [ + "127.0.0.1", + "192.168.0.1" ] }, - "payout_billing_fees": { - "description": "Payout billing fees in cents", - "example": 10000, - "type": "integer" - }, - "payout_partner_fees": { - "description": "Payout partner fees in cents (earnings)", - "example": 25000, - "type": "integer" - }, - "period_end": { - "description": "End of billing period", - "example": "2025-11-30T23:59:59.999Z", - "format": "date-time", - "type": "string" + "last_used_at": { + "example": "2021-01-01T00:00:00Z" }, - "period_start": { - "description": "Start of billing period", - "example": "2025-11-01T00:00:00.000Z", - "format": "date-time", - "type": "string" + "instance_id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "in_000000000000" }, - "reference": { - "description": "Invoice reference (billing period month/year)", - "example": "01/2026", + "created_at": { "type": [ "string", "null" - ] - }, - "status": { - "description": "Invoice status: owing (unpaid), paid (payment received), claimable (has partner fees to claim), collected (partner fees claimed), expired (voided), overdue (past due date)", - "enum": [ - "owing", - "paid", - "claimable", - "collected", - "expired", - "overdue" ], - "example": "paid", - "type": "string" + "format": "date-time", + "example": "2021-01-01T00:00:00Z" }, - "subscription_plan": { - "description": "Subscription plan used", - "enum": [ - "Basic", - "Business", - "Enterprise" - ], - "example": "Basic", + "updated_at": { "type": [ "string", "null" - ] - }, - "subscription_price": { - "description": "Subscription price in cents used", - "example": 24900, - "type": "integer" - }, - "total_to_collect": { - "description": "Total partner fees to collect (earnings) in cents", - "example": 50000, - "type": "integer" - }, - "total_to_pay": { - "description": "Total amount owed to Blindpay in cents", - "example": 40000, - "type": "integer" - }, - "url": { - "description": "Invoice URL", - "example": "https://example.com", - "type": "string" - }, - "virtual_account_fees": { - "description": "Virtual account fees in cents", - "example": 10000, - "type": "integer" + ], + "format": "date-time", + "example": "2021-01-01T00:00:00Z" } }, "required": [ "id", - "period_start", - "period_end", - "due_date", - "status", - "virtual_account_fees", - "payin_billing_fees", - "payin_partner_fees", - "payout_billing_fees", - "payout_partner_fees", - "total_to_pay", - "total_to_collect", - "discount", - "url", - "has_partner_fee_invoice", - "minimum_per_month", - "subscription_price" - ], - "type": "object" + "name", + "permission", + "token", + "instance_id" + ] }, - "KycDecisionBody": { + "WebhookEndpointOut": { + "type": "object", "properties": { - "decision": { - "enum": [ - "approved", - "rejected" - ], - "type": "string" - }, - "reason": { - "maxLength": 2048, - "type": "string" - }, - "reviewed_by": { - "format": "email", - "type": "string" + "id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "we_000000000000" } }, "required": [ - "decision", - "reviewed_by" - ], - "type": "object" + "id" + ] }, - "LedgerOperation": { + "WebhookEndpointIn": { + "type": "object", "properties": { - "bank_external_id": { - "type": [ - "string", - "null" + "url": { + "type": "string", + "format": "uri", + "example": "https://example.com/webhook" + }, + "events": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "customer.new", + "customer.update", + "customer.delete", + "bankAccount.new", + "payout.new", + "payout.update", + "payout.complete", + "payout.partnerFee", + "blockchainWallet.new", + "payin.new", + "payin.update", + "payin.complete", + "payin.partnerFee", + "tos.accept", + "limitIncrease.new", + "limitIncrease.update", + "virtualAccount.new", + "virtualAccount.complete", + "transfer.new", + "transfer.update", + "transfer.complete", + "wallet.new", + "wallet.inbound" + ] + }, + "example": [ + "customer.new" ] + } + }, + "required": [ + "url", + "events" + ] + }, + "WebhookEndpoint": { + "type": "object", + "properties": { + "id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "we_000000000000" }, - "counterparty_address": { - "type": [ - "string", - "null" + "url": { + "type": "string", + "format": "uri", + "example": "https://example.com/webhook" + }, + "events": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "customer.new", + "customer.update", + "customer.delete", + "bankAccount.new", + "payout.new", + "payout.update", + "payout.complete", + "payout.partnerFee", + "blockchainWallet.new", + "payin.new", + "payin.update", + "payin.complete", + "payin.partnerFee", + "tos.accept", + "limitIncrease.new", + "limitIncrease.update", + "virtualAccount.new", + "virtualAccount.complete", + "transfer.new", + "transfer.update", + "transfer.complete", + "wallet.new", + "wallet.inbound" + ] + }, + "example": [ + "customer.new" ] }, + "last_event_at": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "string" + }, + { + "type": "null" + } + ], + "example": "2024-01-01T00:00:00.000Z" + }, + "instance_id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "in_000000000000" + }, "created_at": { "type": [ "string", "null" - ] + ], + "format": "date-time", + "example": "2021-01-01T00:00:00Z" }, - "currency": { + "updated_at": { "type": [ "string", "null" - ] + ], + "format": "date-time", + "example": "2021-01-01T00:00:00Z" + } + }, + "required": [ + "id", + "url", + "events", + "instance_id" + ] + }, + "PortalAccessOut": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "example": "https://example.com/webhook" + } + }, + "required": [ + "url" + ] + }, + "PayinOut": { + "type": "object", + "properties": { + "id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "re_000000000000" }, - "external_id": { + "pix_code": { "type": [ "string", "null" - ] + ], + "description": "PIX code", + "example": "00020101021226790014br.gov.bcb.pix2557brcode.starkinfra.com/v2/bcf07f6c4110454e9fd6f120bab13e835204000053039865802BR5915Blind Pay, Inc.6010Vila Velha62070503***6304BCAB" }, - "funding_end_to_end_id": { + "memo_code": { "type": [ "string", "null" - ] - }, - "id": { - "type": "string" + ], + "description": "Memo code", + "example": "8K45GHBNT6BQ6462" }, - "instance_id": { + "clabe": { "type": [ "string", "null" - ] - }, - "is_otc": { - "type": "boolean" + ], + "description": "CLABE code", + "example": "014027000000000008" }, - "kind": { + "status": { + "type": "string", "enum": [ - "payin", - "payout" + "processing", + "on_hold", + "failed", + "refunded", + "completed" ], - "type": "string" + "description": "Payin general status", + "example": "processing" }, - "memo_code": { - "type": [ - "string", - "null" - ] + "payin_quote_id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "pq_000000000000" }, - "network": { - "type": [ - "string", - "null" - ] + "instance_id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "in_000000000000" }, - "payer_tax_id": { - "type": [ - "string", - "null" - ] + "customer_id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "re_000000000000" }, - "provider": { - "type": [ - "string", - "null" - ] + "partner_fee": { + "type": "integer", + "minimum": 0, + "default": 0, + "description": "Payin partner fee amount in cents", + "example": 25000 }, - "provider_transaction_ids": { - "items": { - "type": "string" + "tracking_transaction": { + "type": "object", + "properties": { + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Payin transaction step", + "example": "processing" + }, + "status": { + "type": [ + "string", + "null" + ], + "enum": [ + "failed", + "completed" + ], + "description": "Payin transaction status", + "example": "failed" + }, + "external_id": { + "type": [ + "string", + "null" + ], + "description": "Payin transaction external id", + "example": "12345678" + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "description": "Payin transaction completed date", + "example": "2011-10-05T14:48:00.000Z" + }, + "transaction_hash": { + "type": [ + "string", + "null" + ], + "description": "Blockchain transaction hash", + "example": "0x123...890" + }, + "provider_name": { + "type": [ + "string", + "null" + ], + "enum": [ + "Nvio Pagos", + "Brex", + "Stark Bank", + "JPMorgan Chase", + "HSBC", + "Inter", + "JP Morgan Chase", + "Bitso", + "Citi", + "CFSB", + "Triple A Technologies", + "Portage Bank" + ], + "description": "Payment provider name", + "example": "HSBC" + }, + "provider_transaction_id": { + "type": [ + "string", + "null" + ], + "description": "Payment provider transaction id", + "example": "" + }, + "sender_name": { + "type": [ + "string", + "null" + ], + "example": "John Doe Smith" + }, + "sender_bank_name": { + "type": [ + "string", + "null" + ], + "example": "Bank of America" + }, + "sender_tax_id": { + "type": [ + "string", + "null" + ], + "example": "123.456.789-10" + }, + "sender_bank_code": { + "type": [ + "string", + "null" + ], + "example": "00416968" + }, + "sender_account_number": { + "type": [ + "string", + "null" + ], + "example": "1234567890" + }, + "end_to_end_id": { + "type": [ + "string", + "null" + ], + "description": "BACEN Pix end-to-end transaction ID (govt Pix ID)", + "example": "E20018183202603311320vm6ALFpJpsS" + }, + "trace_number": { + "type": [ + "string", + "null" + ], + "example": "1234567890" + }, + "transaction_reference": { + "type": [ + "string", + "null" + ], + "example": "1234567890" + }, + "description": { + "type": [ + "string", + "null" + ], + "example": "Payment from John Doe Smith" + }, + "pse_instruction": { + "type": [ + "object", + "null" + ], + "properties": { + "payment_link": { + "type": "string", + "description": "PSE payment link URL", + "example": "https://pse.example.com/payment/abc123" + }, + "fid": { + "type": "string", + "description": "PSE funding identifier for webhook matching", + "example": "fid_abc123" + }, + "full_name": { + "type": "string", + "description": "PSE payer full name", + "example": "Juan Pérez García" + }, + "tax_id": { + "type": "string", + "description": "PSE payer document number", + "example": "1234567890" + }, + "document_type": { + "type": "string", + "enum": [ + "CC", + "NIT" + ], + "description": "PSE payer document type", + "example": "CC" + }, + "phone": { + "type": "string", + "description": "PSE payer phone number", + "example": "+573001234567" + }, + "email": { + "type": "string", + "description": "PSE payer email", + "example": "juan@example.com" + }, + "bank_code": { + "type": [ + "string", + "null" + ], + "description": "PSE payer bank code", + "example": "1007" + } + }, + "required": [ + "payment_link", + "fid", + "full_name", + "tax_id", + "document_type", + "phone", + "email" + ] + }, + "transfers_instruction": { + "type": [ + "object", + "null" + ], + "properties": { + "account": { + "type": "string", + "description": "CVU/CBU/Alias account number", + "example": "0000003100012389237485" + }, + "type": { + "type": "string", + "enum": [ + "CVU", + "CBU", + "ALIAS" + ], + "description": "Account type (CVU, CBU, or ALIAS)", + "example": "CVU" + }, + "tax_id": { + "type": [ + "string", + "null" + ], + "description": "CUIT/CUIL (normalized, digits only)", + "example": "20123456783" + } + }, + "required": [ + "account", + "type" + ] + }, + "ted_instruction": { + "type": [ + "object", + "null" + ], + "properties": { + "beneficiary_name": { + "type": "string", + "example": "Blind Pay, Inc." + }, + "tax_id": { + "type": "string", + "example": "57.599.376/0001-81" + }, + "bank_code": { + "type": "string", + "example": "665" + }, + "bank_name": { + "type": "string", + "example": "STARK BANK S.A." + }, + "branch_code": { + "type": "string", + "example": "5340" + }, + "account_number": { + "type": "string", + "example": "01011707084-8" + }, + "account_type": { + "type": "string", + "example": "checking" + } + }, + "required": [ + "beneficiary_name", + "tax_id", + "bank_code", + "bank_name", + "branch_code", + "account_number", + "account_type" + ] + } }, - "type": "array" - }, - "receiver_amount": { - "type": [ - "string", - "null" - ] - }, - "recipient_tax_id": { - "type": [ - "string", - "null" - ] - }, - "sender_amount": { - "type": [ - "string", - "null" + "required": [ + "step" ] }, - "status": { - "type": [ - "string", - "null" + "tracking_payment": { + "type": "object", + "properties": { + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Payment step", + "example": "on_hold" + }, + "provider_name": { + "type": [ + "string", + "null" + ], + "description": "Payment provider name", + "example": "blockchain" + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "description": "Payment completed date", + "example": "2011-10-05T14:48:00.000Z" + }, + "review_source": { + "type": [ + "string", + "null" + ], + "description": "Risk source that sent this payin to manual review", + "example": "seon_review" + }, + "review_context": { + "type": [ + "object", + "null" + ], + "additionalProperties": {}, + "description": "Structured risk context for manual review" + }, + "approved_risk_sources": { + "type": [ + "array", + "null" + ], + "items": { + "type": "string" + }, + "description": "Risk sources already approved by an analyst", + "example": [ + "seon_review" + ] + } + }, + "required": [ + "step" ] }, - "tx_hashes": { - "items": { - "type": "string" + "tracking_complete": { + "type": "object", + "properties": { + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Complete step", + "example": "on_hold" + }, + "transaction_hash": { + "type": [ + "string", + "null" + ], + "description": "Complete transaction hash", + "example": "0x123...890" + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "description": "Complete completed date", + "example": "2011-10-05T14:48:00.000Z" + } }, - "type": "array" - }, - "updated_at": { - "type": [ - "string", - "null" + "required": [ + "step" ] }, - "veem_customer_id": { + "manual_execution_status": { "type": [ "string", "null" - ] - } - }, - "required": [ - "kind", - "id", - "instance_id", - "status", - "provider", - "currency", - "sender_amount", - "receiver_amount", - "network", - "counterparty_address", - "tx_hashes", - "provider_transaction_ids", - "external_id", - "bank_external_id", - "memo_code", - "recipient_tax_id", - "veem_customer_id", - "funding_end_to_end_id", - "payer_tax_id", - "is_otc", - "created_at", - "updated_at" - ], - "type": "object" - }, - "LimitIncreaseNewWebhookOut": { - "properties": { - "approved_daily": { - "example": 140000, - "maximum": 100000000000, - "type": [ - "integer", - "null" - ] - }, - "approved_monthly": { - "example": 700000, - "maximum": 100000000000, - "type": [ - "integer", - "null" - ] + ], + "enum": [ + "pending", + "concluded", + "failed" + ], + "description": "When non-null, the payin was created while the manual OTC liquidity toggle was ON. `pending` means an operator must convert BRL→USDT manually and click \"Mark concluded\"; `concluded` closes the internal flow. Customer-facing behavior is identical in either mode.", + "example": null }, - "approved_per_transaction": { - "example": 70000, - "maximum": 100000000000, - "type": [ - "integer", - "null" - ] + "manual_concluded_at": { + "description": "When `manual_execution_status` transitioned to `concluded`. Postgres returns a Date; this transform normalizes to an ISO string for the SDK.", + "example": null }, - "created_at": { - "example": "2021-01-01T00:00:00Z", - "format": "date-time", + "manual_concluded_by": { "type": [ "string", "null" - ] - }, - "customer_id": { - "example": "re_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - }, - "daily": { - "example": 200000, - "maximum": 100000000000, - "type": [ - "integer", - "null" - ] - }, - "id": { - "example": "rl_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - }, - "monthly": { - "example": 1000000, - "maximum": 100000000000, - "type": [ - "integer", - "null" - ] - }, - "per_transaction": { - "example": 100000, - "maximum": 100000000000, - "type": [ - "integer", - "null" - ] - }, - "status": { - "enum": [ - "in_review", - "approved", - "rejected" ], - "example": "in_review", - "type": "string" + "description": "Identifier of the operator who marked the manual OTC concluded.", + "example": null }, - "supporting_document_file": { - "example": "https://example.com/document.pdf", - "format": "uri", + "created_at": { "type": [ "string", "null" - ] - }, - "supporting_document_type": { - "enum": [ - "individual_bank_statement", - "individual_tax_return", - "individual_proof_of_income", - "individual_pay_stub", - "individual_employment_letter", - "individual_investment_statement", - "individual_crypto_exchange_statement", - "individual_blockchain_wallet_statement", - "business_bank_statement", - "business_financial_statements", - "business_tax_return", - "business_contract", - "business_accounts_receivable", - "business_merchant_processor_statement", - "business_shareholder_loan" ], - "example": "individual_bank_statement", - "type": [ - "string", - "null" - ] + "format": "date-time", + "example": "2021-01-01T00:00:00Z" }, "updated_at": { - "example": "2021-01-01T00:00:00Z", - "format": "date-time", "type": [ "string", "null" - ] - }, - "webhook_event": { - "enum": [ - "limitIncrease.new" ], - "type": "string" - } - }, - "required": [ - "webhook_event", - "id", - "status", - "customer_id" - ], - "type": "object" - }, - "LimitIncreaseUpdateWebhookOut": { - "properties": { - "approved_daily": { - "example": 140000, - "maximum": 100000000000, - "type": [ - "integer", - "null" - ] - }, - "approved_monthly": { - "example": 700000, - "maximum": 100000000000, - "type": [ - "integer", - "null" - ] - }, - "approved_per_transaction": { - "example": 70000, - "maximum": 100000000000, - "type": [ - "integer", - "null" - ] - }, - "created_at": { - "example": "2021-01-01T00:00:00Z", "format": "date-time", - "type": [ - "string", - "null" - ] - }, - "customer_id": { - "example": "re_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - }, - "daily": { - "example": 200000, - "maximum": 100000000000, - "type": [ - "integer", - "null" - ] - }, - "id": { - "example": "rl_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - }, - "monthly": { - "example": 1000000, - "maximum": 100000000000, - "type": [ - "integer", - "null" - ] - }, - "per_transaction": { - "example": 100000, - "maximum": 100000000000, - "type": [ - "integer", - "null" - ] - }, - "status": { - "enum": [ - "in_review", - "approved", - "rejected" - ], - "example": "in_review", - "type": "string" + "example": "2021-01-01T00:00:00Z" }, - "supporting_document_file": { - "example": "https://example.com/document.pdf", - "format": "uri", + "image_url": { "type": [ "string", "null" - ] - }, - "supporting_document_type": { - "enum": [ - "individual_bank_statement", - "individual_tax_return", - "individual_proof_of_income", - "individual_pay_stub", - "individual_employment_letter", - "individual_investment_statement", - "individual_crypto_exchange_statement", - "individual_blockchain_wallet_statement", - "business_bank_statement", - "business_financial_statements", - "business_tax_return", - "business_contract", - "business_accounts_receivable", - "business_merchant_processor_statement", - "business_shareholder_loan" ], - "example": "individual_bank_statement", - "type": [ - "string", - "null" - ] + "format": "uri", + "example": "https://example.com/image.png" }, - "updated_at": { - "example": "2021-01-01T00:00:00Z", - "format": "date-time", + "first_name": { "type": [ "string", "null" - ] - }, - "webhook_event": { - "enum": [ - "limitIncrease.update" - ], - "type": "string" - } - }, - "required": [ - "webhook_event", - "id", - "status", - "customer_id" - ], - "type": "object" - }, - "ManualReviewSkip": { - "description": "Per-rail threshold (in cents of the rail currency: USD for ach/wire/rtp, BRL for pix) at or below which payins and payouts skip the manual review. Takes precedence over the manual-review toggles (customer force_manual_review and instance manual_review_all_payments). FULL bypass: it also takes precedence over the SEON pre-send fraud gate (the check still runs and flags are still posted to Slack for audit). Configure only for fully trusted instances with low thresholds.", - "example": { - "ach": { - "max_amount_usd_cents": 100000 - }, - "pix": { - "max_amount_brl_cents": 500000 - }, - "rtp": { - "max_amount_usd_cents": 50000 - }, - "wire": { - "max_amount_usd_cents": 500000 - } - }, - "properties": { - "ach": { - "properties": { - "max_amount_usd_cents": { - "description": "Threshold in USD cents. Payins and payouts on this rail at or below it skip the manual review.", - "example": 100000, - "minimum": 0, - "type": "integer" - } - }, - "required": [ - "max_amount_usd_cents" - ], - "type": "object" - }, - "pix": { - "properties": { - "max_amount_brl_cents": { - "description": "Threshold in BRL cents. Pix payins and payouts at or below it skip the manual review.", - "example": 500000, - "minimum": 0, - "type": "integer" - } - }, - "required": [ - "max_amount_brl_cents" - ], - "type": "object" - }, - "rtp": { - "properties": { - "max_amount_usd_cents": { - "description": "Threshold in USD cents. Payins and payouts on this rail at or below it skip the manual review.", - "example": 100000, - "minimum": 0, - "type": "integer" - } - }, - "required": [ - "max_amount_usd_cents" - ], - "type": "object" - }, - "wire": { - "properties": { - "max_amount_usd_cents": { - "description": "Threshold in USD cents. Payins and payouts on this rail at or below it skip the manual review.", - "example": 100000, - "minimum": 0, - "type": "integer" - } - }, - "required": [ - "max_amount_usd_cents" ], - "type": "object" - } - }, - "type": [ - "object", - "null" - ] - }, - "MigrateInstanceOwnershipIn": { - "properties": { - "user_id": { - "example": "us_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - } - }, - "required": [ - "user_id" - ], - "type": "object" - }, - "MonitoredWallet": { - "properties": { - "address": { - "type": "string" + "example": "John" }, - "instance_id": { + "last_name": { "type": [ "string", "null" - ] - }, - "label": { - "description": "treasury: for the shared treasury wallet, instance: for a `wallet` row, instance::offramp for an `offramp_wallet` row.", - "example": "instance:inst_abc123", - "type": "string" + ], + "example": "Doe" }, - "network": { - "type": "string" + "legal_name": { + "type": [ + "string", + "null" + ], + "example": "Company Name Inc." }, - "source": { + "type": { + "type": "string", "enum": [ - "treasury", - "wallet", - "offramp_wallet" + "individual", + "business" ], - "type": "string" - } - }, - "required": [ - "network", - "address", - "label", - "source", - "instance_id" - ], - "type": "object" - }, - "OfframpWallet": { - "properties": { - "address": { - "example": "TALJN9zTTEL9TVBb4WuTt6wLvPqJZr3hvb", - "type": "string" + "example": "individual" }, - "bank_account_id": { - "example": "ba_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" + "payment_method": { + "type": "string", + "enum": [ + "ach", + "wire", + "pix", + "ted", + "spei", + "transfers", + "pse", + "international_swift", + "rtp" + ], + "example": "pix" }, - "circle_wallet_id": { - "example": "01234567-abcd-efgh-ijkl-012345678901", + "sender_amount": { "type": [ - "string", + "number", "null" - ] + ], + "description": "52.40 BRL needs to be sent in a pix transfer", + "example": 5240 }, - "created_at": { - "example": "2021-01-01T00:00:00Z", - "format": "date-time", + "receiver_amount": { "type": [ - "string", + "number", "null" - ] + ], + "description": "10.10 USDC", + "example": 1010 }, - "customer_id": { - "example": "re_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" + "token": { + "type": "string", + "enum": [ + "USDC", + "USDT", + "USDB" + ], + "example": "USDC" }, - "external_id": { - "example": "your_external_id", + "partner_fee_id": { "type": [ "string", "null" - ] - }, - "id": { - "example": "ow_000000000000", - "maxLength": 15, + ], "minLength": 15, - "type": "string" - }, - "instance_id": { - "example": "in_000000000000", "maxLength": 15, - "minLength": 15, - "type": "string" + "example": "pf_000000000000" }, - "network": { - "enum": [ - "tron", - "solana", - "solana_devnet", - "arbitrum", - "base", - "ethereum", - "polygon", - "sepolia", - "arbitrum_sepolia", - "base_sepolia", - "polygon_amoy" + "partner_fee_amount": { + "type": [ + "number", + "null" ], - "example": "tron", - "type": "string" + "default": 0, + "description": "1.5 USDC", + "example": 150 }, - "updated_at": { - "example": "2021-01-01T00:00:00Z", - "format": "date-time", + "total_fee_amount": { "type": [ - "string", + "number", "null" - ] - } - }, - "required": [ - "id", - "instance_id", - "customer_id", - "bank_account_id", - "network", - "address" - ], - "type": "object" - }, - "PaginationMetadata": { - "properties": { - "has_more": { - "description": "Whether or not there are more elements available after this set.", - "example": true, - "type": "boolean" + ], + "default": 0, + "description": "1.53 USDC", + "example": 1.53 }, - "next_page": { - "description": "The ID of the first item in the next page of results.", - "example": "pi_123", + "commercial_quotation": { "type": [ - "string", + "number", "null" - ] + ], + "description": "1 USD = 4.95 BRL", + "example": 495 }, - "prev_page": { - "description": "The ID of the first item in the previous page of results.", - "example": "pi_123", + "blindpay_quotation": { "type": [ - "string", + "number", "null" - ] - } - }, - "required": [ - "has_more" - ], - "type": "object" - }, - "PayInvoiceSchemaOut": { - "properties": { - "amount": { - "description": "Amount to pay in cents (USD)", - "example": 40000, - "type": "integer" + ], + "description": "1 USD = 5.05 BRL (commercial quotation + (blindpay taxes))", + "example": 505 }, - "solana_wallet": { - "description": "Solana wallet address to send USDC to", - "example": "Sol1abc123def456", - "type": "string" + "currency": { + "type": "string", + "enum": [ + "BRL", + "USD", + "MXN", + "COP", + "ARS", + "EUR" + ], + "description": "ISO 4271 currency code", + "example": "BRL" }, - "tron_wallet": { - "description": "Tron wallet address to send USDT to", - "example": "TXYZabcd1234567890", - "type": "string" - } - }, - "required": [ - "amount", - "tron_wallet", - "solana_wallet" - ], - "type": "object" - }, - "PayinCompleteWebhookOut": { - "properties": { "billing_fee_amount": { + "type": [ + "number", + "null" + ], "description": "Billing fee in cents (charged at the end of the month)", - "example": 50, + "example": 50 + }, + "transaction_fee_amount": { "type": [ "number", "null" - ] + ], + "description": "Transaction fee in cents (percentage-based fee)", + "example": 100 + }, + "is_otc": { + "type": [ + "boolean", + "null" + ], + "description": "If true, the payin quote is for an OTC (Over the Counter) transaction", + "example": false + }, + "payer_rules": { + "type": [ + "object", + "null" + ], + "properties": { + "pix_allowed_tax_ids": { + "type": [ + "array", + "null" + ], + "items": { + "type": "string", + "example": "123.456.789-09" + } + }, + "transfers_allowed_tax_id": { + "type": [ + "string", + "null" + ], + "example": "20-12345678-3" + }, + "pse_allowed_tax_ids": { + "type": [ + "array", + "null" + ], + "items": { + "type": "string", + "example": "1234567890" + } + }, + "pse_full_name": { + "type": [ + "string", + "null" + ], + "maxLength": 50 + }, + "pse_document_type": { + "type": [ + "string", + "null" + ], + "enum": [ + "CC", + "NIT" + ] + }, + "pse_document_number": { + "type": [ + "string", + "null" + ] + }, + "pse_email": { + "type": [ + "string", + "null" + ], + "format": "email" + }, + "pse_phone": { + "type": [ + "string", + "null" + ], + "pattern": "^\\+573\\d{9}$" + }, + "pse_bank_code": { + "type": [ + "string", + "null" + ] + } + }, + "example": { + "pix_allowed_tax_ids": [ + "123.456.789-09" + ], + "transfers_allowed_tax_id": "20-12345678-3", + "pse_allowed_tax_ids": [ + "1234567890" + ] + } + }, + "name": { + "type": "string", + "example": "Wallet Display Name" + }, + "address": { + "type": [ + "string", + "null" + ], + "example": "0xDD6a3aD0949396e57C7738ba8FC1A46A5a1C372C" + }, + "network": { + "type": "string", + "enum": [ + "base", + "sepolia", + "arbitrum_sepolia", + "base_sepolia", + "arbitrum", + "polygon", + "polygon_amoy", + "ethereum", + "stellar", + "stellar_testnet", + "tron", + "solana", + "solana_devnet" + ], + "example": "polygon" }, "blindpay_bank_details": { + "type": [ + "object", + "null" + ], "properties": { + "routing_number": { + "type": "string", + "default": "121145349", + "example": "121145349" + }, "account_number": { + "type": "string", "default": "621327727210181", - "example": "621327727210181", - "type": "string" + "example": "621327727210181" }, "account_type": { + "type": "string", "default": "Business checking", - "example": "Business checking", - "type": "string" + "example": "Business checking" + }, + "swift_bic_code": { + "type": [ + "string", + "null" + ], + "default": "CHASUS33", + "example": "CHASUS33" }, "ach": { + "type": [ + "object", + "null" + ], "properties": { - "account_number": { - "example": "123456789", - "type": "string" - }, "routing_number": { - "example": "123456789", - "type": "string" + "type": "string", + "example": "123456789" + }, + "account_number": { + "type": "string", + "example": "123456789" } }, "required": [ "routing_number", "account_number" + ] + }, + "wire": { + "type": [ + "object", + "null" ], + "properties": { + "routing_number": { + "type": "string", + "example": "123456789" + }, + "account_number": { + "type": "string", + "example": "123456789" + } + }, + "required": [ + "routing_number", + "account_number" + ] + }, + "rtp": { "type": [ "object", "null" + ], + "properties": { + "routing_number": { + "type": "string", + "example": "123456789" + }, + "account_number": { + "type": "string", + "example": "123456789" + } + }, + "required": [ + "routing_number", + "account_number" ] }, "beneficiary": { + "type": "object", "properties": { + "name": { + "type": "string", + "default": "BlindPay, Inc.", + "example": "BlindPay, Inc." + }, "address_line_1": { + "type": "string", "default": "8 The Green, #19364", - "example": "8 The Green, #19364", - "type": "string" + "example": "8 The Green, #19364" }, "address_line_2": { + "type": "string", "default": "Dover, DE 19901", - "example": "Dover, DE 19901", - "type": "string" - }, - "name": { - "default": "BlindPay, Inc.", - "example": "BlindPay, Inc.", - "type": "string" + "example": "Dover, DE 19901" } - }, - "type": "object" + } }, "receiving_bank": { + "type": "object", "properties": { + "name": { + "type": "string", + "default": "CFSB", + "example": "CFSB" + }, "address_line_1": { + "type": "string", "default": "1 Letterman Drive, Building A, Suite A4-700", - "example": "1 Letterman Drive, Building A, Suite A4-700", - "type": "string" + "example": "1 Letterman Drive, Building A, Suite A4-700" }, "address_line_2": { + "type": "string", "default": "San Francisco, CA 94129", - "example": "San Francisco, CA 94129", - "type": "string" - }, - "name": { - "default": "CFSB", - "example": "CFSB", - "type": "string" - } - }, - "type": "object" - }, - "routing_number": { - "default": "121145349", - "example": "121145349", - "type": "string" - }, - "rtp": { - "properties": { - "account_number": { - "example": "123456789", - "type": "string" - }, - "routing_number": { - "example": "123456789", - "type": "string" + "example": "San Francisco, CA 94129" } - }, - "required": [ - "routing_number", - "account_number" - ], - "type": [ - "object", - "null" - ] + } }, "swift_account_number": { - "example": "GB50TCCL04140449730892", "type": [ "string", "null" - ] + ], + "example": "GB50TCCL04140449730892" }, - "swift_bic_code": { - "default": "CHASUS33", - "example": "CHASUS33", + "swift_receiving_bank": { "type": [ - "string", + "object", "null" - ] - }, - "swift_receiving_bank": { + ], "properties": { - "address_line_1": { - "example": "270 Park Ave", + "name": { "type": [ "string", "null" - ] + ], + "example": "JPMorgan Chase" }, - "address_line_2": { - "example": "New York, NY, 10017-2070", + "address_line_1": { "type": [ "string", "null" - ] + ], + "example": "270 Park Ave" }, - "name": { - "example": "JPMorgan Chase", + "address_line_2": { "type": [ "string", "null" - ] - } - }, - "type": [ - "object", - "null" - ] - }, - "wire": { - "properties": { - "account_number": { - "example": "123456789", - "type": "string" - }, - "routing_number": { - "example": "123456789", - "type": "string" + ], + "example": "New York, NY, 10017-2070" } - }, - "required": [ - "routing_number", - "account_number" - ], - "type": [ - "object", - "null" - ] + } } }, "required": [ "beneficiary", "receiving_bank" - ], - "type": "object" + ] }, - "clabe": { - "description": "CLABE code", - "example": "014027000000000008", + "pse_payment_link": { "type": [ "string", "null" - ] + ], + "description": "PSE payment link (derived from tracking_transaction.pse_instruction)", + "example": "https://pse.example.com/payment/abc123" }, - "customer_id": { - "example": "re_000000000000", - "maxLength": 15, - "minLength": 15, + "pse_full_name": { "type": [ "string", "null" - ] - }, - "id": { - "example": "pi_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" + ], + "description": "PSE payer full name", + "example": "Juan Pérez García" }, - "memo_code": { - "description": "Memo code", - "example": "8K45GHBNT6BQ6462", + "pse_tax_id": { "type": [ "string", "null" - ] + ], + "description": "PSE payer document number", + "example": "1234567890" }, - "partner_fee": { - "default": 0, - "description": "Payin partner fee amount in cents", - "example": 25000, - "minimum": 0, - "type": "integer" + "pse_document_type": { + "type": [ + "string", + "null" + ], + "enum": [ + "CC", + "NIT" + ], + "description": "PSE payer document type", + "example": "CC" + } + }, + "required": [ + "id", + "status", + "payin_quote_id", + "instance_id", + "customer_id", + "tracking_transaction", + "tracking_payment", + "tracking_complete", + "type", + "payment_method", + "sender_amount", + "receiver_amount", + "token", + "commercial_quotation", + "blindpay_quotation", + "currency", + "name", + "network" + ] + }, + "CreatePayinOut": { + "type": "object", + "properties": { + "id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "pi_000000000000" }, - "payment_method": { + "status": { + "type": "string", "enum": [ - "ach", - "wire", - "pix", - "ted", - "spei", - "transfers", - "pse", - "international_swift", - "rtp" + "processing", + "on_hold", + "failed", + "refunded", + "completed" ], - "example": "pix", - "type": [ - "string", - "null" - ] + "description": "Payin general status", + "example": "processing" }, "pix_code": { - "description": "PIX code", - "example": "00020101021226790014br.gov.bcb.pix2557brcode.starkinfra.com/v2/bcf07f6c4110454e9fd6f120bab13e835204000053039865802BR5915Blind Pay, Inc.6010Vila Velha62070503***6304BCAB", "type": [ "string", "null" - ] + ], + "description": "PIX code", + "example": "00020101021226790014br.gov.bcb.pix2557brcode.starkinfra.com/v2/bcf07f6c4110454e9fd6f120bab13e835204000053039865802BR5915Blind Pay, Inc.6010Vila Velha62070503***6304BCAB" }, - "receiver_amount": { - "description": "10.10 USDC", - "example": 1010, + "memo_code": { "type": [ - "number", + "string", "null" - ] + ], + "description": "Memo code", + "example": "8K45GHBNT6BQ6462" }, - "sender_amount": { - "description": "52.40 BRL needs to be sent in a pix transfer", - "example": 5240, + "clabe": { "type": [ - "number", + "string", "null" - ] - }, - "status": { - "description": "Payin general status", - "enum": [ - "processing", - "on_hold", - "failed", - "refunded", - "completed" ], - "example": "processing", - "type": "string" + "description": "CLABE code", + "example": "014027000000000008" + }, + "partner_fee": { + "type": "integer", + "minimum": 0, + "default": 0, + "description": "Payin partner fee amount in cents", + "example": 25000 }, "tracking_complete": { + "type": "object", "properties": { - "completed_at": { - "description": "Complete completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, "step": { - "description": "Complete step", + "type": "string", "enum": [ "processing", "on_hold", "pending_review", "completed" ], - "example": "on_hold", - "type": "string" + "description": "Complete step", + "example": "on_hold" }, "transaction_hash": { + "type": [ + "string", + "null" + ], "description": "Complete transaction hash", - "example": "0x123...890", + "example": "0x123...890" + }, + "completed_at": { "type": [ "string", "null" - ] + ], + "description": "Complete completed date", + "example": "2011-10-05T14:48:00.000Z" } }, "required": [ "step" - ], - "type": "object" + ] }, "tracking_payment": { + "type": "object", "properties": { - "approved_risk_sources": { - "description": "Risk sources already approved by an analyst", - "example": [ - "seon_review" + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" ], - "items": { - "type": "string" - }, + "description": "Payment step", + "example": "on_hold" + }, + "provider_name": { "type": [ - "array", + "string", "null" - ] + ], + "description": "Payment provider name", + "example": "blockchain" }, "completed_at": { - "description": "Payment completed date", - "example": "2011-10-05T14:48:00.000Z", "type": [ "string", "null" - ] + ], + "description": "Payment completed date", + "example": "2011-10-05T14:48:00.000Z" }, - "provider_name": { - "description": "Payment provider name", - "example": "blockchain", + "review_source": { "type": [ "string", "null" - ] + ], + "description": "Risk source that sent this payin to manual review", + "example": "seon_review" }, "review_context": { - "additionalProperties": {}, - "description": "Structured risk context for manual review", "type": [ "object", "null" - ] + ], + "additionalProperties": {}, + "description": "Structured risk context for manual review" }, - "review_source": { - "description": "Risk source that sent this payin to manual review", - "example": "seon_review", + "approved_risk_sources": { "type": [ - "string", + "array", "null" - ] - }, - "step": { - "description": "Payment step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" ], - "example": "on_hold", - "type": "string" + "items": { + "type": "string" + }, + "description": "Risk sources already approved by an analyst", + "example": [ + "seon_review" + ] } }, "required": [ "step" - ], - "type": "object" + ] }, "tracking_transaction": { + "type": "object", "properties": { - "completed_at": { - "description": "Payin transaction completed date", - "example": "2011-10-05T14:48:00.000Z", + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Payin transaction step", + "example": "processing" + }, + "status": { "type": [ "string", "null" - ] + ], + "enum": [ + "failed", + "completed" + ], + "description": "Payin transaction status", + "example": "failed" }, - "description": { - "example": "Payment from John Doe Smith", + "external_id": { "type": [ "string", "null" - ] + ], + "description": "Payin transaction external id", + "example": "12345678" }, - "end_to_end_id": { - "description": "BACEN Pix end-to-end transaction ID (govt Pix ID)", - "example": "E20018183202603311320vm6ALFpJpsS", + "completed_at": { "type": [ "string", "null" - ] + ], + "description": "Payin transaction completed date", + "example": "2011-10-05T14:48:00.000Z" }, - "external_id": { - "description": "Payin transaction external id", - "example": "12345678", + "transaction_hash": { "type": [ "string", "null" - ] + ], + "description": "Blockchain transaction hash", + "example": "0x123...890" }, "provider_name": { - "description": "Payment provider name", + "type": [ + "string", + "null" + ], "enum": [ "Nvio Pagos", "Brex", @@ -23482,493 +19437,436 @@ "Triple A Technologies", "Portage Bank" ], - "example": "HSBC", + "description": "Payment provider name", + "example": "HSBC" + }, + "provider_transaction_id": { "type": [ "string", "null" - ] - }, - "provider_transaction_id": { + ], "description": "Payment provider transaction id", - "example": "", + "example": "" + }, + "sender_name": { "type": [ "string", "null" - ] - }, - "pse_instruction": { - "properties": { - "bank_code": { - "description": "PSE payer bank code", - "example": "1007", - "type": [ - "string", - "null" - ] - }, - "document_type": { - "description": "PSE payer document type", - "enum": [ - "CC", - "NIT" - ], - "example": "CC", - "type": "string" - }, - "email": { - "description": "PSE payer email", - "example": "juan@example.com", - "type": "string" - }, - "fid": { - "description": "PSE funding identifier for webhook matching", - "example": "fid_abc123", - "type": "string" - }, - "full_name": { - "description": "PSE payer full name", - "example": "Juan P\u00e9rez Garc\u00eda", - "type": "string" - }, - "payment_link": { - "description": "PSE payment link URL", - "example": "https://pse.example.com/payment/abc123", - "type": "string" - }, - "phone": { - "description": "PSE payer phone number", - "example": "+573001234567", - "type": "string" - }, - "tax_id": { - "description": "PSE payer document number", - "example": "1234567890", - "type": "string" - } - }, - "required": [ - "payment_link", - "fid", - "full_name", - "tax_id", - "document_type", - "phone", - "email" ], + "example": "John Doe Smith" + }, + "sender_bank_name": { "type": [ - "object", + "string", "null" - ] + ], + "example": "Bank of America" }, - "sender_account_number": { - "example": "1234567890", + "sender_tax_id": { "type": [ "string", "null" - ] + ], + "example": "123.456.789-10" }, "sender_bank_code": { - "example": "00416968", "type": [ "string", "null" - ] + ], + "example": "00416968" }, - "sender_bank_name": { - "example": "Bank of America", + "sender_account_number": { "type": [ "string", "null" - ] + ], + "example": "1234567890" }, - "sender_name": { - "example": "John Doe Smith", + "end_to_end_id": { "type": [ "string", "null" - ] + ], + "description": "BACEN Pix end-to-end transaction ID (govt Pix ID)", + "example": "E20018183202603311320vm6ALFpJpsS" }, - "sender_tax_id": { - "example": "123.456.789-10", + "trace_number": { "type": [ "string", "null" - ] - }, - "status": { - "description": "Payin transaction status", - "enum": [ - "failed", - "completed" ], - "example": "failed", + "example": "1234567890" + }, + "transaction_reference": { "type": [ "string", "null" - ] + ], + "example": "1234567890" }, - "step": { - "description": "Payin transaction step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" + "description": { + "type": [ + "string", + "null" ], - "example": "processing", - "type": "string" + "example": "Payment from John Doe Smith" }, - "ted_instruction": { + "pse_instruction": { + "type": [ + "object", + "null" + ], "properties": { - "account_number": { - "example": "01011707084-8", - "type": "string" + "payment_link": { + "type": "string", + "description": "PSE payment link URL", + "example": "https://pse.example.com/payment/abc123" }, - "account_type": { - "example": "checking", - "type": "string" + "fid": { + "type": "string", + "description": "PSE funding identifier for webhook matching", + "example": "fid_abc123" }, - "bank_code": { - "example": "665", - "type": "string" + "full_name": { + "type": "string", + "description": "PSE payer full name", + "example": "Juan Pérez García" }, - "bank_name": { - "example": "STARK BANK S.A.", - "type": "string" + "tax_id": { + "type": "string", + "description": "PSE payer document number", + "example": "1234567890" }, - "beneficiary_name": { - "example": "Blind Pay, Inc.", - "type": "string" + "document_type": { + "type": "string", + "enum": [ + "CC", + "NIT" + ], + "description": "PSE payer document type", + "example": "CC" }, - "branch_code": { - "example": "5340", - "type": "string" + "phone": { + "type": "string", + "description": "PSE payer phone number", + "example": "+573001234567" }, - "tax_id": { - "example": "57.599.376/0001-81", - "type": "string" + "email": { + "type": "string", + "description": "PSE payer email", + "example": "juan@example.com" + }, + "bank_code": { + "type": [ + "string", + "null" + ], + "description": "PSE payer bank code", + "example": "1007" } }, "required": [ - "beneficiary_name", + "payment_link", + "fid", + "full_name", "tax_id", - "bank_code", - "bank_name", - "branch_code", - "account_number", - "account_type" - ], - "type": [ - "object", - "null" - ] - }, - "trace_number": { - "example": "1234567890", - "type": [ - "string", - "null" - ] - }, - "transaction_hash": { - "description": "Blockchain transaction hash", - "example": "0x123...890", - "type": [ - "string", - "null" + "document_type", + "phone", + "email" ] }, - "transaction_reference": { - "example": "1234567890", + "transfers_instruction": { "type": [ - "string", + "object", "null" - ] - }, - "transfers_instruction": { + ], "properties": { "account": { + "type": "string", "description": "CVU/CBU/Alias account number", - "example": "0000003100012389237485", - "type": "string" - }, - "tax_id": { - "description": "CUIT/CUIL (normalized, digits only)", - "example": "20123456783", - "type": [ - "string", - "null" - ] + "example": "0000003100012389237485" }, "type": { - "description": "Account type (CVU, CBU, or ALIAS)", + "type": "string", "enum": [ "CVU", "CBU", "ALIAS" ], - "example": "CVU", - "type": "string" + "description": "Account type (CVU, CBU, or ALIAS)", + "example": "CVU" + }, + "tax_id": { + "type": [ + "string", + "null" + ], + "description": "CUIT/CUIL (normalized, digits only)", + "example": "20123456783" } }, "required": [ "account", "type" - ], + ] + }, + "ted_instruction": { "type": [ "object", "null" + ], + "properties": { + "beneficiary_name": { + "type": "string", + "example": "Blind Pay, Inc." + }, + "tax_id": { + "type": "string", + "example": "57.599.376/0001-81" + }, + "bank_code": { + "type": "string", + "example": "665" + }, + "bank_name": { + "type": "string", + "example": "STARK BANK S.A." + }, + "branch_code": { + "type": "string", + "example": "5340" + }, + "account_number": { + "type": "string", + "example": "01011707084-8" + }, + "account_type": { + "type": "string", + "example": "checking" + } + }, + "required": [ + "beneficiary_name", + "tax_id", + "bank_code", + "bank_name", + "branch_code", + "account_number", + "account_type" ] } }, "required": [ "step" - ], - "type": "object" + ] }, - "transaction_fee_amount": { - "description": "Transaction fee in cents (percentage-based fee)", - "example": 100, + "billing_fee_amount": { "type": [ "number", "null" - ] - }, - "webhook_event": { - "enum": [ - "payin.complete" ], - "type": "string" - } - }, - "required": [ - "webhook_event", - "id", - "status", - "tracking_complete", - "tracking_payment", - "tracking_transaction", - "blindpay_bank_details" - ], - "type": "object" - }, - "PayinNewWebhookOut": { - "properties": { - "billing_fee_amount": { "description": "Billing fee in cents (charged at the end of the month)", - "example": 50, + "example": 50 + }, + "transaction_fee_amount": { "type": [ "number", "null" - ] + ], + "description": "Transaction fee in cents (percentage-based fee)", + "example": 100 }, "blindpay_bank_details": { + "type": "object", "properties": { + "routing_number": { + "type": "string", + "default": "121145349", + "example": "121145349" + }, "account_number": { + "type": "string", "default": "621327727210181", - "example": "621327727210181", - "type": "string" + "example": "621327727210181" }, "account_type": { + "type": "string", "default": "Business checking", - "example": "Business checking", - "type": "string" + "example": "Business checking" + }, + "swift_bic_code": { + "type": [ + "string", + "null" + ], + "default": "CHASUS33", + "example": "CHASUS33" }, "ach": { + "type": [ + "object", + "null" + ], "properties": { - "account_number": { - "example": "123456789", - "type": "string" - }, "routing_number": { - "example": "123456789", - "type": "string" + "type": "string", + "example": "123456789" + }, + "account_number": { + "type": "string", + "example": "123456789" } }, "required": [ "routing_number", "account_number" + ] + }, + "wire": { + "type": [ + "object", + "null" ], + "properties": { + "routing_number": { + "type": "string", + "example": "123456789" + }, + "account_number": { + "type": "string", + "example": "123456789" + } + }, + "required": [ + "routing_number", + "account_number" + ] + }, + "rtp": { "type": [ "object", "null" + ], + "properties": { + "routing_number": { + "type": "string", + "example": "123456789" + }, + "account_number": { + "type": "string", + "example": "123456789" + } + }, + "required": [ + "routing_number", + "account_number" ] }, "beneficiary": { + "type": "object", "properties": { - "address_line_1": { - "default": "8 The Green, #19364", - "example": "8 The Green, #19364", - "type": "string" - }, - "address_line_2": { - "default": "Dover, DE 19901", - "example": "Dover, DE 19901", - "type": "string" - }, "name": { + "type": "string", "default": "BlindPay, Inc.", - "example": "BlindPay, Inc.", - "type": "string" + "example": "BlindPay, Inc." + }, + "address_line_1": { + "type": "string", + "default": "8 The Green, #19364", + "example": "8 The Green, #19364" + }, + "address_line_2": { + "type": "string", + "default": "Dover, DE 19901", + "example": "Dover, DE 19901" } - }, - "type": "object" + } }, "receiving_bank": { + "type": "object", "properties": { + "name": { + "type": "string", + "default": "CFSB", + "example": "CFSB" + }, "address_line_1": { + "type": "string", "default": "1 Letterman Drive, Building A, Suite A4-700", - "example": "1 Letterman Drive, Building A, Suite A4-700", - "type": "string" + "example": "1 Letterman Drive, Building A, Suite A4-700" }, "address_line_2": { + "type": "string", "default": "San Francisco, CA 94129", - "example": "San Francisco, CA 94129", - "type": "string" - }, - "name": { - "default": "CFSB", - "example": "CFSB", - "type": "string" - } - }, - "type": "object" - }, - "routing_number": { - "default": "121145349", - "example": "121145349", - "type": "string" - }, - "rtp": { - "properties": { - "account_number": { - "example": "123456789", - "type": "string" - }, - "routing_number": { - "example": "123456789", - "type": "string" + "example": "San Francisco, CA 94129" } - }, - "required": [ - "routing_number", - "account_number" - ], - "type": [ - "object", - "null" - ] + } }, "swift_account_number": { - "example": "GB50TCCL04140449730892", "type": [ "string", "null" - ] + ], + "example": "GB50TCCL04140449730892" }, - "swift_bic_code": { - "default": "CHASUS33", - "example": "CHASUS33", + "swift_receiving_bank": { "type": [ - "string", + "object", "null" - ] - }, - "swift_receiving_bank": { + ], "properties": { - "address_line_1": { - "example": "270 Park Ave", + "name": { "type": [ "string", "null" - ] + ], + "example": "JPMorgan Chase" }, - "address_line_2": { - "example": "New York, NY, 10017-2070", + "address_line_1": { "type": [ "string", "null" - ] + ], + "example": "270 Park Ave" }, - "name": { - "example": "JPMorgan Chase", + "address_line_2": { "type": [ "string", "null" - ] - } - }, - "type": [ - "object", - "null" - ] - }, - "wire": { - "properties": { - "account_number": { - "example": "123456789", - "type": "string" - }, - "routing_number": { - "example": "123456789", - "type": "string" + ], + "example": "New York, NY, 10017-2070" } - }, - "required": [ - "routing_number", - "account_number" - ], - "type": [ - "object", - "null" - ] + } } }, "required": [ "beneficiary", "receiving_bank" - ], - "type": "object" - }, - "clabe": { - "description": "CLABE code", - "example": "014027000000000008", - "type": [ - "string", - "null" ] }, "customer_id": { - "example": "re_000000000000", - "maxLength": 15, - "minLength": 15, "type": [ "string", "null" - ] - }, - "id": { - "example": "pi_000000000000", - "maxLength": 15, + ], "minLength": 15, - "type": "string" + "maxLength": 15, + "example": "re_000000000000" }, - "memo_code": { - "description": "Memo code", - "example": "8K45GHBNT6BQ6462", + "receiver_amount": { "type": [ - "string", + "number", "null" - ] - }, - "partner_fee": { - "default": 0, - "description": "Payin partner fee amount in cents", - "example": 25000, - "minimum": 0, - "type": "integer" + ], + "description": "10.10 USDC", + "example": 1010 }, "payment_method": { + "type": [ + "string", + "null" + ], "enum": [ "ach", "wire", @@ -23980,4834 +19878,7225 @@ "international_swift", "rtp" ], - "example": "pix", + "example": "pix" + }, + "sender_amount": { "type": [ - "string", + "number", "null" - ] + ], + "description": "52.40 BRL needs to be sent in a pix transfer", + "example": 5240 + } + }, + "required": [ + "id", + "status", + "tracking_complete", + "tracking_payment", + "tracking_transaction", + "blindpay_bank_details" + ] + }, + "CreatePayinIn": { + "type": "object", + "properties": { + "payin_quote_id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "pq_000000000000" + } + }, + "required": [ + "payin_quote_id" + ] + }, + "CreatePayinQuoteOut": { + "type": "object", + "properties": { + "id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "qu_000000000000" }, - "pix_code": { - "description": "PIX code", - "example": "00020101021226790014br.gov.bcb.pix2557brcode.starkinfra.com/v2/bcf07f6c4110454e9fd6f120bab13e835204000053039865802BR5915Blind Pay, Inc.6010Vila Velha62070503***6304BCAB", + "expires_at": { "type": [ - "string", + "number", "null" - ] + ], + "description": "Epoch unix timestamp that represents the final datetime to transaction be received on blockchain", + "example": 1712958191 + }, + "commercial_quotation": { + "type": [ + "number", + "null" + ], + "description": "1 USD = 4.95 BRL", + "example": 495 + }, + "blindpay_quotation": { + "type": [ + "number", + "null" + ], + "description": "1 USD = 5.05 BRL (commercial quotation + (blindpay taxes))", + "example": 505 }, "receiver_amount": { - "description": "10.10 USDC", - "example": 1010, "type": [ "number", "null" - ] + ], + "description": "10.10 USDC", + "example": 1010 }, "sender_amount": { + "type": [ + "number", + "null" + ], "description": "52.40 BRL needs to be sent in a pix transfer", - "example": 5240, + "example": 5240 + }, + "partner_fee_amount": { "type": [ "number", "null" - ] + ], + "default": 0, + "description": "1.5 USDC", + "example": 150 }, - "status": { - "description": "Payin general status", + "flat_fee": { + "type": [ + "number", + "null" + ], + "description": "0.5 USDC", + "example": 50 + }, + "billing_fee_amount": { + "type": [ + "number", + "null" + ], + "description": "Billing fee in cents (charged at the end of the month)", + "example": 50 + }, + "is_otc": { + "type": [ + "boolean", + "null" + ], + "description": "If true, the payin quote is for an OTC (Over the Counter) transaction", + "example": false + } + }, + "required": [ + "id", + "expires_at", + "commercial_quotation", + "blindpay_quotation", + "receiver_amount", + "sender_amount", + "flat_fee" + ] + }, + "CreatePayinQuoteIn": { + "type": "object", + "properties": { + "blockchain_wallet_id": { + "type": [ + "string", + "null" + ], + "minLength": 15, + "maxLength": 15, + "example": "bw_000000000000" + }, + "wallet_id": { + "type": [ + "string", + "null" + ], + "minLength": 15, + "maxLength": 15, + "example": "bl_000000000000" + }, + "currency_type": { + "type": "string", "enum": [ - "processing", - "on_hold", - "failed", - "refunded", - "completed" + "sender", + "receiver" ], - "example": "processing", - "type": "string" + "description": "", + "example": "sender" }, - "tracking_complete": { - "properties": { - "completed_at": { - "description": "Complete completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "step": { - "description": "Complete step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "example": "on_hold", - "type": "string" - }, - "transaction_hash": { - "description": "Complete transaction hash", - "example": "0x123...890", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "step" + "cover_fees": { + "type": [ + "boolean", + "null" ], - "type": "object" + "description": "If true, the sender will cover the fees. If false, the customer will cover the fees.", + "example": true }, - "tracking_payment": { - "properties": { - "approved_risk_sources": { - "description": "Risk sources already approved by an analyst", - "example": [ - "seon_review" - ], - "items": { - "type": "string" - }, - "type": [ - "array", - "null" - ] - }, - "completed_at": { - "description": "Payment completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "provider_name": { - "description": "Payment provider name", - "example": "blockchain", - "type": [ - "string", - "null" - ] - }, - "review_context": { - "additionalProperties": {}, - "description": "Structured risk context for manual review", - "type": [ - "object", - "null" - ] - }, - "review_source": { - "description": "Risk source that sent this payin to manual review", - "example": "seon_review", - "type": [ - "string", - "null" - ] - }, - "step": { - "description": "Payment step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "example": "on_hold", - "type": "string" - } - }, - "required": [ - "step" + "request_amount": { + "type": "integer", + "minimum": 500, + "description": "1000 represents 10.00, 2050 represents 20.50", + "example": 1000 + }, + "payment_method": { + "type": "string", + "enum": [ + "ach", + "wire", + "pix", + "ted", + "spei", + "transfers", + "pse", + "international_swift", + "rtp" ], - "type": "object" + "example": "pix" }, - "tracking_transaction": { + "token": { + "type": "string", + "enum": [ + "USDC", + "USDT", + "USDB" + ], + "example": "USDC" + }, + "partner_fee_id": { + "type": [ + "string", + "null" + ], + "minLength": 15, + "maxLength": 15, + "example": "pf_000000000000" + }, + "payer_rules": { + "type": [ + "object", + "null" + ], "properties": { - "completed_at": { - "description": "Payin transaction completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "description": { - "example": "Payment from John Doe Smith", - "type": [ - "string", - "null" - ] - }, - "end_to_end_id": { - "description": "BACEN Pix end-to-end transaction ID (govt Pix ID)", - "example": "E20018183202603311320vm6ALFpJpsS", - "type": [ - "string", - "null" - ] - }, - "external_id": { - "description": "Payin transaction external id", - "example": "12345678", - "type": [ - "string", - "null" - ] - }, - "provider_name": { - "description": "Payment provider name", - "enum": [ - "Nvio Pagos", - "Brex", - "Stark Bank", - "JPMorgan Chase", - "HSBC", - "Inter", - "JP Morgan Chase", - "Bitso", - "Citi", - "CFSB", - "Triple A Technologies", - "Portage Bank" - ], - "example": "HSBC", - "type": [ - "string", - "null" - ] - }, - "provider_transaction_id": { - "description": "Payment provider transaction id", - "example": "", + "pix_allowed_tax_ids": { "type": [ - "string", + "array", "null" - ] - }, - "pse_instruction": { - "properties": { - "bank_code": { - "description": "PSE payer bank code", - "example": "1007", - "type": [ - "string", - "null" - ] - }, - "document_type": { - "description": "PSE payer document type", - "enum": [ - "CC", - "NIT" - ], - "example": "CC", - "type": "string" - }, - "email": { - "description": "PSE payer email", - "example": "juan@example.com", - "type": "string" - }, - "fid": { - "description": "PSE funding identifier for webhook matching", - "example": "fid_abc123", - "type": "string" - }, - "full_name": { - "description": "PSE payer full name", - "example": "Juan P\u00e9rez Garc\u00eda", - "type": "string" - }, - "payment_link": { - "description": "PSE payment link URL", - "example": "https://pse.example.com/payment/abc123", - "type": "string" - }, - "phone": { - "description": "PSE payer phone number", - "example": "+573001234567", - "type": "string" - }, - "tax_id": { - "description": "PSE payer document number", - "example": "1234567890", - "type": "string" - } - }, - "required": [ - "payment_link", - "fid", - "full_name", - "tax_id", - "document_type", - "phone", - "email" ], - "type": [ - "object", - "null" - ] - }, - "sender_account_number": { - "example": "1234567890", - "type": [ - "string", - "null" - ] - }, - "sender_bank_code": { - "example": "00416968", - "type": [ - "string", - "null" - ] - }, - "sender_bank_name": { - "example": "Bank of America", - "type": [ - "string", - "null" - ] - }, - "sender_name": { - "example": "John Doe Smith", - "type": [ - "string", - "null" - ] + "items": { + "type": "string", + "example": "123.456.789-09" + } }, - "sender_tax_id": { - "example": "123.456.789-10", + "transfers_allowed_tax_id": { "type": [ "string", "null" - ] + ], + "example": "20-12345678-3" }, - "status": { - "description": "Payin transaction status", - "enum": [ - "failed", - "completed" + "pse_allowed_tax_ids": { + "type": [ + "array", + "null" ], - "example": "failed", + "items": { + "type": "string", + "example": "1234567890" + } + }, + "pse_full_name": { "type": [ "string", "null" - ] - }, - "step": { - "description": "Payin transaction step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" ], - "example": "processing", - "type": "string" + "maxLength": 50 }, - "ted_instruction": { - "properties": { - "account_number": { - "example": "01011707084-8", - "type": "string" - }, - "account_type": { - "example": "checking", - "type": "string" - }, - "bank_code": { - "example": "665", - "type": "string" - }, - "bank_name": { - "example": "STARK BANK S.A.", - "type": "string" - }, - "beneficiary_name": { - "example": "Blind Pay, Inc.", - "type": "string" - }, - "branch_code": { - "example": "5340", - "type": "string" - }, - "tax_id": { - "example": "57.599.376/0001-81", - "type": "string" - } - }, - "required": [ - "beneficiary_name", - "tax_id", - "bank_code", - "bank_name", - "branch_code", - "account_number", - "account_type" - ], + "pse_document_type": { "type": [ - "object", + "string", "null" + ], + "enum": [ + "CC", + "NIT" ] }, - "trace_number": { - "example": "1234567890", + "pse_document_number": { "type": [ "string", "null" ] }, - "transaction_hash": { - "description": "Blockchain transaction hash", - "example": "0x123...890", + "pse_email": { "type": [ "string", "null" - ] + ], + "format": "email" }, - "transaction_reference": { - "example": "1234567890", + "pse_phone": { "type": [ "string", "null" - ] - }, - "transfers_instruction": { - "properties": { - "account": { - "description": "CVU/CBU/Alias account number", - "example": "0000003100012389237485", - "type": "string" - }, - "tax_id": { - "description": "CUIT/CUIL (normalized, digits only)", - "example": "20123456783", - "type": [ - "string", - "null" - ] - }, - "type": { - "description": "Account type (CVU, CBU, or ALIAS)", - "enum": [ - "CVU", - "CBU", - "ALIAS" - ], - "example": "CVU", - "type": "string" - } - }, - "required": [ - "account", - "type" ], + "pattern": "^\\+573\\d{9}$" + }, + "pse_bank_code": { "type": [ - "object", + "string", "null" ] } }, - "required": [ - "step" - ], - "type": "object" + "example": { + "pix_allowed_tax_ids": [ + "123.456.789-09" + ], + "transfers_allowed_tax_id": "20-12345678-3", + "pse_allowed_tax_ids": [ + "1234567890" + ] + } }, - "transaction_fee_amount": { - "description": "Transaction fee in cents (percentage-based fee)", - "example": 100, + "is_otc": { "type": [ - "number", + "boolean", "null" - ] - }, - "webhook_event": { - "enum": [ - "payin.new" ], - "type": "string" + "description": "If true, the payin quote is for an OTC (Over the Counter) transaction", + "example": false } }, "required": [ - "webhook_event", - "id", - "status", - "tracking_complete", - "tracking_payment", - "tracking_transaction", - "blindpay_bank_details" - ], - "type": "object" + "currency_type", + "request_amount", + "payment_method", + "token" + ] }, - "PayinOut": { + "BillingSubscription": { + "type": "object", "properties": { - "address": { - "example": "0xDD6a3aD0949396e57C7738ba8FC1A46A5a1C372C", + "minimum_per_month": { + "type": "integer", + "description": "Minimum monthly billing amount in cents", + "example": 0 + }, + "subscription_plan": { "type": [ "string", "null" - ] + ], + "enum": [ + "Basic", + "Business", + "Enterprise" + ], + "description": "Subscription plan: Basic, Business, or Enterprise", + "example": "Basic" }, - "billing_fee_amount": { - "description": "Billing fee in cents (charged at the end of the month)", - "example": 50, + "subscription_price": { + "type": "integer", + "description": "Subscription price in cents", + "example": 24900 + }, + "started_at": { "type": [ - "number", + "string", "null" - ] + ], + "format": "date-time", + "description": "When the subscription started", + "example": "2025-01-01T00:00:00.000Z" }, - "blindpay_bank_details": { - "properties": { - "account_number": { - "default": "621327727210181", - "example": "621327727210181", - "type": "string" - }, - "account_type": { - "default": "Business checking", - "example": "Business checking", - "type": "string" - }, - "ach": { - "properties": { - "account_number": { - "example": "123456789", - "type": "string" - }, - "routing_number": { - "example": "123456789", - "type": "string" - } - }, - "required": [ - "routing_number", - "account_number" - ], - "type": [ - "object", - "null" - ] - }, - "beneficiary": { - "properties": { - "address_line_1": { - "default": "8 The Green, #19364", - "example": "8 The Green, #19364", - "type": "string" - }, - "address_line_2": { - "default": "Dover, DE 19901", - "example": "Dover, DE 19901", - "type": "string" - }, - "name": { - "default": "BlindPay, Inc.", - "example": "BlindPay, Inc.", - "type": "string" - } - }, - "type": "object" - }, - "receiving_bank": { - "properties": { - "address_line_1": { - "default": "1 Letterman Drive, Building A, Suite A4-700", - "example": "1 Letterman Drive, Building A, Suite A4-700", - "type": "string" - }, - "address_line_2": { - "default": "San Francisco, CA 94129", - "example": "San Francisco, CA 94129", - "type": "string" - }, - "name": { - "default": "CFSB", - "example": "CFSB", - "type": "string" - } - }, - "type": "object" - }, - "routing_number": { - "default": "121145349", - "example": "121145349", - "type": "string" - }, - "rtp": { - "properties": { - "account_number": { - "example": "123456789", - "type": "string" - }, - "routing_number": { - "example": "123456789", - "type": "string" - } - }, - "required": [ - "routing_number", - "account_number" - ], - "type": [ - "object", - "null" - ] - }, - "swift_account_number": { - "example": "GB50TCCL04140449730892", - "type": [ - "string", - "null" - ] - }, - "swift_bic_code": { - "default": "CHASUS33", - "example": "CHASUS33", - "type": [ - "string", - "null" - ] - }, - "swift_receiving_bank": { - "properties": { - "address_line_1": { - "example": "270 Park Ave", - "type": [ - "string", - "null" - ] - }, - "address_line_2": { - "example": "New York, NY, 10017-2070", - "type": [ - "string", - "null" - ] - }, - "name": { - "example": "JPMorgan Chase", - "type": [ - "string", - "null" - ] - } - }, - "type": [ - "object", - "null" - ] + "invoice_due_date_days": { + "type": "integer", + "description": "Days after period end when invoice is due", + "example": 15 + }, + "status": { + "type": "string", + "enum": [ + "active", + "pending_payment", + "past_due", + "cancelled" + ], + "description": "Subscription billing status: active (no issues), overdue (invoice past due), pending (awaiting payment)", + "example": "active" + }, + "billing_charge": { + "type": [ + "boolean", + "null" + ], + "description": "If true, fees are charged via monthly invoice instead of at transaction time", + "example": false + } + }, + "required": [ + "minimum_per_month", + "subscription_price", + "invoice_due_date_days", + "status" + ] + }, + "BillingDetails": { + "type": "object", + "properties": { + "name": { + "type": "string", + "example": "Blind Pay, Inc." + }, + "email": { + "anyOf": [ + { + "type": "string", + "format": "email" }, - "wire": { - "properties": { - "account_number": { - "example": "123456789", - "type": "string" - }, - "routing_number": { - "example": "123456789", - "type": "string" - } - }, - "required": [ - "routing_number", - "account_number" - ], - "type": [ - "object", - "null" + { + "type": "string", + "enum": [ + "" ] } + ], + "example": "billing@blindpay.com" + }, + "tax_id": { + "type": "string", + "example": "123456789" + }, + "address_line_1": { + "type": "string", + "example": "8 The Green, #19364" + }, + "address_line_2": { + "type": "string", + "example": "Suite 200" + }, + "city": { + "type": "string", + "example": "Dover" + }, + "state_province_region": { + "type": "string", + "example": "DE" + }, + "postal_code": { + "type": "string", + "example": "19901" + }, + "country": { + "type": "string", + "example": "United States" + }, + "copy_emails": { + "type": "array", + "items": { + "type": "string", + "format": "email" }, - "required": [ - "beneficiary", - "receiving_bank" + "default": [], + "description": "Optional CC emails for billing communications", + "example": [ + "finance@example.com" + ] + } + }, + "required": [ + "name", + "email", + "tax_id", + "address_line_1", + "address_line_2", + "city", + "state_province_region", + "postal_code", + "country" + ] + }, + "VirtualAccountsUsage": { + "type": "object", + "properties": { + "count": { + "type": "integer", + "description": "Number of active virtual accounts", + "example": 100 + }, + "unit_cost": { + "type": "integer", + "description": "Cost per virtual account in cents", + "example": 1500 + }, + "total": { + "type": "integer", + "description": "Total virtual account fees in cents", + "example": 150000 + } + }, + "required": [ + "count", + "unit_cost", + "total" + ] + }, + "AddonItemSchema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Recurring item or invoice item ID", + "example": "ri_000000000000" + }, + "name": { + "type": "string", + "description": "Addon name", + "example": "Swift" + }, + "description": { + "type": [ + "string", + "null" ], + "description": "Addon description", + "example": "Swift" + }, + "amount": { + "type": "integer", + "description": "Addon amount in cents", + "example": 50000 + }, + "quantity": { + "type": "integer", + "description": "Addon quantity", + "example": 1 + } + }, + "required": [ + "id", + "name", + "amount", + "quantity" + ] + }, + "CurrentUsageSchema": { + "type": "object", + "properties": { + "period_start": { + "type": "string", + "format": "date-time", + "description": "Start of billing period", + "example": "2025-12-01T00:00:00.000Z" + }, + "period_end": { + "type": "string", + "format": "date-time", + "description": "End of billing period", + "example": "2025-12-31T23:59:59.999Z" + }, + "due_date": { "type": [ - "object", + "string", "null" - ] + ], + "format": "date-time", + "description": "Expected due date when invoice is generated (null for partner-fee-only invoices)", + "example": "2025-01-21T00:00:00.000Z" + }, + "minimum_monthly_amount": { + "type": "integer", + "description": "Minimum monthly amount in cents", + "example": 200000 + }, + "subscription_plan": { + "type": [ + "string", + "null" + ], + "enum": [ + "Basic", + "Business", + "Enterprise" + ], + "description": "Subscription plan: Basic, Business, or Enterprise", + "example": "Basic" + }, + "subscription_plan_amount": { + "type": "integer", + "description": "Subscription plan amount in cents", + "example": 24900 + }, + "virtual_accounts": { + "$ref": "#/components/schemas/VirtualAccountsUsage" + }, + "virtual_account_fees": { + "type": "integer", + "description": "Virtual account fees in cents", + "example": 10000 + }, + "payin_billing_fees": { + "type": "integer", + "description": "Payin billing fees in cents", + "example": 10000 + }, + "payin_partner_fees": { + "type": "integer", + "description": "Payin partner fees in cents (earnings)", + "example": 25000 + }, + "payout_billing_fees": { + "type": "integer", + "description": "Payout billing fees in cents", + "example": 10000 + }, + "payout_partner_fees": { + "type": "integer", + "description": "Payout partner fees in cents (earnings)", + "example": 25000 + }, + "total_to_pay": { + "type": "integer", + "description": "Total amount owed to Blindpay in cents", + "example": 40000 + }, + "total_to_collect": { + "type": "integer", + "description": "Total partner fees to collect (earnings) in cents", + "example": 50000 + }, + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AddonItemSchema" + }, + "description": "Recurring addon items due for the current period" + } + }, + "required": [ + "period_start", + "period_end", + "due_date", + "minimum_monthly_amount", + "subscription_plan_amount", + "virtual_accounts", + "virtual_account_fees", + "payin_billing_fees", + "payin_partner_fees", + "payout_billing_fees", + "payout_partner_fees", + "total_to_pay", + "total_to_collect", + "items" + ] + }, + "InvoiceItemSchema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Invoice ID", + "example": "iv_000000000000" }, - "blindpay_quotation": { - "description": "1 USD = 5.05 BRL (commercial quotation + (blindpay taxes))", - "example": 505, + "period_start": { + "type": "string", + "format": "date-time", + "description": "Start of billing period", + "example": "2025-11-01T00:00:00.000Z" + }, + "period_end": { + "type": "string", + "format": "date-time", + "description": "End of billing period", + "example": "2025-11-30T23:59:59.999Z" + }, + "due_date": { "type": [ - "number", + "string", "null" - ] + ], + "format": "date-time", + "description": "Invoice due date (null for partner-fee-only invoices)", + "example": "2025-11-21T00:00:00.000Z" }, - "clabe": { - "description": "CLABE code", - "example": "014027000000000008", + "status": { + "type": "string", + "enum": [ + "owing", + "paid", + "claimable", + "collected", + "expired", + "overdue" + ], + "description": "Invoice status: owing (unpaid), paid (payment received), claimable (has partner fees to claim), collected (partner fees claimed), expired (voided), overdue (past due date)", + "example": "paid" + }, + "virtual_account_fees": { + "type": "integer", + "description": "Virtual account fees in cents", + "example": 10000 + }, + "payin_billing_fees": { + "type": "integer", + "description": "Payin billing fees in cents", + "example": 10000 + }, + "payin_partner_fees": { + "type": "integer", + "description": "Payin partner fees in cents (earnings)", + "example": 25000 + }, + "payout_billing_fees": { + "type": "integer", + "description": "Payout billing fees in cents", + "example": 10000 + }, + "payout_partner_fees": { + "type": "integer", + "description": "Payout partner fees in cents (earnings)", + "example": 25000 + }, + "total_to_pay": { + "type": "integer", + "description": "Total amount owed to Blindpay in cents", + "example": 40000 + }, + "total_to_collect": { + "type": "integer", + "description": "Total partner fees to collect (earnings) in cents", + "example": 50000 + }, + "discount": { + "type": "integer", + "description": "Discount amount in cents from Stripe coupon", + "example": 0 + }, + "reference": { "type": [ "string", "null" - ] + ], + "description": "Invoice reference (billing period month/year)", + "example": "01/2026" }, - "commercial_quotation": { - "description": "1 USD = 4.95 BRL", - "example": 495, + "url": { + "type": "string", + "description": "Invoice URL", + "example": "https://example.com" + }, + "payment_id": { "type": [ - "number", + "string", "null" - ] + ], + "description": "Reference to invoice_payment record", + "example": "ip_000000000000" }, - "created_at": { - "example": "2021-01-01T00:00:00Z", - "format": "date-time", + "collection_id": { "type": [ "string", "null" - ] - }, - "currency": { - "description": "ISO 4271 currency code", - "enum": [ - "BRL", - "USD", - "MXN", - "COP", - "ARS", - "EUR" ], - "example": "BRL", - "type": "string" + "description": "Reference to invoice_collection record", + "example": "ic_000000000000" }, - "customer_id": { - "example": "re_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" + "has_partner_fee_invoice": { + "type": "boolean", + "description": "Whether a partner fee collection invoice PDF is available", + "example": false }, - "first_name": { - "example": "John", + "minimum_per_month": { + "type": "integer", + "description": "Minimum monthly amount in cents at time of invoice", + "example": 200000 + }, + "subscription_plan": { "type": [ "string", "null" - ] + ], + "enum": [ + "Basic", + "Business", + "Enterprise" + ], + "description": "Subscription plan used", + "example": "Basic" + }, + "subscription_price": { + "type": "integer", + "description": "Subscription price in cents used", + "example": 24900 + } + }, + "required": [ + "id", + "period_start", + "period_end", + "due_date", + "status", + "virtual_account_fees", + "payin_billing_fees", + "payin_partner_fees", + "payout_billing_fees", + "payout_partner_fees", + "total_to_pay", + "total_to_collect", + "discount", + "url", + "has_partner_fee_invoice", + "minimum_per_month", + "subscription_price" + ] + }, + "GetInvoicesSchemaOut": { + "type": "object", + "properties": { + "current": { + "$ref": "#/components/schemas/CurrentUsageSchema" }, + "invoices": { + "type": "array", + "items": { + "$ref": "#/components/schemas/InvoiceItemSchema" + } + } + }, + "required": [ + "current", + "invoices" + ] + }, + "GetInvoiceSchemaOut": { + "type": "object", + "properties": { "id": { - "example": "re_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" + "type": "string", + "description": "Invoice ID", + "example": "iv_000000000000" }, - "image_url": { - "example": "https://example.com/image.png", - "format": "uri", + "status": { + "type": "string", + "enum": [ + "owing", + "paid", + "claimable", + "collected", + "expired", + "overdue" + ], + "description": "Invoice status: owing (unpaid), paid (payment received), claimable (has partner fees to claim), collected (partner fees claimed), expired (voided), overdue (past due date)", + "example": "paid" + }, + "period_start": { + "type": "string", + "format": "date-time", + "description": "Start of billing period", + "example": "2025-11-01T00:00:00.000Z" + }, + "period_end": { + "type": "string", + "format": "date-time", + "description": "End of billing period", + "example": "2025-11-30T23:59:59.999Z" + }, + "due_date": { "type": [ "string", "null" - ] + ], + "format": "date-time", + "description": "Invoice due date (null for partner-fee-only invoices)", + "example": "2025-11-21T00:00:00.000Z" }, - "instance_id": { - "example": "in_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" + "virtual_account_fees": { + "type": "integer", + "description": "Virtual account fees in cents", + "example": 10000 }, - "is_otc": { - "description": "If true, the payin quote is for an OTC (Over the Counter) transaction", - "example": false, - "type": [ - "boolean", - "null" - ] + "payin_billing_fees": { + "type": "integer", + "description": "Payin billing fees in cents", + "example": 10000 }, - "last_name": { - "example": "Doe", + "payin_partner_fees": { + "type": "integer", + "description": "Payin partner fees in cents (earnings)", + "example": 25000 + }, + "payout_billing_fees": { + "type": "integer", + "description": "Payout billing fees in cents", + "example": 10000 + }, + "payout_partner_fees": { + "type": "integer", + "description": "Payout partner fees in cents (earnings)", + "example": 25000 + }, + "total_to_pay": { + "type": "integer", + "description": "Total amount owed to Blindpay in cents", + "example": 40000 + }, + "total_to_collect": { + "type": "integer", + "description": "Total partner fees to collect (earnings) in cents", + "example": 50000 + }, + "discount": { + "type": "integer", + "description": "Discount amount in cents from Stripe coupon", + "example": 0 + }, + "credit_note_amount": { + "type": "integer", + "description": "Credit note amount in cents", + "example": 0 + }, + "url": { + "type": "string", + "description": "Invoice URL", + "example": "https://example.com" + }, + "payment_id": { "type": [ "string", "null" - ] + ], + "description": "Reference to invoice payment record", + "example": "ip_000000000000" }, - "legal_name": { - "example": "Company Name Inc.", + "collection_id": { "type": [ "string", "null" - ] + ], + "description": "Reference to invoice collection record", + "example": "ic_000000000000" }, - "manual_concluded_at": { - "description": "When `manual_execution_status` transitioned to `concluded`. Postgres returns a Date; this transform normalizes to an ISO string for the SDK.", - "example": null + "has_partner_fee_invoice": { + "type": "boolean", + "description": "Whether a partner fee collection invoice PDF is available", + "example": false }, - "manual_concluded_by": { - "description": "Identifier of the operator who marked the manual OTC concluded.", - "example": null, + "minimum_per_month": { + "type": "integer", + "description": "Minimum monthly amount in cents", + "example": 200000 + }, + "subscription_plan": { "type": [ "string", "null" - ] + ], + "enum": [ + "Basic", + "Business", + "Enterprise" + ], + "description": "Subscription plan: Basic, Business, or Enterprise", + "example": "Basic" }, - "manual_execution_status": { - "description": "When non-null, the payin was created while the manual OTC liquidity toggle was ON. `pending` means an operator must convert BRL\u2192USDT manually and click \"Mark concluded\"; `concluded` closes the internal flow. Customer-facing behavior is identical in either mode.", + "subscription_price": { + "type": "integer", + "description": "Subscription price in cents", + "example": 24900 + }, + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AddonItemSchema" + }, + "description": "Addon items" + } + }, + "required": [ + "id", + "status", + "period_start", + "period_end", + "due_date", + "virtual_account_fees", + "payin_billing_fees", + "payin_partner_fees", + "payout_billing_fees", + "payout_partner_fees", + "total_to_pay", + "total_to_collect", + "discount", + "credit_note_amount", + "url", + "has_partner_fee_invoice", + "minimum_per_month", + "subscription_price", + "items" + ] + }, + "GetInvoicePdfSchemaOut": { + "type": "object", + "properties": { + "url": { + "type": "string", + "description": "Signed URL to the partner fee invoice PDF (expires in 15 minutes)", + "example": "https://invoices-bucket.s3.us-east-1.amazonaws.com/signed-url..." + } + }, + "required": [ + "url" + ] + }, + "PayInvoiceSchemaOut": { + "type": "object", + "properties": { + "amount": { + "type": "integer", + "description": "Amount to pay in cents (USD)", + "example": 40000 + }, + "tron_wallet": { + "type": "string", + "description": "Tron wallet address to send USDT to", + "example": "TXYZabcd1234567890" + }, + "solana_wallet": { + "type": "string", + "description": "Solana wallet address to send USDC to", + "example": "Sol1abc123def456" + } + }, + "required": [ + "amount", + "tron_wallet", + "solana_wallet" + ] + }, + "CollectInvoiceSchemaOut": { + "type": "object", + "properties": { + "collection_id": { + "type": "string", + "description": "Invoice collection record ID", + "example": "ic_000000000000" + }, + "status": { + "type": "string", "enum": [ "pending", - "concluded", + "processing", + "completed", "failed" ], - "example": null, - "type": [ - "string", - "null" - ] + "example": "pending" }, - "memo_code": { - "description": "Memo code", - "example": "8K45GHBNT6BQ6462", - "type": [ - "string", - "null" - ] + "amount": { + "type": "integer", + "description": "Amount to collect in cents", + "example": 50000 }, - "name": { - "example": "Wallet Display Name", - "type": "string" + "network": { + "type": "string", + "example": "polygon" }, + "token": { + "type": "string", + "example": "USDC" + }, + "wallet_address": { + "type": "string", + "example": "0x1234567890abcdef1234567890abcdef12345678" + } + }, + "required": [ + "collection_id", + "status", + "amount", + "network", + "token", + "wallet_address" + ] + }, + "CollectInvoiceBody": { + "type": "object", + "properties": { "network": { + "type": "string", "enum": [ + "polygon", "base", - "sepolia", - "arbitrum_sepolia", - "base_sepolia", "arbitrum", - "polygon", - "polygon_amoy", "ethereum", - "stellar", - "stellar_testnet", "tron", "solana", - "solana_devnet" + "stellar" ], - "example": "polygon", - "type": "string" + "description": "Blockchain network for collection", + "example": "polygon" }, - "partner_fee": { - "default": 0, - "description": "Payin partner fee amount in cents", - "example": 25000, - "minimum": 0, - "type": "integer" + "token": { + "type": "string", + "enum": [ + "USDC", + "USDT" + ], + "description": "Token to collect", + "example": "USDC" }, - "partner_fee_amount": { - "default": 0, - "description": "1.5 USDC", - "example": 150, + "wallet_address": { + "type": "string", + "description": "Wallet address to receive partner fees", + "example": "0x1234567890abcdef1234567890abcdef12345678" + } + }, + "required": [ + "network", + "token", + "wallet_address" + ] + }, + "CreatePortalSessionSchemaOut": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "Stripe Customer Portal session URL", + "example": "https://billing.stripe.com/p/session/test_xxx" + } + }, + "required": [ + "url" + ] + }, + "PaymentMethodSchemaOut": { + "type": "object", + "properties": { + "type": { + "type": [ + "string", + "null" + ], + "enum": [ + "card", + "us_bank_account" + ], + "description": "Payment method type: card or us_bank_account", + "example": "card" + }, + "brand": { + "type": [ + "string", + "null" + ], + "description": "Card brand (visa, mastercard, amex, etc)", + "example": "visa" + }, + "last4": { + "type": [ + "string", + "null" + ], + "description": "Last 4 digits of card number or bank account", + "example": "4242" + }, + "exp_month": { "type": [ "number", "null" - ] + ], + "description": "Card expiration month (1-12)", + "example": 12 }, - "partner_fee_id": { - "example": "pf_000000000000", - "maxLength": 15, - "minLength": 15, + "exp_year": { + "type": [ + "number", + "null" + ], + "description": "Card expiration year", + "example": 2025 + }, + "bank_name": { + "type": [ + "string", + "null" + ], + "description": "Bank name for us_bank_account type", + "example": "Chase" + }, + "account_type": { + "type": [ + "string", + "null" + ], + "description": "Bank account type: checking or savings", + "example": "checking" + }, + "created_at": { "type": [ "string", "null" + ], + "description": "ISO timestamp when payment method was added", + "example": "2024-12-27T00:00:00.000Z" + } + }, + "required": [ + "type", + "brand", + "last4", + "exp_month", + "exp_year", + "bank_name", + "account_type", + "created_at" + ] + }, + "TransferOut": { + "type": "object", + "properties": { + "id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "bl_000000000000" + }, + "status": { + "type": "string", + "enum": [ + "processing", + "failed", + "refunded", + "completed" + ], + "description": "Transfer general status", + "example": "processing" + }, + "transfer_quote_id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "pq_000000000000" + }, + "instance_id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "in_000000000000" + }, + "tracking_transaction_monitoring": { + "type": "object", + "properties": { + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Transaction monitoring step", + "example": "processing" + }, + "blockchain_screening": { + "type": [ + "number", + "null" + ], + "minimum": 0, + "maximum": 100, + "description": "Blindpay screening step", + "example": 1 + }, + "risk_score": { + "type": [ + "number", + "null" + ], + "minimum": 0, + "maximum": 100, + "description": "Risk score", + "example": 1 + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "description": "Transfer transaction completed date", + "example": "2011-10-05T14:48:00.000Z" + } + }, + "required": [ + "step" ] }, - "payer_rules": { - "example": { - "pix_allowed_tax_ids": [ - "123.456.789-09" - ], - "pse_allowed_tax_ids": [ - "1234567890" - ], - "transfers_allowed_tax_id": "20-12345678-3" - }, + "tracking_paymaster": { + "type": "object", "properties": { - "pix_allowed_tax_ids": { - "items": { - "example": "123.456.789-09", - "type": "string" - }, + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Complete step", + "example": "on_hold" + }, + "transaction_hash": { "type": [ - "array", + "string", "null" - ] + ], + "description": "Complete transaction hash", + "example": "0x123...890" }, - "pse_allowed_tax_ids": { - "items": { - "example": "1234567890", - "type": "string" - }, + "gas_fee": { "type": [ - "array", + "string", "null" - ] + ], + "description": "Gas fee related to transaction", + "example": "100" }, - "pse_bank_code": { + "completed_at": { "type": [ "string", "null" - ] + ], + "description": "Complete completed date", + "example": "2011-10-05T14:48:00.000Z" }, - "pse_document_number": { + "error_message": { "type": [ "string", "null" - ] - }, - "pse_document_type": { + ], + "example": "Gas fee is too low" + } + }, + "required": [ + "step" + ] + }, + "tracking_bridge_swap": { + "type": "object", + "properties": { + "step": { + "type": "string", "enum": [ - "CC", - "NIT" + "processing", + "on_hold", + "pending_review", + "completed" ], + "description": "Complete step", + "example": "on_hold" + }, + "transaction_hash": { "type": [ "string", "null" - ] + ], + "description": "Complete transaction hash", + "example": "0x123...890" }, - "pse_email": { - "format": "email", + "gas_fee": { "type": [ "string", "null" - ] + ], + "description": "Gas fee related to transaction", + "example": "100" }, - "pse_full_name": { - "maxLength": 50, + "completed_at": { "type": [ "string", "null" - ] + ], + "description": "Complete completed date", + "example": "2011-10-05T14:48:00.000Z" }, - "pse_phone": { - "pattern": "^\\+573\\d{9}$", + "error_message": { "type": [ "string", "null" - ] + ], + "example": "Gas fee is too low" + } + }, + "required": [ + "step" + ] + }, + "tracking_complete": { + "type": "object", + "properties": { + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Complete step", + "example": "on_hold" }, - "transfers_allowed_tax_id": { - "example": "20-12345678-3", + "transaction_hash": { "type": [ "string", "null" - ] + ], + "description": "Complete transaction hash", + "example": "0x123...890" + }, + "gas_fee": { + "type": [ + "string", + "null" + ], + "description": "Gas fee related to transaction", + "example": "100" + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "description": "Complete completed date", + "example": "2011-10-05T14:48:00.000Z" + }, + "error_message": { + "type": [ + "string", + "null" + ], + "example": "Gas fee is too low" } }, - "type": [ - "object", - "null" + "required": [ + "step" ] }, - "payin_quote_id": { - "example": "pq_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - }, - "payment_method": { - "enum": [ - "ach", - "wire", - "pix", - "ted", - "spei", - "transfers", - "pse", - "international_swift", - "rtp" - ], - "example": "pix", - "type": "string" - }, - "pix_code": { - "description": "PIX code", - "example": "00020101021226790014br.gov.bcb.pix2557brcode.starkinfra.com/v2/bcf07f6c4110454e9fd6f120bab13e835204000053039865802BR5915Blind Pay, Inc.6010Vila Velha62070503***6304BCAB", + "created_at": { "type": [ "string", "null" - ] - }, - "pse_document_type": { - "description": "PSE payer document type", - "enum": [ - "CC", - "NIT" ], - "example": "CC", + "format": "date-time", + "example": "2021-01-01T00:00:00Z" + }, + "updated_at": { "type": [ "string", "null" - ] + ], + "format": "date-time", + "example": "2021-01-01T00:00:00Z" }, - "pse_full_name": { - "description": "PSE payer full name", - "example": "Juan P\u00e9rez Garc\u00eda", + "image_url": { "type": [ "string", "null" - ] + ], + "format": "uri", + "example": "https://example.com/image.png" }, - "pse_payment_link": { - "description": "PSE payment link (derived from tracking_transaction.pse_instruction)", - "example": "https://pse.example.com/payment/abc123", + "first_name": { "type": [ "string", "null" - ] + ], + "example": "John" }, - "pse_tax_id": { - "description": "PSE payer document number", - "example": "1234567890", + "last_name": { "type": [ "string", "null" - ] + ], + "example": "Doe" }, - "receiver_amount": { - "description": "10.10 USDC", - "example": 1010, + "legal_name": { "type": [ - "number", + "string", "null" - ] + ], + "example": "Company Name Inc." + }, + "wallet_id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "bl_000000000000" + }, + "sender_token": { + "type": "string", + "enum": [ + "USDC", + "USDT", + "USDB" + ], + "example": "USDC" }, "sender_amount": { + "type": "number", "description": "52.40 BRL needs to be sent in a pix transfer", - "example": 5240, - "type": [ - "number", - "null" - ] + "example": 5240 }, - "status": { - "description": "Payin general status", + "receiver_amount": { + "type": "number", + "description": "10.10 USDC", + "example": 1010 + }, + "customer_network": { + "type": "string", "enum": [ - "processing", - "on_hold", - "failed", - "refunded", - "completed" + "base", + "sepolia", + "arbitrum_sepolia", + "base_sepolia", + "arbitrum", + "polygon", + "polygon_amoy", + "ethereum", + "stellar", + "stellar_testnet", + "tron", + "solana", + "solana_devnet" ], - "example": "processing", - "type": "string" + "example": "polygon" }, - "token": { + "customer_token": { + "type": "string", "enum": [ "USDC", "USDT", "USDB" ], - "example": "USDC", - "type": "string" + "example": "USDC" }, - "total_fee_amount": { - "default": 0, - "description": "1.53 USDC", - "example": 1.53, + "customer_wallet_address": { + "type": "string", + "minLength": 32, + "maxLength": 64, + "example": "0xDD6a3aD0949396e57C7738ba8FC1A46A5a1C372C" + }, + "partner_fee_amount": { "type": [ "number", "null" - ] + ], + "default": 0, + "description": "1.5 USDC", + "example": 150 }, - "tracking_complete": { + "external_id": { + "type": [ + "string", + "null" + ], + "maxLength": 255, + "example": "your-database-id" + }, + "customer_id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "re_000000000000" + }, + "address": { + "type": [ + "string", + "null" + ], + "maxLength": 64, + "example": "0xDD6a3aD0949396e57C7738ba8FC1A46A5a1C372C" + }, + "network": { + "type": "string", + "enum": [ + "base", + "sepolia", + "arbitrum_sepolia", + "base_sepolia", + "arbitrum", + "polygon", + "polygon_amoy", + "ethereum", + "stellar", + "stellar_testnet", + "tron", + "solana", + "solana_devnet" + ], + "example": "polygon" + } + }, + "required": [ + "id", + "status", + "transfer_quote_id", + "instance_id", + "tracking_transaction_monitoring", + "tracking_paymaster", + "tracking_bridge_swap", + "tracking_complete", + "wallet_id", + "sender_token", + "sender_amount", + "receiver_amount", + "customer_network", + "customer_token", + "customer_wallet_address", + "customer_id", + "network" + ] + }, + "CreateTransferOut": { + "type": "object", + "properties": { + "id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "pa_000000000000" + }, + "status": { + "type": "string", + "enum": [ + "processing", + "failed", + "refunded", + "completed" + ], + "description": "Transfer general status", + "example": "processing" + }, + "tracking_bridge_swap": { + "type": "object", "properties": { - "completed_at": { - "description": "Complete completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, "step": { - "description": "Complete step", + "type": "string", "enum": [ "processing", "on_hold", "pending_review", "completed" ], - "example": "on_hold", - "type": "string" + "description": "Complete step", + "example": "on_hold" }, "transaction_hash": { - "description": "Complete transaction hash", - "example": "0x123...890", "type": [ "string", "null" - ] - } - }, - "required": [ - "step" - ], - "type": "object" - }, - "tracking_payment": { - "properties": { - "approved_risk_sources": { - "description": "Risk sources already approved by an analyst", - "example": [ - "seon_review" ], - "items": { - "type": "string" - }, - "type": [ - "array", - "null" - ] + "description": "Complete transaction hash", + "example": "0x123...890" }, - "completed_at": { - "description": "Payment completed date", - "example": "2011-10-05T14:48:00.000Z", + "gas_fee": { "type": [ "string", "null" - ] + ], + "description": "Gas fee related to transaction", + "example": "100" }, - "provider_name": { - "description": "Payment provider name", - "example": "blockchain", + "completed_at": { "type": [ "string", "null" - ] - }, - "review_context": { - "additionalProperties": {}, - "description": "Structured risk context for manual review", - "type": [ - "object", - "null" - ] + ], + "description": "Complete completed date", + "example": "2011-10-05T14:48:00.000Z" }, - "review_source": { - "description": "Risk source that sent this payin to manual review", - "example": "seon_review", + "error_message": { "type": [ "string", "null" - ] - }, - "step": { - "description": "Payment step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" ], - "example": "on_hold", - "type": "string" + "example": "Gas fee is too low" } }, "required": [ "step" - ], - "type": "object" + ] }, - "tracking_transaction": { + "tracking_complete": { + "type": "object", "properties": { - "completed_at": { - "description": "Payin transaction completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "description": { - "example": "Payment from John Doe Smith", - "type": [ - "string", - "null" - ] - }, - "end_to_end_id": { - "description": "BACEN Pix end-to-end transaction ID (govt Pix ID)", - "example": "E20018183202603311320vm6ALFpJpsS", - "type": [ - "string", - "null" - ] - }, - "external_id": { - "description": "Payin transaction external id", - "example": "12345678", - "type": [ - "string", - "null" - ] - }, - "provider_name": { - "description": "Payment provider name", + "step": { + "type": "string", "enum": [ - "Nvio Pagos", - "Brex", - "Stark Bank", - "JPMorgan Chase", - "HSBC", - "Inter", - "JP Morgan Chase", - "Bitso", - "Citi", - "CFSB", - "Triple A Technologies", - "Portage Bank" - ], - "example": "HSBC", - "type": [ - "string", - "null" - ] - }, - "provider_transaction_id": { - "description": "Payment provider transaction id", - "example": "", - "type": [ - "string", - "null" - ] - }, - "pse_instruction": { - "properties": { - "bank_code": { - "description": "PSE payer bank code", - "example": "1007", - "type": [ - "string", - "null" - ] - }, - "document_type": { - "description": "PSE payer document type", - "enum": [ - "CC", - "NIT" - ], - "example": "CC", - "type": "string" - }, - "email": { - "description": "PSE payer email", - "example": "juan@example.com", - "type": "string" - }, - "fid": { - "description": "PSE funding identifier for webhook matching", - "example": "fid_abc123", - "type": "string" - }, - "full_name": { - "description": "PSE payer full name", - "example": "Juan P\u00e9rez Garc\u00eda", - "type": "string" - }, - "payment_link": { - "description": "PSE payment link URL", - "example": "https://pse.example.com/payment/abc123", - "type": "string" - }, - "phone": { - "description": "PSE payer phone number", - "example": "+573001234567", - "type": "string" - }, - "tax_id": { - "description": "PSE payer document number", - "example": "1234567890", - "type": "string" - } - }, - "required": [ - "payment_link", - "fid", - "full_name", - "tax_id", - "document_type", - "phone", - "email" + "processing", + "on_hold", + "pending_review", + "completed" ], + "description": "Complete step", + "example": "on_hold" + }, + "transaction_hash": { "type": [ - "object", + "string", "null" - ] + ], + "description": "Complete transaction hash", + "example": "0x123...890" }, - "sender_account_number": { - "example": "1234567890", + "gas_fee": { "type": [ "string", "null" - ] + ], + "description": "Gas fee related to transaction", + "example": "100" }, - "sender_bank_code": { - "example": "00416968", + "completed_at": { "type": [ "string", "null" - ] + ], + "description": "Complete completed date", + "example": "2011-10-05T14:48:00.000Z" }, - "sender_bank_name": { - "example": "Bank of America", + "error_message": { "type": [ "string", "null" - ] + ], + "example": "Gas fee is too low" + } + }, + "required": [ + "step" + ] + }, + "tracking_paymaster": { + "type": "object", + "properties": { + "step": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "pending_review", + "completed" + ], + "description": "Complete step", + "example": "on_hold" }, - "sender_name": { - "example": "John Doe Smith", + "transaction_hash": { "type": [ "string", "null" - ] + ], + "description": "Complete transaction hash", + "example": "0x123...890" }, - "sender_tax_id": { - "example": "123.456.789-10", + "gas_fee": { "type": [ "string", "null" - ] - }, - "status": { - "description": "Payin transaction status", - "enum": [ - "failed", - "completed" ], - "example": "failed", + "description": "Gas fee related to transaction", + "example": "100" + }, + "completed_at": { "type": [ "string", "null" - ] + ], + "description": "Complete completed date", + "example": "2011-10-05T14:48:00.000Z" }, + "error_message": { + "type": [ + "string", + "null" + ], + "example": "Gas fee is too low" + } + }, + "required": [ + "step" + ] + }, + "tracking_transaction_monitoring": { + "type": "object", + "properties": { "step": { - "description": "Payin transaction step", + "type": "string", "enum": [ "processing", "on_hold", "pending_review", "completed" ], - "example": "processing", - "type": "string" - }, - "ted_instruction": { - "properties": { - "account_number": { - "example": "01011707084-8", - "type": "string" - }, - "account_type": { - "example": "checking", - "type": "string" - }, - "bank_code": { - "example": "665", - "type": "string" - }, - "bank_name": { - "example": "STARK BANK S.A.", - "type": "string" - }, - "beneficiary_name": { - "example": "Blind Pay, Inc.", - "type": "string" - }, - "branch_code": { - "example": "5340", - "type": "string" - }, - "tax_id": { - "example": "57.599.376/0001-81", - "type": "string" - } - }, - "required": [ - "beneficiary_name", - "tax_id", - "bank_code", - "bank_name", - "branch_code", - "account_number", - "account_type" - ], - "type": [ - "object", - "null" - ] + "description": "Transaction monitoring step", + "example": "processing" }, - "trace_number": { - "example": "1234567890", + "blockchain_screening": { "type": [ - "string", + "number", "null" - ] + ], + "minimum": 0, + "maximum": 100, + "description": "Blindpay screening step", + "example": 1 }, - "transaction_hash": { - "description": "Blockchain transaction hash", - "example": "0x123...890", + "risk_score": { "type": [ - "string", + "number", "null" - ] + ], + "minimum": 0, + "maximum": 100, + "description": "Risk score", + "example": 1 }, - "transaction_reference": { - "example": "1234567890", + "completed_at": { "type": [ "string", "null" - ] - }, - "transfers_instruction": { - "properties": { - "account": { - "description": "CVU/CBU/Alias account number", - "example": "0000003100012389237485", - "type": "string" - }, - "tax_id": { - "description": "CUIT/CUIL (normalized, digits only)", - "example": "20123456783", - "type": [ - "string", - "null" - ] - }, - "type": { - "description": "Account type (CVU, CBU, or ALIAS)", - "enum": [ - "CVU", - "CBU", - "ALIAS" - ], - "example": "CVU", - "type": "string" - } - }, - "required": [ - "account", - "type" ], - "type": [ - "object", - "null" - ] + "description": "Transfer transaction completed date", + "example": "2011-10-05T14:48:00.000Z" } }, "required": [ "step" + ] + } + }, + "required": [ + "id", + "status", + "tracking_bridge_swap", + "tracking_complete", + "tracking_paymaster", + "tracking_transaction_monitoring" + ] + }, + "CreateTransferIn": { + "type": "object", + "properties": { + "transfer_quote_id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "pq_000000000000" + } + }, + "required": [ + "transfer_quote_id" + ] + }, + "CreateTransferQuoteOut": { + "type": "object", + "properties": { + "id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "qu_000000000000" + }, + "expires_at": { + "type": [ + "number", + "null" + ], + "description": "Epoch unix timestamp that represents the final datetime to transaction be received on blockchain", + "example": 1712958191 + }, + "commercial_quotation": { + "type": [ + "number", + "null" + ], + "description": "1 USD = 4.95 BRL", + "example": 495 + }, + "blindpay_quotation": { + "type": [ + "number", + "null" + ], + "description": "1 USD = 5.05 BRL (commercial quotation + (blindpay taxes))", + "example": 505 + }, + "receiver_amount": { + "type": "number", + "description": "10.10 USDC", + "example": 1010 + }, + "sender_amount": { + "type": "number", + "description": "52.40 BRL needs to be sent in a pix transfer", + "example": 5240 + }, + "partner_fee_amount": { + "type": [ + "number", + "null" + ], + "default": 0, + "description": "1.5 USDC", + "example": 150 + }, + "flat_fee": { + "type": "number", + "description": "0.5 USDC", + "example": 50 + } + }, + "required": [ + "id", + "expires_at", + "commercial_quotation", + "blindpay_quotation", + "receiver_amount", + "sender_amount", + "flat_fee" + ] + }, + "CreateTransferQuoteIn": { + "type": "object", + "properties": { + "wallet_id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "bl_000000000000" + }, + "amount_reference": { + "type": "string", + "enum": [ + "sender", + "receiver" + ], + "description": "", + "example": "sender" + }, + "cover_fees": { + "type": [ + "boolean", + "null" + ], + "description": "If true, the sender will cover the fees. If false, the customer will cover the fees.", + "example": true + }, + "request_amount": { + "type": "integer", + "minimum": 1, + "description": "100 represents 1, 2050 represents 20.50", + "example": 1000 + }, + "sender_token": { + "type": "string", + "enum": [ + "USDC", + "USDT", + "USDB" + ], + "example": "USDC" + }, + "customer_wallet_address": { + "type": "string", + "minLength": 32, + "maxLength": 64, + "example": "0xDD6a3aD0949396e57C7738ba8FC1A46A5a1C372C" + }, + "customer_token": { + "type": "string", + "enum": [ + "USDC", + "USDT", + "USDB" + ], + "example": "USDC" + }, + "customer_network": { + "type": "string", + "enum": [ + "base", + "sepolia", + "arbitrum_sepolia", + "base_sepolia", + "arbitrum", + "polygon", + "polygon_amoy", + "ethereum", + "stellar", + "stellar_testnet", + "tron", + "solana", + "solana_devnet" + ], + "example": "polygon" + }, + "partner_fee_id": { + "type": [ + "string", + "null" + ], + "minLength": 15, + "maxLength": 15, + "example": "pf_000000000000" + } + }, + "required": [ + "wallet_id", + "amount_reference", + "request_amount", + "sender_token", + "customer_wallet_address", + "customer_token", + "customer_network" + ] + }, + "CustomerLimitIncreaseOut": { + "type": "object", + "properties": { + "id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "rl_000000000000" + } + }, + "required": [ + "id" + ] + }, + "CustomerLimitIncreaseIn": { + "type": "object", + "properties": { + "per_transaction": { + "type": [ + "integer", + "null" + ], + "maximum": 100000000000, + "example": 100000 + }, + "daily": { + "type": [ + "integer", + "null" + ], + "maximum": 100000000000, + "example": 200000 + }, + "monthly": { + "type": [ + "integer", + "null" + ], + "maximum": 100000000000, + "example": 1000000 + }, + "supporting_document_type": { + "type": "string", + "enum": [ + "individual_bank_statement", + "individual_tax_return", + "individual_proof_of_income", + "individual_pay_stub", + "individual_employment_letter", + "individual_investment_statement", + "individual_crypto_exchange_statement", + "individual_blockchain_wallet_statement", + "business_bank_statement", + "business_financial_statements", + "business_tax_return", + "business_contract", + "business_accounts_receivable", + "business_merchant_processor_statement", + "business_shareholder_loan" + ], + "example": "individual_bank_statement" + }, + "supporting_document_file": { + "type": "string", + "format": "uri", + "example": "https://example.com/document.pdf" + } + }, + "required": [ + "per_transaction", + "daily", + "monthly", + "supporting_document_type", + "supporting_document_file" + ] + }, + "GetCustomerLimitIncreaseOut": { + "type": "object", + "properties": { + "id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "rl_000000000000" + }, + "status": { + "type": "string", + "enum": [ + "in_review", + "approved", + "rejected" + ], + "example": "in_review" + }, + "per_transaction": { + "type": [ + "integer", + "null" + ], + "maximum": 100000000000, + "example": 100000 + }, + "daily": { + "type": [ + "integer", + "null" + ], + "maximum": 100000000000, + "example": 200000 + }, + "monthly": { + "type": [ + "integer", + "null" + ], + "maximum": 100000000000, + "example": 1000000 + }, + "approved_per_transaction": { + "type": [ + "integer", + "null" + ], + "maximum": 100000000000, + "example": 70000 + }, + "approved_daily": { + "type": [ + "integer", + "null" + ], + "maximum": 100000000000, + "example": 140000 + }, + "approved_monthly": { + "type": [ + "integer", + "null" + ], + "maximum": 100000000000, + "example": 700000 + }, + "supporting_document_type": { + "type": [ + "string", + "null" + ], + "enum": [ + "individual_bank_statement", + "individual_tax_return", + "individual_proof_of_income", + "individual_pay_stub", + "individual_employment_letter", + "individual_investment_statement", + "individual_crypto_exchange_statement", + "individual_blockchain_wallet_statement", + "business_bank_statement", + "business_financial_statements", + "business_tax_return", + "business_contract", + "business_accounts_receivable", + "business_merchant_processor_statement", + "business_shareholder_loan" + ], + "example": "individual_bank_statement" + }, + "supporting_document_file": { + "type": [ + "string", + "null" + ], + "format": "uri", + "example": "https://example.com/document.pdf" + }, + "customer_id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "re_000000000000" + }, + "created_at": { + "type": [ + "string", + "null" + ], + "format": "date-time", + "example": "2021-01-01T00:00:00Z" + }, + "updated_at": { + "type": [ + "string", + "null" + ], + "format": "date-time", + "example": "2021-01-01T00:00:00Z" + } + }, + "required": [ + "id", + "status", + "customer_id" + ] + }, + "OfframpWallet": { + "type": "object", + "properties": { + "id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "ow_000000000000" + }, + "external_id": { + "type": [ + "string", + "null" ], - "type": "object" + "example": "your_external_id" + }, + "instance_id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "in_000000000000" }, - "transaction_fee_amount": { - "description": "Transaction fee in cents (percentage-based fee)", - "example": 100, + "customer_id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "re_000000000000" + }, + "bank_account_id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "ba_000000000000" + }, + "circle_wallet_id": { "type": [ - "number", + "string", "null" - ] + ], + "example": "01234567-abcd-efgh-ijkl-012345678901" }, - "type": { + "network": { + "type": "string", "enum": [ - "individual", - "business" + "tron", + "solana", + "solana_devnet", + "arbitrum", + "base", + "ethereum", + "polygon", + "sepolia", + "arbitrum_sepolia", + "base_sepolia", + "polygon_amoy" ], - "example": "individual", - "type": "string" + "example": "tron" }, - "updated_at": { - "example": "2021-01-01T00:00:00Z", + "address": { + "type": "string", + "example": "TALJN9zTTEL9TVBb4WuTt6wLvPqJZr3hvb" + }, + "created_at": { + "type": [ + "string", + "null" + ], "format": "date-time", + "example": "2021-01-01T00:00:00Z" + }, + "updated_at": { "type": [ "string", "null" - ] + ], + "format": "date-time", + "example": "2021-01-01T00:00:00Z" } }, "required": [ "id", - "status", - "payin_quote_id", "instance_id", "customer_id", - "tracking_transaction", - "tracking_payment", - "tracking_complete", - "type", - "payment_method", - "sender_amount", - "receiver_amount", - "token", - "commercial_quotation", - "blindpay_quotation", - "currency", - "name", - "network" - ], - "type": "object" + "bank_account_id", + "network", + "address" + ] }, - "PayinPartnerFeeWebhookOut": { + "WalletOut": { + "type": "object", "properties": { - "billing_fee_amount": { - "description": "Billing fee in cents (charged at the end of the month)", - "example": 50, + "id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "bl_000000000000" + }, + "name": { + "type": "string", + "maxLength": 255, + "example": "Blindpay Wallet" + }, + "external_id": { "type": [ - "number", + "string", "null" - ] + ], + "maxLength": 255, + "example": "your-database-id" }, - "blindpay_bank_details": { - "properties": { - "account_number": { - "default": "621327727210181", - "example": "621327727210181", - "type": "string" - }, - "account_type": { - "default": "Business checking", - "example": "Business checking", - "type": "string" - }, - "ach": { - "properties": { - "account_number": { - "example": "123456789", - "type": "string" - }, - "routing_number": { - "example": "123456789", - "type": "string" - } - }, - "required": [ - "routing_number", - "account_number" - ], - "type": [ - "object", - "null" - ] - }, - "beneficiary": { - "properties": { - "address_line_1": { - "default": "8 The Green, #19364", - "example": "8 The Green, #19364", - "type": "string" - }, - "address_line_2": { - "default": "Dover, DE 19901", - "example": "Dover, DE 19901", - "type": "string" - }, - "name": { - "default": "BlindPay, Inc.", - "example": "BlindPay, Inc.", - "type": "string" - } - }, - "type": "object" - }, - "receiving_bank": { - "properties": { - "address_line_1": { - "default": "1 Letterman Drive, Building A, Suite A4-700", - "example": "1 Letterman Drive, Building A, Suite A4-700", - "type": "string" - }, - "address_line_2": { - "default": "San Francisco, CA 94129", - "example": "San Francisco, CA 94129", - "type": "string" - }, - "name": { - "default": "CFSB", - "example": "CFSB", - "type": "string" - } - }, - "type": "object" - }, - "routing_number": { - "default": "121145349", - "example": "121145349", - "type": "string" - }, - "rtp": { - "properties": { - "account_number": { - "example": "123456789", - "type": "string" - }, - "routing_number": { - "example": "123456789", - "type": "string" - } - }, - "required": [ - "routing_number", - "account_number" - ], - "type": [ - "object", - "null" - ] - }, - "swift_account_number": { - "example": "GB50TCCL04140449730892", - "type": [ - "string", - "null" - ] - }, - "swift_bic_code": { - "default": "CHASUS33", - "example": "CHASUS33", - "type": [ - "string", - "null" - ] - }, - "swift_receiving_bank": { - "properties": { - "address_line_1": { - "example": "270 Park Ave", - "type": [ - "string", - "null" - ] - }, - "address_line_2": { - "example": "New York, NY, 10017-2070", - "type": [ - "string", - "null" - ] - }, - "name": { - "example": "JPMorgan Chase", - "type": [ - "string", - "null" - ] - } - }, - "type": [ - "object", - "null" - ] - }, - "wire": { - "properties": { - "account_number": { - "example": "123456789", - "type": "string" - }, - "routing_number": { - "example": "123456789", - "type": "string" - } - }, - "required": [ - "routing_number", - "account_number" - ], - "type": [ - "object", - "null" - ] - } - }, - "required": [ - "beneficiary", - "receiving_bank" + "address": { + "type": [ + "string", + "null" ], - "type": "object" + "maxLength": 64, + "example": "0xDD6a3aD0949396e57C7738ba8FC1A46A5a1C372C" }, - "clabe": { - "description": "CLABE code", - "example": "014027000000000008", + "network": { + "type": "string", + "enum": [ + "base", + "sepolia", + "arbitrum_sepolia", + "base_sepolia", + "arbitrum", + "polygon", + "polygon_amoy", + "ethereum", + "stellar", + "stellar_testnet", + "tron", + "solana", + "solana_devnet" + ], + "example": "polygon" + }, + "created_at": { "type": [ "string", "null" - ] + ], + "format": "date-time", + "example": "2021-01-01T00:00:00Z" + } + }, + "required": [ + "id", + "name", + "network" + ] + }, + "CreateWalletIn": { + "type": "object", + "properties": { + "network": { + "type": "string", + "enum": [ + "base", + "sepolia", + "arbitrum_sepolia", + "base_sepolia", + "arbitrum", + "polygon", + "polygon_amoy", + "ethereum", + "stellar", + "stellar_testnet", + "tron", + "solana", + "solana_devnet" + ], + "example": "polygon" }, - "customer_id": { - "example": "re_000000000000", - "maxLength": 15, - "minLength": 15, + "external_id": { "type": [ "string", "null" - ] + ], + "maxLength": 255, + "example": "your-database-id" }, + "name": { + "type": "string", + "maxLength": 255, + "example": "Blindpay Wallet" + } + }, + "required": [ + "network", + "name" + ] + }, + "WalletBalanceOut": { + "type": "object", + "properties": { + "USDC": { + "$ref": "#/components/schemas/WalletTokenOut" + }, + "USDT": { + "$ref": "#/components/schemas/WalletTokenOut" + }, + "USDB": { + "$ref": "#/components/schemas/WalletTokenOut" + } + }, + "required": [ + "USDC", + "USDT", + "USDB" + ] + }, + "BlockchainWalletMessageOut": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + }, + "required": [ + "message" + ] + }, + "BlockchainWalletOut": { + "type": "object", + "properties": { "id": { - "example": "pi_000000000000", + "type": "string", + "minLength": 15, "maxLength": 15, + "example": "bw_000000000000" + }, + "name": { + "type": [ + "string", + "null" + ], + "example": "Wallet Display Name" + }, + "network": { + "type": [ + "string", + "null" + ], + "enum": [ + "base", + "sepolia", + "arbitrum_sepolia", + "base_sepolia", + "arbitrum", + "polygon", + "polygon_amoy", + "ethereum", + "stellar", + "stellar_testnet", + "tron", + "solana", + "solana_devnet" + ], + "example": "polygon" + }, + "address": { + "type": [ + "string", + "null" + ], + "example": "0xDD6a3aD0949396e57C7738ba8FC1A46A5a1C372C" + }, + "signature_tx_hash": { + "type": [ + "string", + "null" + ], + "example": "0x3c499c542cef5e3811e1192ce70d8cc03d5c3359" + }, + "is_account_abstraction": { + "type": [ + "boolean", + "null" + ], + "example": false + }, + "customer_id": { + "type": "string", "minLength": 15, - "type": "string" + "maxLength": 15, + "example": "re_000000000000" + } + }, + "required": [ + "id", + "name", + "network", + "customer_id" + ] + }, + "CreateBlockchainWalletIn": { + "type": "object", + "properties": { + "name": { + "type": "string", + "example": "Wallet Display Name" }, - "memo_code": { - "description": "Memo code", - "example": "8K45GHBNT6BQ6462", + "network": { + "type": "string", + "enum": [ + "base", + "sepolia", + "arbitrum_sepolia", + "base_sepolia", + "arbitrum", + "polygon", + "polygon_amoy", + "ethereum", + "stellar", + "stellar_testnet", + "tron", + "solana", + "solana_devnet" + ], + "example": "polygon" + }, + "signature_tx_hash": { "type": [ "string", "null" - ] + ], + "example": "0x3c499c542cef5e3811e1192ce70d8cc03d5c3359" }, - "partner_fee": { - "default": 0, - "description": "Payin partner fee amount in cents", - "example": 25000, - "minimum": 0, - "type": "integer" + "address": { + "type": [ + "string", + "null" + ], + "example": "0xDD6a3aD0949396e57C7738ba8FC1A46A5a1C372C" }, - "payment_method": { + "is_account_abstraction": { + "type": [ + "boolean", + "null" + ], + "example": false + } + }, + "required": [ + "name", + "network" + ] + }, + "BankAccountOut": { + "type": "object", + "properties": { + "id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "ba_000000000000" + }, + "type": { + "type": "string", "enum": [ - "ach", "wire", + "ach", "pix", + "pix_safe", "ted", - "spei", - "transfers", - "pse", + "spei_bitso", + "transfers_bitso", + "ach_cop_bitso", "international_swift", - "rtp" + "rtp", + "sepa" ], - "example": "pix", + "example": "wire" + }, + "name": { + "type": "string", + "example": "Bank Account Name" + }, + "pix_key": { "type": [ "string", "null" - ] + ], + "example": "14947677768" }, - "pix_code": { - "description": "PIX code", - "example": "00020101021226790014br.gov.bcb.pix2557brcode.starkinfra.com/v2/bcf07f6c4110454e9fd6f120bab13e835204000053039865802BR5915Blind Pay, Inc.6010Vila Velha62070503***6304BCAB", + "beneficiary_name": { "type": [ "string", "null" - ] + ], + "maxLength": 128, + "example": "Individual full name or business name" }, - "receiver_amount": { - "description": "10.10 USDC", - "example": 1010, + "routing_number": { "type": [ - "number", + "string", "null" - ] + ], + "example": "012345678" }, - "sender_amount": { - "description": "52.40 BRL needs to be sent in a pix transfer", - "example": 5240, + "account_number": { + "type": [ + "string", + "null" + ], + "example": "1001001234" + }, + "account_type": { + "type": [ + "string", + "null" + ], + "enum": [ + "checking", + "saving" + ], + "example": "checking" + }, + "account_class": { + "type": [ + "string", + "null" + ], + "enum": [ + "individual", + "business" + ], + "example": "individual" + }, + "address_line_1": { + "type": [ + "string", + "null" + ], + "example": "Address line 1" + }, + "address_line_2": { + "type": [ + "string", + "null" + ], + "example": "Address line 2" + }, + "city": { "type": [ - "number", + "string", "null" - ] - }, - "status": { - "description": "Payin general status", - "enum": [ - "processing", - "on_hold", - "failed", - "refunded", - "completed" ], - "example": "processing", - "type": "string" + "example": "City" }, - "tracking_complete": { - "properties": { - "completed_at": { - "description": "Complete completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "step": { - "description": "Complete step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "example": "on_hold", - "type": "string" - }, - "transaction_hash": { - "description": "Complete transaction hash", - "example": "0x123...890", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "step" + "state_province_region": { + "type": [ + "string", + "null" ], - "type": "object" + "example": "State/Province/Region" }, - "tracking_payment": { - "properties": { - "approved_risk_sources": { - "description": "Risk sources already approved by an analyst", - "example": [ - "seon_review" - ], - "items": { - "type": "string" - }, - "type": [ - "array", - "null" - ] - }, - "completed_at": { - "description": "Payment completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "provider_name": { - "description": "Payment provider name", - "example": "blockchain", - "type": [ - "string", - "null" - ] - }, - "review_context": { - "additionalProperties": {}, - "description": "Structured risk context for manual review", - "type": [ - "object", - "null" - ] - }, - "review_source": { - "description": "Risk source that sent this payin to manual review", - "example": "seon_review", - "type": [ - "string", - "null" - ] - }, - "step": { - "description": "Payment step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "example": "on_hold", - "type": "string" - } - }, - "required": [ - "step" + "country": { + "type": [ + "string", + "null" ], - "type": "object" - }, - "tracking_transaction": { - "properties": { - "completed_at": { - "description": "Payin transaction completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "description": { - "example": "Payment from John Doe Smith", - "type": [ - "string", - "null" - ] - }, - "end_to_end_id": { - "description": "BACEN Pix end-to-end transaction ID (govt Pix ID)", - "example": "E20018183202603311320vm6ALFpJpsS", - "type": [ - "string", - "null" - ] - }, - "external_id": { - "description": "Payin transaction external id", - "example": "12345678", - "type": [ - "string", - "null" - ] - }, - "provider_name": { - "description": "Payment provider name", - "enum": [ - "Nvio Pagos", - "Brex", - "Stark Bank", - "JPMorgan Chase", - "HSBC", - "Inter", - "JP Morgan Chase", - "Bitso", - "Citi", - "CFSB", - "Triple A Technologies", - "Portage Bank" - ], - "example": "HSBC", - "type": [ - "string", - "null" - ] - }, - "provider_transaction_id": { - "description": "Payment provider transaction id", - "example": "", - "type": [ - "string", - "null" - ] - }, - "pse_instruction": { - "properties": { - "bank_code": { - "description": "PSE payer bank code", - "example": "1007", - "type": [ - "string", - "null" - ] - }, - "document_type": { - "description": "PSE payer document type", - "enum": [ - "CC", - "NIT" - ], - "example": "CC", - "type": "string" - }, - "email": { - "description": "PSE payer email", - "example": "juan@example.com", - "type": "string" - }, - "fid": { - "description": "PSE funding identifier for webhook matching", - "example": "fid_abc123", - "type": "string" - }, - "full_name": { - "description": "PSE payer full name", - "example": "Juan P\u00e9rez Garc\u00eda", - "type": "string" - }, - "payment_link": { - "description": "PSE payment link URL", - "example": "https://pse.example.com/payment/abc123", - "type": "string" - }, - "phone": { - "description": "PSE payer phone number", - "example": "+573001234567", - "type": "string" - }, - "tax_id": { - "description": "PSE payer document number", - "example": "1234567890", - "type": "string" - } - }, - "required": [ - "payment_link", - "fid", - "full_name", - "tax_id", - "document_type", - "phone", - "email" - ], - "type": [ - "object", - "null" - ] - }, - "sender_account_number": { - "example": "1234567890", - "type": [ - "string", - "null" - ] - }, - "sender_bank_code": { - "example": "00416968", - "type": [ - "string", - "null" - ] - }, - "sender_bank_name": { - "example": "Bank of America", - "type": [ - "string", - "null" - ] - }, - "sender_name": { - "example": "John Doe Smith", - "type": [ - "string", - "null" - ] - }, - "sender_tax_id": { - "example": "123.456.789-10", - "type": [ - "string", - "null" - ] - }, - "status": { - "description": "Payin transaction status", - "enum": [ - "failed", - "completed" - ], - "example": "failed", - "type": [ - "string", - "null" - ] - }, - "step": { - "description": "Payin transaction step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "example": "processing", - "type": "string" - }, - "ted_instruction": { - "properties": { - "account_number": { - "example": "01011707084-8", - "type": "string" - }, - "account_type": { - "example": "checking", - "type": "string" - }, - "bank_code": { - "example": "665", - "type": "string" - }, - "bank_name": { - "example": "STARK BANK S.A.", - "type": "string" - }, - "beneficiary_name": { - "example": "Blind Pay, Inc.", - "type": "string" - }, - "branch_code": { - "example": "5340", - "type": "string" - }, - "tax_id": { - "example": "57.599.376/0001-81", - "type": "string" - } - }, - "required": [ - "beneficiary_name", - "tax_id", - "bank_code", - "bank_name", - "branch_code", - "account_number", - "account_type" - ], - "type": [ - "object", - "null" - ] - }, - "trace_number": { - "example": "1234567890", - "type": [ - "string", - "null" - ] - }, - "transaction_hash": { - "description": "Blockchain transaction hash", - "example": "0x123...890", - "type": [ - "string", - "null" - ] - }, - "transaction_reference": { - "example": "1234567890", - "type": [ - "string", - "null" - ] - }, - "transfers_instruction": { - "properties": { - "account": { - "description": "CVU/CBU/Alias account number", - "example": "0000003100012389237485", - "type": "string" - }, - "tax_id": { - "description": "CUIT/CUIL (normalized, digits only)", - "example": "20123456783", - "type": [ - "string", - "null" - ] - }, - "type": { - "description": "Account type (CVU, CBU, or ALIAS)", - "enum": [ - "CVU", - "CBU", - "ALIAS" - ], - "example": "CVU", - "type": "string" - } - }, - "required": [ - "account", - "type" - ], - "type": [ - "object", - "null" - ] - } - }, - "required": [ - "step" + "enum": [ + "AF", + "AL", + "DZ", + "AS", + "AD", + "AO", + "AI", + "AQ", + "AG", + "AR", + "AM", + "AW", + "AU", + "AT", + "AZ", + "BS", + "BH", + "BD", + "BB", + "BY", + "BE", + "BZ", + "BJ", + "BM", + "BT", + "BO", + "BQ", + "BA", + "BW", + "BV", + "BR", + "IO", + "BN", + "BG", + "BF", + "BI", + "CV", + "KH", + "CM", + "CA", + "KY", + "CF", + "TD", + "CL", + "CN", + "CX", + "CC", + "CO", + "KM", + "CD", + "CG", + "CK", + "CR", + "HR", + "CU", + "CW", + "CY", + "CZ", + "CI", + "DK", + "DJ", + "DM", + "DO", + "EC", + "EG", + "SV", + "GQ", + "ER", + "EE", + "SZ", + "ET", + "FK", + "FO", + "FJ", + "FI", + "FR", + "GF", + "PF", + "TF", + "GA", + "GM", + "GE", + "DE", + "GH", + "GI", + "GR", + "GL", + "GD", + "GP", + "GU", + "GT", + "GG", + "GN", + "GW", + "GY", + "HT", + "HM", + "VA", + "HN", + "HK", + "HU", + "IS", + "IN", + "ID", + "IR", + "IQ", + "IE", + "IM", + "IL", + "IT", + "JM", + "JP", + "JE", + "JO", + "KZ", + "KE", + "KI", + "KP", + "KR", + "KW", + "KG", + "LA", + "LV", + "LB", + "LS", + "LR", + "LY", + "LI", + "LT", + "LU", + "MO", + "MG", + "MW", + "MY", + "MV", + "ML", + "MT", + "MH", + "MQ", + "MR", + "MU", + "YT", + "MX", + "FM", + "MD", + "MC", + "MN", + "ME", + "MS", + "MA", + "MZ", + "MM", + "NA", + "NR", + "NP", + "NL", + "NC", + "NZ", + "NI", + "NE", + "NG", + "NU", + "NF", + "MP", + "NO", + "OM", + "PK", + "PW", + "PS", + "PA", + "PG", + "PY", + "PE", + "PH", + "PN", + "PL", + "PT", + "PR", + "QA", + "MK", + "RO", + "RU", + "RW", + "RE", + "BL", + "SH", + "KN", + "LC", + "MF", + "PM", + "VC", + "WS", + "SM", + "ST", + "SA", + "SN", + "RS", + "SC", + "SL", + "SG", + "SX", + "SK", + "SI", + "SB", + "SO", + "ZA", + "GS", + "SS", + "ES", + "LK", + "SD", + "SR", + "SJ", + "SE", + "CH", + "SY", + "TW", + "TJ", + "TZ", + "TH", + "TL", + "TG", + "TK", + "TO", + "TT", + "TN", + "TR", + "TM", + "TC", + "TV", + "UG", + "UA", + "AE", + "GB", + "UM", + "US", + "UY", + "UZ", + "VU", + "VE", + "VN", + "VG", + "VI", + "WF", + "EH", + "YE", + "ZM", + "ZW", + "AX" ], - "type": "object" + "example": "US" }, - "transaction_fee_amount": { - "description": "Transaction fee in cents (percentage-based fee)", - "example": 100, + "postal_code": { "type": [ - "number", + "string", "null" - ] + ], + "example": "Postal code" }, - "webhook_event": { + "spei_protocol": { + "type": [ + "string", + "null" + ], "enum": [ - "payin.partnerFee" + "clabe", + "debitcard", + "phonenum" ], - "type": "string" - } - }, - "required": [ - "webhook_event", - "id", - "status", - "tracking_complete", - "tracking_payment", - "tracking_transaction", - "blindpay_bank_details" - ], - "type": "object" - }, - "PayinUpdateWebhookOut": { - "properties": { - "billing_fee_amount": { - "description": "Billing fee in cents (charged at the end of the month)", - "example": 50, + "description": "For debitcard and phonenum the spei_institution_code is required", + "example": "clabe" + }, + "spei_institution_code": { "type": [ - "number", + "string", "null" - ] + ], + "minLength": 5, + "maxLength": 5, + "example": "40002" }, - "blindpay_bank_details": { - "properties": { - "account_number": { - "default": "621327727210181", - "example": "621327727210181", - "type": "string" - }, - "account_type": { - "default": "Business checking", - "example": "Business checking", - "type": "string" - }, - "ach": { - "properties": { - "account_number": { - "example": "123456789", - "type": "string" - }, - "routing_number": { - "example": "123456789", - "type": "string" - } - }, - "required": [ - "routing_number", - "account_number" - ], - "type": [ - "object", - "null" - ] - }, - "beneficiary": { - "properties": { - "address_line_1": { - "default": "8 The Green, #19364", - "example": "8 The Green, #19364", - "type": "string" - }, - "address_line_2": { - "default": "Dover, DE 19901", - "example": "Dover, DE 19901", - "type": "string" - }, - "name": { - "default": "BlindPay, Inc.", - "example": "BlindPay, Inc.", - "type": "string" - } - }, - "type": "object" - }, - "receiving_bank": { - "properties": { - "address_line_1": { - "default": "1 Letterman Drive, Building A, Suite A4-700", - "example": "1 Letterman Drive, Building A, Suite A4-700", - "type": "string" - }, - "address_line_2": { - "default": "San Francisco, CA 94129", - "example": "San Francisco, CA 94129", - "type": "string" - }, - "name": { - "default": "CFSB", - "example": "CFSB", - "type": "string" - } - }, - "type": "object" - }, - "routing_number": { - "default": "121145349", - "example": "121145349", - "type": "string" - }, - "rtp": { - "properties": { - "account_number": { - "example": "123456789", - "type": "string" - }, - "routing_number": { - "example": "123456789", - "type": "string" - } - }, - "required": [ - "routing_number", - "account_number" - ], - "type": [ - "object", - "null" - ] - }, - "swift_account_number": { - "example": "GB50TCCL04140449730892", - "type": [ - "string", - "null" - ] - }, - "swift_bic_code": { - "default": "CHASUS33", - "example": "CHASUS33", - "type": [ - "string", - "null" - ] - }, - "swift_receiving_bank": { - "properties": { - "address_line_1": { - "example": "270 Park Ave", - "type": [ - "string", - "null" - ] - }, - "address_line_2": { - "example": "New York, NY, 10017-2070", - "type": [ - "string", - "null" - ] - }, - "name": { - "example": "JPMorgan Chase", - "type": [ - "string", - "null" - ] - } - }, - "type": [ - "object", - "null" - ] - }, - "wire": { - "properties": { - "account_number": { - "example": "123456789", - "type": "string" - }, - "routing_number": { - "example": "123456789", - "type": "string" - } - }, - "required": [ - "routing_number", - "account_number" - ], - "type": [ - "object", - "null" - ] - } - }, - "required": [ - "beneficiary", - "receiving_bank" + "spei_clabe": { + "type": [ + "string", + "null" + ], + "example": "5482347403740546" + }, + "transfers_type": { + "type": [ + "string", + "null" + ], + "enum": [ + "CVU", + "CBU", + "ALIAS" + ], + "example": "CVU" + }, + "transfers_account": { + "type": [ + "string", + "null" + ], + "example": "BM123123123123" + }, + "ach_cop_beneficiary_first_name": { + "type": [ + "string", + "null" + ], + "example": "Fernando" + }, + "ach_cop_beneficiary_last_name": { + "type": [ + "string", + "null" + ], + "example": "Guzman Alarcón" + }, + "ach_cop_document_id": { + "type": [ + "string", + "null" + ], + "example": "1661105408" + }, + "ach_cop_document_type": { + "type": [ + "string", + "null" + ], + "enum": [ + "CC", + "CE", + "NIT", + "PASS", + "PEP" + ], + "description": "CC - Cédula de Ciudadanía; CE - Cédula de Extranjería; NIT - Número de Identificación Tributaria; PASS - Passport; PEP - Permiso Especial de Permanencia", + "example": "CC" + }, + "ach_cop_email": { + "type": [ + "string", + "null" + ], + "example": "fernando.guzman@gmail.com" + }, + "ach_cop_bank_code": { + "type": [ + "string", + "null" + ], + "example": "051" + }, + "ach_cop_bank_account": { + "type": [ + "string", + "null" + ], + "example": "12345678" + }, + "swift_code_bic": { + "type": [ + "string", + "null" + ], + "example": "123456789" + }, + "swift_account_holder_name": { + "type": [ + "string", + "null" + ], + "maxLength": 50, + "example": "John Doe" + }, + "swift_account_number_iban": { + "type": [ + "string", + "null" + ], + "example": "123456789" + }, + "swift_beneficiary_address_line_1": { + "type": [ + "string", + "null" + ], + "example": "123 MAIN STREET SUITE 100" + }, + "swift_beneficiary_address_line_2": { + "type": [ + "string", + "null" + ], + "example": "BUILDING A FLOOR 5" + }, + "swift_beneficiary_country": { + "type": [ + "string", + "null" + ], + "enum": [ + "AF", + "AL", + "DZ", + "AS", + "AD", + "AO", + "AI", + "AQ", + "AG", + "AR", + "AM", + "AW", + "AU", + "AT", + "AZ", + "BS", + "BH", + "BD", + "BB", + "BY", + "BE", + "BZ", + "BJ", + "BM", + "BT", + "BO", + "BQ", + "BA", + "BW", + "BV", + "BR", + "IO", + "BN", + "BG", + "BF", + "BI", + "CV", + "KH", + "CM", + "CA", + "KY", + "CF", + "TD", + "CL", + "CN", + "CX", + "CC", + "CO", + "KM", + "CD", + "CG", + "CK", + "CR", + "HR", + "CU", + "CW", + "CY", + "CZ", + "CI", + "DK", + "DJ", + "DM", + "DO", + "EC", + "EG", + "SV", + "GQ", + "ER", + "EE", + "SZ", + "ET", + "FK", + "FO", + "FJ", + "FI", + "FR", + "GF", + "PF", + "TF", + "GA", + "GM", + "GE", + "DE", + "GH", + "GI", + "GR", + "GL", + "GD", + "GP", + "GU", + "GT", + "GG", + "GN", + "GW", + "GY", + "HT", + "HM", + "VA", + "HN", + "HK", + "HU", + "IS", + "IN", + "ID", + "IR", + "IQ", + "IE", + "IM", + "IL", + "IT", + "JM", + "JP", + "JE", + "JO", + "KZ", + "KE", + "KI", + "KP", + "KR", + "KW", + "KG", + "LA", + "LV", + "LB", + "LS", + "LR", + "LY", + "LI", + "LT", + "LU", + "MO", + "MG", + "MW", + "MY", + "MV", + "ML", + "MT", + "MH", + "MQ", + "MR", + "MU", + "YT", + "MX", + "FM", + "MD", + "MC", + "MN", + "ME", + "MS", + "MA", + "MZ", + "MM", + "NA", + "NR", + "NP", + "NL", + "NC", + "NZ", + "NI", + "NE", + "NG", + "NU", + "NF", + "MP", + "NO", + "OM", + "PK", + "PW", + "PS", + "PA", + "PG", + "PY", + "PE", + "PH", + "PN", + "PL", + "PT", + "PR", + "QA", + "MK", + "RO", + "RU", + "RW", + "RE", + "BL", + "SH", + "KN", + "LC", + "MF", + "PM", + "VC", + "WS", + "SM", + "ST", + "SA", + "SN", + "RS", + "SC", + "SL", + "SG", + "SX", + "SK", + "SI", + "SB", + "SO", + "ZA", + "GS", + "SS", + "ES", + "LK", + "SD", + "SR", + "SJ", + "SE", + "CH", + "SY", + "TW", + "TJ", + "TZ", + "TH", + "TL", + "TG", + "TK", + "TO", + "TT", + "TN", + "TR", + "TM", + "TC", + "TV", + "UG", + "UA", + "AE", + "GB", + "UM", + "US", + "UY", + "UZ", + "VU", + "VE", + "VN", + "VG", + "VI", + "WF", + "EH", + "YE", + "ZM", + "ZW", + "AX" ], - "type": "object" + "example": "MX" }, - "clabe": { - "description": "CLABE code", - "example": "014027000000000008", + "swift_beneficiary_city": { "type": [ "string", "null" - ] + ], + "example": "MEXICO CITY" }, - "customer_id": { - "example": "re_000000000000", - "maxLength": 15, - "minLength": 15, + "swift_beneficiary_state_province_region": { "type": [ "string", "null" - ] - }, - "id": { - "example": "pi_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" + ], + "example": "MX" }, - "memo_code": { - "description": "Memo code", - "example": "8K45GHBNT6BQ6462", + "swift_beneficiary_postal_code": { "type": [ "string", "null" - ] - }, - "partner_fee": { - "default": 0, - "description": "Payin partner fee amount in cents", - "example": 25000, - "minimum": 0, - "type": "integer" - }, - "payment_method": { - "enum": [ - "ach", - "wire", - "pix", - "ted", - "spei", - "transfers", - "pse", - "international_swift", - "rtp" ], - "example": "pix", + "example": "11530" + }, + "swift_bank_name": { "type": [ "string", "null" - ] + ], + "example": "Banco Regional SA" }, - "pix_code": { - "description": "PIX code", - "example": "00020101021226790014br.gov.bcb.pix2557brcode.starkinfra.com/v2/bcf07f6c4110454e9fd6f120bab13e835204000053039865802BR5915Blind Pay, Inc.6010Vila Velha62070503***6304BCAB", + "swift_bank_address_line_1": { "type": [ "string", "null" - ] + ], + "example": "123 Main Street, Suite 100, Downtown District, City Center CP 12345" }, - "receiver_amount": { - "description": "10.10 USDC", - "example": 1010, + "swift_bank_address_line_2": { "type": [ - "number", + "string", "null" - ] + ], + "example": "456 Oak Avenue, Building 7, Financial District, Business Center CP 54321" }, - "sender_amount": { - "description": "52.40 BRL needs to be sent in a pix transfer", - "example": 5240, + "swift_bank_country": { "type": [ - "number", + "string", "null" - ] - }, - "status": { - "description": "Payin general status", - "enum": [ - "processing", - "on_hold", - "failed", - "refunded", - "completed" - ], - "example": "processing", - "type": "string" - }, - "tracking_complete": { - "properties": { - "completed_at": { - "description": "Complete completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "step": { - "description": "Complete step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "example": "on_hold", - "type": "string" - }, - "transaction_hash": { - "description": "Complete transaction hash", - "example": "0x123...890", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "step" ], - "type": "object" - }, - "tracking_payment": { - "properties": { - "approved_risk_sources": { - "description": "Risk sources already approved by an analyst", - "example": [ - "seon_review" - ], - "items": { - "type": "string" - }, - "type": [ - "array", - "null" - ] - }, - "completed_at": { - "description": "Payment completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "provider_name": { - "description": "Payment provider name", - "example": "blockchain", - "type": [ - "string", - "null" - ] - }, - "review_context": { - "additionalProperties": {}, - "description": "Structured risk context for manual review", - "type": [ - "object", - "null" - ] - }, - "review_source": { - "description": "Risk source that sent this payin to manual review", - "example": "seon_review", - "type": [ - "string", - "null" - ] - }, - "step": { - "description": "Payment step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "example": "on_hold", - "type": "string" - } - }, - "required": [ - "step" + "enum": [ + "AF", + "AL", + "DZ", + "AS", + "AD", + "AO", + "AI", + "AQ", + "AG", + "AR", + "AM", + "AW", + "AU", + "AT", + "AZ", + "BS", + "BH", + "BD", + "BB", + "BY", + "BE", + "BZ", + "BJ", + "BM", + "BT", + "BO", + "BQ", + "BA", + "BW", + "BV", + "BR", + "IO", + "BN", + "BG", + "BF", + "BI", + "CV", + "KH", + "CM", + "CA", + "KY", + "CF", + "TD", + "CL", + "CN", + "CX", + "CC", + "CO", + "KM", + "CD", + "CG", + "CK", + "CR", + "HR", + "CU", + "CW", + "CY", + "CZ", + "CI", + "DK", + "DJ", + "DM", + "DO", + "EC", + "EG", + "SV", + "GQ", + "ER", + "EE", + "SZ", + "ET", + "FK", + "FO", + "FJ", + "FI", + "FR", + "GF", + "PF", + "TF", + "GA", + "GM", + "GE", + "DE", + "GH", + "GI", + "GR", + "GL", + "GD", + "GP", + "GU", + "GT", + "GG", + "GN", + "GW", + "GY", + "HT", + "HM", + "VA", + "HN", + "HK", + "HU", + "IS", + "IN", + "ID", + "IR", + "IQ", + "IE", + "IM", + "IL", + "IT", + "JM", + "JP", + "JE", + "JO", + "KZ", + "KE", + "KI", + "KP", + "KR", + "KW", + "KG", + "LA", + "LV", + "LB", + "LS", + "LR", + "LY", + "LI", + "LT", + "LU", + "MO", + "MG", + "MW", + "MY", + "MV", + "ML", + "MT", + "MH", + "MQ", + "MR", + "MU", + "YT", + "MX", + "FM", + "MD", + "MC", + "MN", + "ME", + "MS", + "MA", + "MZ", + "MM", + "NA", + "NR", + "NP", + "NL", + "NC", + "NZ", + "NI", + "NE", + "NG", + "NU", + "NF", + "MP", + "NO", + "OM", + "PK", + "PW", + "PS", + "PA", + "PG", + "PY", + "PE", + "PH", + "PN", + "PL", + "PT", + "PR", + "QA", + "MK", + "RO", + "RU", + "RW", + "RE", + "BL", + "SH", + "KN", + "LC", + "MF", + "PM", + "VC", + "WS", + "SM", + "ST", + "SA", + "SN", + "RS", + "SC", + "SL", + "SG", + "SX", + "SK", + "SI", + "SB", + "SO", + "ZA", + "GS", + "SS", + "ES", + "LK", + "SD", + "SR", + "SJ", + "SE", + "CH", + "SY", + "TW", + "TJ", + "TZ", + "TH", + "TL", + "TG", + "TK", + "TO", + "TT", + "TN", + "TR", + "TM", + "TC", + "TV", + "UG", + "UA", + "AE", + "GB", + "UM", + "US", + "UY", + "UZ", + "VU", + "VE", + "VN", + "VG", + "VI", + "WF", + "EH", + "YE", + "ZM", + "ZW", + "AX" ], - "type": "object" + "example": "MX" }, - "tracking_transaction": { - "properties": { - "completed_at": { - "description": "Payin transaction completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "description": { - "example": "Payment from John Doe Smith", - "type": [ - "string", - "null" - ] - }, - "end_to_end_id": { - "description": "BACEN Pix end-to-end transaction ID (govt Pix ID)", - "example": "E20018183202603311320vm6ALFpJpsS", - "type": [ - "string", - "null" - ] - }, - "external_id": { - "description": "Payin transaction external id", - "example": "12345678", - "type": [ - "string", - "null" - ] - }, - "provider_name": { - "description": "Payment provider name", - "enum": [ - "Nvio Pagos", - "Brex", - "Stark Bank", - "JPMorgan Chase", - "HSBC", - "Inter", - "JP Morgan Chase", - "Bitso", - "Citi", - "CFSB", - "Triple A Technologies", - "Portage Bank" - ], - "example": "HSBC", - "type": [ - "string", - "null" - ] - }, - "provider_transaction_id": { - "description": "Payment provider transaction id", - "example": "", - "type": [ - "string", - "null" - ] - }, - "pse_instruction": { - "properties": { - "bank_code": { - "description": "PSE payer bank code", - "example": "1007", - "type": [ - "string", - "null" - ] - }, - "document_type": { - "description": "PSE payer document type", - "enum": [ - "CC", - "NIT" - ], - "example": "CC", - "type": "string" - }, - "email": { - "description": "PSE payer email", - "example": "juan@example.com", - "type": "string" - }, - "fid": { - "description": "PSE funding identifier for webhook matching", - "example": "fid_abc123", - "type": "string" - }, - "full_name": { - "description": "PSE payer full name", - "example": "Juan P\u00e9rez Garc\u00eda", - "type": "string" - }, - "payment_link": { - "description": "PSE payment link URL", - "example": "https://pse.example.com/payment/abc123", - "type": "string" - }, - "phone": { - "description": "PSE payer phone number", - "example": "+573001234567", - "type": "string" - }, - "tax_id": { - "description": "PSE payer document number", - "example": "1234567890", - "type": "string" - } - }, - "required": [ - "payment_link", - "fid", - "full_name", - "tax_id", - "document_type", - "phone", - "email" - ], - "type": [ - "object", - "null" - ] - }, - "sender_account_number": { - "example": "1234567890", - "type": [ - "string", - "null" - ] - }, - "sender_bank_code": { - "example": "00416968", - "type": [ - "string", - "null" - ] - }, - "sender_bank_name": { - "example": "Bank of America", - "type": [ - "string", - "null" - ] - }, - "sender_name": { - "example": "John Doe Smith", - "type": [ - "string", - "null" - ] - }, - "sender_tax_id": { - "example": "123.456.789-10", - "type": [ - "string", - "null" - ] - }, - "status": { - "description": "Payin transaction status", - "enum": [ - "failed", - "completed" - ], - "example": "failed", - "type": [ - "string", - "null" - ] - }, - "step": { - "description": "Payin transaction step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "example": "processing", - "type": "string" - }, - "ted_instruction": { - "properties": { - "account_number": { - "example": "01011707084-8", - "type": "string" - }, - "account_type": { - "example": "checking", - "type": "string" - }, - "bank_code": { - "example": "665", - "type": "string" - }, - "bank_name": { - "example": "STARK BANK S.A.", - "type": "string" - }, - "beneficiary_name": { - "example": "Blind Pay, Inc.", - "type": "string" - }, - "branch_code": { - "example": "5340", - "type": "string" - }, - "tax_id": { - "example": "57.599.376/0001-81", - "type": "string" - } - }, - "required": [ - "beneficiary_name", - "tax_id", - "bank_code", - "bank_name", - "branch_code", - "account_number", - "account_type" - ], - "type": [ - "object", - "null" - ] - }, - "trace_number": { - "example": "1234567890", - "type": [ - "string", - "null" - ] - }, - "transaction_hash": { - "description": "Blockchain transaction hash", - "example": "0x123...890", - "type": [ - "string", - "null" - ] + "swift_bank_city": { + "type": [ + "string", + "null" + ], + "example": "City" + }, + "swift_bank_state_province_region": { + "type": [ + "string", + "null" + ], + "example": "District" + }, + "swift_bank_postal_code": { + "type": [ + "string", + "null" + ], + "example": "11530" + }, + "swift_ifsc_branch_code": { + "type": [ + "string", + "null" + ], + "pattern": "^[A-Z]{4}0[A-Z0-9]{6}$", + "example": "BARB0AHIMCI" + }, + "swift_intermediary_bank_swift_code_bic": { + "anyOf": [ + { + "type": "string", + "minLength": 8, + "maxLength": 8 }, - "transaction_reference": { - "example": "1234567890", - "type": [ - "string", - "null" - ] + { + "type": "string", + "minLength": 11, + "maxLength": 11 }, - "transfers_instruction": { - "properties": { - "account": { - "description": "CVU/CBU/Alias account number", - "example": "0000003100012389237485", - "type": "string" - }, - "tax_id": { - "description": "CUIT/CUIL (normalized, digits only)", - "example": "20123456783", - "type": [ - "string", - "null" - ] - }, - "type": { - "description": "Account type (CVU, CBU, or ALIAS)", - "enum": [ - "CVU", - "CBU", - "ALIAS" - ], - "example": "CVU", - "type": "string" - } - }, - "required": [ - "account", - "type" - ], - "type": [ - "object", - "null" - ] + { + "type": "null" } - }, - "required": [ - "step" ], - "type": "object" + "example": "AEIBARB1" + }, + "swift_intermediary_bank_account_number_iban": { + "type": [ + "string", + "null" + ], + "maxLength": 34, + "example": "123456789" + }, + "swift_intermediary_bank_name": { + "type": [ + "string", + "null" + ], + "example": "Banco Regional SA" + }, + "swift_intermediary_bank_country": { + "type": [ + "string", + "null" + ], + "enum": [ + "AF", + "AL", + "DZ", + "AS", + "AD", + "AO", + "AI", + "AQ", + "AG", + "AR", + "AM", + "AW", + "AU", + "AT", + "AZ", + "BS", + "BH", + "BD", + "BB", + "BY", + "BE", + "BZ", + "BJ", + "BM", + "BT", + "BO", + "BQ", + "BA", + "BW", + "BV", + "BR", + "IO", + "BN", + "BG", + "BF", + "BI", + "CV", + "KH", + "CM", + "CA", + "KY", + "CF", + "TD", + "CL", + "CN", + "CX", + "CC", + "CO", + "KM", + "CD", + "CG", + "CK", + "CR", + "HR", + "CU", + "CW", + "CY", + "CZ", + "CI", + "DK", + "DJ", + "DM", + "DO", + "EC", + "EG", + "SV", + "GQ", + "ER", + "EE", + "SZ", + "ET", + "FK", + "FO", + "FJ", + "FI", + "FR", + "GF", + "PF", + "TF", + "GA", + "GM", + "GE", + "DE", + "GH", + "GI", + "GR", + "GL", + "GD", + "GP", + "GU", + "GT", + "GG", + "GN", + "GW", + "GY", + "HT", + "HM", + "VA", + "HN", + "HK", + "HU", + "IS", + "IN", + "ID", + "IR", + "IQ", + "IE", + "IM", + "IL", + "IT", + "JM", + "JP", + "JE", + "JO", + "KZ", + "KE", + "KI", + "KP", + "KR", + "KW", + "KG", + "LA", + "LV", + "LB", + "LS", + "LR", + "LY", + "LI", + "LT", + "LU", + "MO", + "MG", + "MW", + "MY", + "MV", + "ML", + "MT", + "MH", + "MQ", + "MR", + "MU", + "YT", + "MX", + "FM", + "MD", + "MC", + "MN", + "ME", + "MS", + "MA", + "MZ", + "MM", + "NA", + "NR", + "NP", + "NL", + "NC", + "NZ", + "NI", + "NE", + "NG", + "NU", + "NF", + "MP", + "NO", + "OM", + "PK", + "PW", + "PS", + "PA", + "PG", + "PY", + "PE", + "PH", + "PN", + "PL", + "PT", + "PR", + "QA", + "MK", + "RO", + "RU", + "RW", + "RE", + "BL", + "SH", + "KN", + "LC", + "MF", + "PM", + "VC", + "WS", + "SM", + "ST", + "SA", + "SN", + "RS", + "SC", + "SL", + "SG", + "SX", + "SK", + "SI", + "SB", + "SO", + "ZA", + "GS", + "SS", + "ES", + "LK", + "SD", + "SR", + "SJ", + "SE", + "CH", + "SY", + "TW", + "TJ", + "TZ", + "TH", + "TL", + "TG", + "TK", + "TO", + "TT", + "TN", + "TR", + "TM", + "TC", + "TV", + "UG", + "UA", + "AE", + "GB", + "UM", + "US", + "UY", + "UZ", + "VU", + "VE", + "VN", + "VG", + "VI", + "WF", + "EH", + "YE", + "ZM", + "ZW", + "AX" + ], + "example": "US" }, - "transaction_fee_amount": { - "description": "Transaction fee in cents (percentage-based fee)", - "example": 100, + "sepa_iban": { "type": [ - "number", + "string", "null" - ] + ], + "example": "DE89370400440532013000" }, - "webhook_event": { - "enum": [ - "payin.update" + "sepa_beneficiary_bic": { + "type": [ + "string", + "null" ], - "type": "string" - } - }, - "required": [ - "webhook_event", - "id", - "status", - "tracking_complete", - "tracking_payment", - "tracking_transaction", - "blindpay_bank_details" - ], - "type": "object" - }, - "PaymentMethodSchemaOut": { - "properties": { - "account_type": { - "description": "Bank account type: checking or savings", - "example": "checking", + "description": "BIC/SWIFT code of the beneficiary bank", + "example": "TRWIBEB1XXX" + }, + "sepa_beneficiary_legal_name": { "type": [ "string", "null" - ] + ], + "maxLength": 128, + "example": "Hans Müller" }, - "bank_name": { - "description": "Bank name for us_bank_account type", - "example": "Chase", + "sepa_beneficiary_address_line_1": { "type": [ "string", "null" - ] + ], + "example": "Friedrichstraße 12" }, - "brand": { - "description": "Card brand (visa, mastercard, amex, etc)", - "example": "visa", + "sepa_beneficiary_address_line_2": { "type": [ "string", "null" - ] + ], + "example": "Apt 4B" }, - "created_at": { - "description": "ISO timestamp when payment method was added", - "example": "2024-12-27T00:00:00.000Z", + "sepa_beneficiary_city": { "type": [ "string", "null" - ] + ], + "example": "Berlin" }, - "exp_month": { - "description": "Card expiration month (1-12)", - "example": 12, + "sepa_beneficiary_state_province_region": { "type": [ - "number", + "string", "null" - ] + ], + "example": "Berlin" }, - "exp_year": { - "description": "Card expiration year", - "example": 2025, + "sepa_beneficiary_postal_code": { "type": [ - "number", + "string", "null" - ] + ], + "example": "10117" + }, + "sepa_beneficiary_country": { + "type": [ + "string", + "null" + ], + "enum": [ + "AF", + "AL", + "DZ", + "AS", + "AD", + "AO", + "AI", + "AQ", + "AG", + "AR", + "AM", + "AW", + "AU", + "AT", + "AZ", + "BS", + "BH", + "BD", + "BB", + "BY", + "BE", + "BZ", + "BJ", + "BM", + "BT", + "BO", + "BQ", + "BA", + "BW", + "BV", + "BR", + "IO", + "BN", + "BG", + "BF", + "BI", + "CV", + "KH", + "CM", + "CA", + "KY", + "CF", + "TD", + "CL", + "CN", + "CX", + "CC", + "CO", + "KM", + "CD", + "CG", + "CK", + "CR", + "HR", + "CU", + "CW", + "CY", + "CZ", + "CI", + "DK", + "DJ", + "DM", + "DO", + "EC", + "EG", + "SV", + "GQ", + "ER", + "EE", + "SZ", + "ET", + "FK", + "FO", + "FJ", + "FI", + "FR", + "GF", + "PF", + "TF", + "GA", + "GM", + "GE", + "DE", + "GH", + "GI", + "GR", + "GL", + "GD", + "GP", + "GU", + "GT", + "GG", + "GN", + "GW", + "GY", + "HT", + "HM", + "VA", + "HN", + "HK", + "HU", + "IS", + "IN", + "ID", + "IR", + "IQ", + "IE", + "IM", + "IL", + "IT", + "JM", + "JP", + "JE", + "JO", + "KZ", + "KE", + "KI", + "KP", + "KR", + "KW", + "KG", + "LA", + "LV", + "LB", + "LS", + "LR", + "LY", + "LI", + "LT", + "LU", + "MO", + "MG", + "MW", + "MY", + "MV", + "ML", + "MT", + "MH", + "MQ", + "MR", + "MU", + "YT", + "MX", + "FM", + "MD", + "MC", + "MN", + "ME", + "MS", + "MA", + "MZ", + "MM", + "NA", + "NR", + "NP", + "NL", + "NC", + "NZ", + "NI", + "NE", + "NG", + "NU", + "NF", + "MP", + "NO", + "OM", + "PK", + "PW", + "PS", + "PA", + "PG", + "PY", + "PE", + "PH", + "PN", + "PL", + "PT", + "PR", + "QA", + "MK", + "RO", + "RU", + "RW", + "RE", + "BL", + "SH", + "KN", + "LC", + "MF", + "PM", + "VC", + "WS", + "SM", + "ST", + "SA", + "SN", + "RS", + "SC", + "SL", + "SG", + "SX", + "SK", + "SI", + "SB", + "SO", + "ZA", + "GS", + "SS", + "ES", + "LK", + "SD", + "SR", + "SJ", + "SE", + "CH", + "SY", + "TW", + "TJ", + "TZ", + "TH", + "TL", + "TG", + "TK", + "TO", + "TT", + "TN", + "TR", + "TM", + "TC", + "TV", + "UG", + "UA", + "AE", + "GB", + "UM", + "US", + "UY", + "UZ", + "VU", + "VE", + "VN", + "VG", + "VI", + "WF", + "EH", + "YE", + "ZM", + "ZW", + "AX" + ], + "example": "DE" + }, + "business_industry": { + "type": [ + "string", + "null" + ], + "enum": [ + "111998", + "112120", + "113310", + "115114", + "541211", + "541810", + "541430", + "541715", + "541930", + "561422", + "561311", + "561612", + "561740", + "561730", + "236115", + "236220", + "237310", + "238210", + "811111", + "812111", + "812112", + "532111", + "624410", + "541922", + "811210", + "812199", + "611110", + "611310", + "611410", + "611710", + "211120", + "212114", + "221310", + "562111", + "562920", + "213112", + "522110", + "522210", + "522320", + "523150", + "523940", + "523999", + "524113", + "813110", + "813211", + "813219", + "551112", + "721110", + "722511", + "722513", + "561510", + "713110", + "713210", + "712110", + "711110", + "711211", + "621111", + "621210", + "622110", + "623110", + "621511", + "623220", + "541940", + "621399", + "621910", + "541110", + "311421", + "337121", + "322220", + "339920", + "334210", + "339930", + "312130", + "334111", + "334118", + "325412", + "339112", + "336110", + "336390", + "315990", + "313110", + "339910", + "516120", + "513130", + "512250", + "519130", + "711410", + "711510", + "531110", + "531120", + "531130", + "531190", + "531210", + "531311", + "531312", + "531320", + "531390", + "454110", + "445110", + "455110", + "457110", + "449210", + "444110", + "459210", + "459120", + "445320", + "458110", + "458210", + "458310", + "455219", + "424210", + "456110", + "446120", + "541511", + "541512", + "541519", + "518210", + "511210", + "517111", + "517112", + "517410", + "481111", + "483111", + "485210", + "488510", + "484121", + "493110", + "423430", + "423690", + "423110", + "423830", + "423840", + "423510", + "424690", + "424990", + "424410", + "424480", + "423940", + "541611", + "541618", + "541330", + "541990", + "541214", + "561499" + ], + "example": "541511" }, - "last4": { - "description": "Last 4 digits of card number or bank account", - "example": "4242", + "phone_number": { "type": [ "string", "null" - ] - }, - "type": { - "description": "Payment method type: card or us_bank_account", - "enum": [ - "card", - "us_bank_account" ], - "example": "card", + "example": "+13055555555" + }, + "tax_id": { "type": [ "string", "null" - ] - } - }, - "required": [ - "type", - "brand", - "last4", - "exp_month", - "exp_year", - "bank_name", - "account_type", - "created_at" - ], - "type": "object" - }, - "PaymentRoute": { - "description": "Per-instance USD payout rail override. Maps a bank rail to a PSP (zenus | veem | infinitus) or to \"blocked\" to disable the rail. Absent rails fall back to default routing.", - "example": { - "ach": "zenus", - "international_swift": "zenus", - "rtp": "blocked", - "wire": "zenus" - }, - "properties": { - "ach": { - "enum": [ - "zenus", - "veem", - "infinitus_portage", - "blocked" - ], - "type": "string" - }, - "international_swift": { - "enum": [ - "zenus", - "veem", - "infinitus_portage", - "blocked" ], - "type": "string" + "maxLength": 32, + "example": "536804398" }, - "rtp": { - "enum": [ - "zenus", - "veem", - "infinitus_portage", - "blocked" + "date_of_birth": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "string" + }, + { + "type": "null" + } ], - "type": "string" + "example": "1998-01-01T00:00:00Z" }, - "wire": { - "enum": [ - "zenus", - "veem", - "infinitus_portage", - "blocked" - ], - "type": "string" - } - }, - "type": [ - "object", - "null" - ] - }, - "PayoutCompleteWebhookOut": { - "properties": { - "bank_account_id": { - "example": "ba_000000000000", - "maxLength": 15, - "minLength": 15, + "pix_safe_bank_code": { "type": [ "string", "null" - ] + ], + "pattern": "^\\d{4,8}$", + "example": "00416968" }, - "billing_fee_amount": { - "description": "Billing fee in cents (charged via invoice at the end of the month)", - "example": 50, + "pix_safe_branch_code": { "type": [ - "number", + "string", "null" - ] + ], + "pattern": "^\\d{4}(-\\d)?$", + "example": "0001" }, - "customer_id": { - "example": "re_000000000000", - "maxLength": 15, - "minLength": 15, + "pix_safe_cpf_cnpj": { "type": [ "string", "null" - ] - }, - "id": { - "example": "pa_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" + ], + "example": "12345678901" }, - "offramp_wallet_id": { - "example": "ow_000000000000", - "maxLength": 15, - "minLength": 15, + "ted_bank_code": { "type": [ "string", "null" - ] - }, - "partner_fee": { - "default": 0, - "description": "Payout partner fee amount in cents (can be negative for rebates)", - "example": -25000, - "minimum": 0, - "type": "integer" - }, - "sender_wallet_address": { - "description": "Payout wallet address", - "example": "0x123...890", - "type": "string" - }, - "status": { - "description": "Payout general status", - "enum": [ - "processing", - "failed", - "refunded", - "completed", - "on_hold" - ], - "example": "processing", - "type": "string" - }, - "tracking_complete": { - "properties": { - "completed_at": { - "description": "Complete completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "provider_transaction_id": { - "description": "Provider-side handle for the refund transaction (e.g. Circle transaction id)", - "example": "67c12eae-b7bc-31cc-a5ef-623dcea82346", - "type": [ - "string", - "null" - ] - }, - "refund_reason": { - "description": "Reason for refund when tokens are returned to sender", - "example": "fiat_payment_failed", - "type": [ - "string", - "null" - ] - }, - "status": { - "description": "Complete status", - "enum": [ - "tokens_refunded", - "paid" - ], - "example": "tokens_refunded", - "type": [ - "string", - "null" - ] - }, - "step": { - "description": "Complete step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "example": "on_hold", - "type": "string" - }, - "transaction_hash": { - "description": "Complete transaction hash", - "example": "0x123...890", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "step" ], - "type": "object" + "pattern": "^\\d{3,5}$", + "example": "033" }, - "tracking_documents": { - "properties": { - "completed_at": { - "description": "Documents completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "reviewed_by": { - "description": "Reviewer email/name", - "example": "compliance@example.com", - "type": [ - "string", - "null" - ] - }, - "status": { - "description": "Documents status", - "enum": [ - "waiting_documents", - "compliance_reviewing" - ], - "example": "waiting_documents", - "type": [ - "string", - "null" - ] - }, - "step": { - "description": "Documents step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "example": "processing", - "type": "string" - } - }, - "required": [ - "step" - ], + "ted_branch_code": { "type": [ - "object", + "string", "null" - ] - }, - "tracking_liquidity": { - "properties": { - "completed_at": { - "description": "Payout transaction completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "estimated_time_of_arrival": { - "description": "Estimated time of arrival", - "enum": [ - "5_min", - "5_30_min", - "30_min", - "2_hours", - "1_business_day", - "2_business_days", - "5_business_days" - ], - "example": "1_business_day", - "type": [ - "string", - "null" - ] - }, - "provider_status": { - "description": "Payment provider status", - "enum": [ - "deposited", - "converted", - "withdrawn" - ], - "example": "deposited", - "type": [ - "string", - "null" - ] - }, - "provider_transaction_id": { - "description": "Payment provider transaction id", - "example": "0x123...890", - "type": [ - "string", - "null" - ] - }, - "step": { - "description": "Payout liquidity step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "example": "processing", - "type": "string" - } - }, - "required": [ - "step" ], - "type": [ - "object", - "null" - ] + "pattern": "^\\d{4}(-\\d)?$", + "example": "0001" }, - "tracking_payment": { - "properties": { - "coelsa_id": { - "description": "COELSA transaction reference ID for ARS transfers (Argentine national banking system)", - "example": "1LMP68NKV46DRDYK2R7OEV", - "type": [ - "string", - "null" - ] - }, - "completed_at": { - "description": "Payment completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "end_to_end_id": { - "description": "BACEN Pix end-to-end transaction ID (govt Pix ID)", - "example": "E20018183202603311320vm6ALFpJpsS", - "type": [ - "string", - "null" - ] - }, - "estimated_time_of_arrival": { - "description": "Estimated time of arrival", - "enum": [ - "5_min", - "5_30_min", - "30_min", - "2_hours", - "1_business_day", - "2_business_days", - "5_business_days" - ], - "example": "5_min", - "type": [ - "string", - "null" - ] - }, - "provider_clearing_system": { - "description": "Clearing system that processed the payment (e.g. FED, CHIPS, ACH, SWIFT).", - "example": "FED", - "maxLength": 40, - "type": [ - "string", - "null" - ] - }, - "provider_error_reason": { - "description": "Provider error reason when payment fails (e.g. invalid_key, wrong_parameters)", - "example": "invalid_key", - "type": [ - "string", - "null" - ] - }, - "provider_imad": { - "description": "Fed Input Message Accountability Data (IMAD). Domestic Fedwire payments only; null on ACH and SWIFT.", - "example": "20260526MMQFMP2M008120", - "maxLength": 120, - "type": [ - "string", - "null" - ] - }, - "provider_integration": { - "description": "Machine-readable integration that executed the fiat leg. Unlike provider_name (a client-facing bank label), this uniquely identifies the integration \u2014 e.g. zenus vs checkbook, which share the \"JPMorgan Chase\" label.", - "enum": [ - "veem", - "zenus", - "checkbook", - "onemoney", - "bitso", - "starkbank", - "triplea", - "infinitus" - ], - "example": "zenus", - "type": [ - "string", - "null" - ] - }, - "provider_name": { - "description": "Payment provider name", - "enum": [ - "Nvio Pagos", - "Brex", - "Stark Bank", - "JPMorgan Chase", - "HSBC", - "Inter", - "JP Morgan Chase", - "Bitso", - "Citi", - "CFSB", - "Triple A Technologies", - "Portage Bank" - ], - "example": "HSBC", - "type": [ - "string", - "null" - ] - }, - "provider_reference": { - "description": "Provider (JPMorgan/Zenus) payment reference captured from the ACCOUNT.ACCOUNT booking webhook (Zenus contractSource.sourceRef). Present for some ACH/wire payouts; a bank-side reference, not the formal ACH network trace number.", - "example": "2084734238TC", - "maxLength": 120, - "type": [ - "string", - "null" - ] - }, - "provider_status": { - "description": "Payment provider status", - "enum": [ - "canceled", - "failed", - "returned", - "sent" - ], - "example": "canceled", - "type": [ - "string", - "null" - ] - }, - "provider_transaction_id": { - "description": "Payment provider transaction id", - "example": "0x123...890", - "type": [ - "string", - "null" - ] - }, - "provider_uetr": { - "description": "Unique end-to-end transaction reference (UETR). Populated once the wire is confirmed by the network; null while the payment is in flight or when the rail does not expose it (e.g. ACH).", - "example": "37d10eff-d450-4aba-a5d4-e3978f5a3343", - "maxLength": 120, - "type": [ - "string", - "null" - ] - }, - "recipient_account_number": { - "description": "Recipient account number", - "example": "1234567890", - "type": [ - "string", - "null" - ] - }, - "recipient_account_type": { - "description": "Recipient account type", - "example": "checking", - "type": [ - "string", - "null" - ] - }, - "recipient_bank_code": { - "description": "Recipient bank code", - "example": "00416968", - "type": [ - "string", - "null" - ] - }, - "recipient_branch_code": { - "description": "Recipient branch code", - "example": "0001", - "type": [ - "string", - "null" - ] - }, - "recipient_name": { - "description": "Recipient name", - "example": "John Doe", - "type": [ - "string", - "null" - ] - }, - "recipient_tax_id": { - "description": "Recipient tax id", - "example": "123.456.789-10", - "type": [ - "string", - "null" - ] + "ted_cpf_cnpj": { + "type": [ + "string", + "null" + ], + "example": "12345678901" + }, + "tron_wallet_hash": { + "type": [ + "string", + "null" + ], + "example": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t" + }, + "offramp_wallets": { + "type": [ + "array", + "null" + ], + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "ow_000000000000" + }, + "external_id": { + "type": [ + "string", + "null" + ], + "example": "your_external_id" + }, + "circle_wallet_id": { + "type": [ + "string", + "null" + ], + "example": "01234567-abcd-efgh-ijkl-012345678901" + }, + "network": { + "type": "string", + "enum": [ + "tron", + "solana", + "solana_devnet", + "arbitrum", + "base", + "ethereum", + "polygon", + "sepolia", + "arbitrum_sepolia", + "base_sepolia", + "polygon_amoy" + ], + "example": "tron" + }, + "address": { + "type": "string", + "example": "TALJN9zTTEL9TVBb4WuTt6wLvPqJZr3hvb" + } }, - "step": { - "description": "Payment step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "example": "on_hold", - "type": "string" - } + "required": [ + "id", + "network", + "address" + ] }, - "required": [ - "step" + "example": [ + { + "address": "TALJN9zTTEL9TVBb4WuTt6wLvPqJZr3hvb", + "id": "ow_000000000000", + "network": "tron", + "external_id": "your_external_id" + } + ] + }, + "status": { + "type": [ + "string", + "null" + ], + "enum": [ + "verifying", + "approved", + "rejected", + "deprecated" + ], + "example": "verifying" + }, + "recipient_relationship": { + "type": [ + "string", + "null" + ], + "enum": [ + "first_party", + "employee", + "independent_contractor", + "vendor_or_supplier", + "subsidiary_or_affiliate", + "merchant_or_partner", + "customer", + "landlord", + "family", + "other" + ], + "example": "vendor_or_supplier" + }, + "swift_payment_code": { + "type": [ + "string", + "null" + ], + "enum": [ + "ae_swift_str", + "ae_swift_tcs", + "ae_swift_ipc", + "ae_swift_ifs", + "ae_swift_sts", + "ae_swift_pms", + "ae_swift_its", + "ae_swift_gde", + "ae_swift_ots", + "ae_swift_tts", + "bh_swift_afa", + "bh_swift_afl", + "bh_swift_ats", + "bh_swift_cea", + "bh_swift_cel", + "bh_swift_chc", + "bh_swift_dla", + "bh_swift_dlf", + "bh_swift_dll", + "bh_swift_doe", + "bh_swift_dsa", + "bh_swift_dsf", + "bh_swift_dsl", + "bh_swift_fam", + "bh_swift_fda", + "bh_swift_fdl", + "bh_swift_fia", + "bh_swift_fil", + "bh_swift_fis", + "bh_swift_fsa", + "bh_swift_fsl", + "bh_swift_gde", + "bh_swift_gdi", + "bh_swift_gms", + "bh_swift_gos", + "bh_swift_gri", + "bh_swift_ifs", + "bh_swift_igd", + "bh_swift_iid", + "bh_swift_ins", + "bh_swift_iod", + "bh_swift_iol", + "bh_swift_ipc", + "bh_swift_ish", + "bh_swift_isl", + "bh_swift_iss", + "bh_swift_its", + "bh_swift_ldl", + "bh_swift_lds", + "bh_swift_lea", + "bh_swift_lel", + "bh_swift_lla", + "bh_swift_lll", + "bh_swift_ots", + "bh_swift_pip", + "bh_swift_pms", + "bh_swift_ppa", + "bh_swift_ppl", + "bh_swift_prr", + "bh_swift_prs", + "bh_swift_rda", + "bh_swift_rdl", + "bh_swift_rds", + "bh_swift_rea", + "bh_swift_rel", + "bh_swift_rfs", + "bh_swift_rls", + "bh_swift_sal", + "bh_swift_sco", + "bh_swift_sla", + "bh_swift_sll", + "bh_swift_str", + "bh_swift_sts", + "bh_swift_tcp", + "bh_swift_tcr", + "bh_swift_tcs", + "bh_swift_tts", + "ch_swift_ccdndr", + "ch_swift_cctfdr", + "ch_swift_cgoddr", + "ch_swift_cocadr", + "ch_swift_cstrdr", + "ch_swift_remtdr", + "cn_swift_ccdndr", + "cn_swift_cctfdr", + "cn_swift_cgoddr", + "cn_swift_cocadr", + "cn_swift_cstrdr", + "cn_swift_remtdr", + "hk_swift_charitabledonation", + "hk_swift_goods", + "hk_swift_personal", + "hk_swift_services", + "id_swift_2011", + "id_swift_2012", + "id_swift_2015", + "id_swift_2018", + "id_swift_2019", + "id_swift_2097", + "id_swift_2098", + "id_swift_2127", + "id_swift_2129", + "id_swift_2150", + "id_swift_2163", + "id_swift_2193", + "id_swift_2194", + "id_swift_2197", + "id_swift_2198", + "id_swift_2203", + "id_swift_2204", + "id_swift_2206", + "id_swift_2207", + "id_swift_2221", + "id_swift_2222", + "id_swift_2231", + "id_swift_2232", + "id_swift_2233", + "id_swift_2240", + "id_swift_2241", + "id_swift_2242", + "id_swift_2243", + "id_swift_2244", + "id_swift_2245", + "id_swift_2246", + "id_swift_2247", + "id_swift_2251", + "id_swift_2252", + "id_swift_2255", + "id_swift_2256", + "id_swift_2257", + "id_swift_2261", + "id_swift_2262", + "id_swift_2263", + "id_swift_2264", + "id_swift_2271", + "id_swift_2272", + "id_swift_2273", + "id_swift_2274", + "id_swift_2275", + "id_swift_2276", + "id_swift_2277", + "id_swift_2278", + "id_swift_2279", + "id_swift_2280", + "id_swift_2282", + "id_swift_2299", + "id_swift_2311", + "id_swift_2321", + "id_swift_2322", + "id_swift_2323", + "id_swift_2331", + "id_swift_2332", + "id_swift_2333", + "id_swift_2341", + "id_swift_2342", + "id_swift_2351", + "id_swift_2352", + "id_swift_2353", + "id_swift_2354", + "id_swift_2361", + "id_swift_2362", + "id_swift_2363", + "id_swift_2364", + "id_swift_2365", + "id_swift_2366", + "id_swift_2371", + "id_swift_2372", + "id_swift_2375", + "id_swift_2376", + "id_swift_2377", + "id_swift_2378", + "id_swift_2379", + "id_swift_2380", + "id_swift_2381", + "id_swift_2382", + "id_swift_2383", + "id_swift_2384", + "id_swift_2385", + "id_swift_2386", + "id_swift_2387", + "id_swift_2388", + "id_swift_2389", + "id_swift_2390", + "id_swift_2391", + "id_swift_2392", + "id_swift_2393", + "id_swift_2394", + "id_swift_2395", + "id_swift_2396", + "id_swift_2397", + "id_swift_2398", + "id_swift_2400", + "id_swift_2405", + "id_swift_2411", + "id_swift_2412", + "id_swift_2413", + "id_swift_2421", + "id_swift_2422", + "id_swift_2423", + "id_swift_2431", + "id_swift_2432", + "id_swift_2433", + "id_swift_2441", + "id_swift_2442", + "id_swift_2443", + "id_swift_2450", + "id_swift_2461", + "id_swift_2462", + "id_swift_2466", + "id_swift_2467", + "id_swift_2468", + "id_swift_2469", + "id_swift_2480", + "id_swift_2490", + "id_swift_2495", + "id_swift_2501", + "id_swift_2502", + "id_swift_2511", + "id_swift_2512", + "id_swift_2521", + "id_swift_2522", + "id_swift_2523", + "id_swift_2524", + "id_swift_2525", + "id_swift_2526", + "id_swift_2531", + "id_swift_2532", + "id_swift_2533", + "id_swift_2541", + "id_swift_2546", + "id_swift_2547", + "id_swift_2550", + "id_swift_2560", + "id_swift_2570", + "id_swift_2580", + "id_swift_2590", + "id_swift_2600", + "id_swift_2610", + "id_swift_2615", + "id_swift_2616", + "id_swift_2630", + "id_swift_2640", + "id_swift_2651", + "id_swift_2652", + "id_swift_2660", + "id_swift_2670", + "id_swift_2701", + "id_swift_2702", + "id_swift_2705", + "id_swift_2710", + "id_swift_2716", + "id_swift_2717", + "id_swift_2720", + "id_swift_2725", + "id_swift_2730", + "id_swift_2731", + "id_swift_2741", + "id_swift_2742", + "id_swift_2743", + "id_swift_2751", + "id_swift_2752", + "id_swift_2760", + "id_swift_2765", + "id_swift_2766", + "id_swift_2767", + "id_swift_2770", + "id_swift_2802", + "id_swift_2803", + "id_swift_2804", + "id_swift_2808", + "id_swift_2809", + "id_swift_2811", + "id_swift_2812", + "id_swift_2813", + "id_swift_2814", + "id_swift_2815", + "id_swift_2821", + "id_swift_2822", + "id_swift_2823", + "id_swift_2824", + "id_swift_2825", + "id_swift_2826", + "id_swift_2827", + "id_swift_2828", + "in_swift_p0001", + "in_swift_p0002", + "in_swift_p0003", + "in_swift_p0004", + "in_swift_p0005", + "in_swift_p0006", + "in_swift_p0007", + "in_swift_p0008", + "in_swift_p0009", + "in_swift_p0010", + "in_swift_p0011", + "in_swift_p0012", + "in_swift_p0013", + "in_swift_p0014", + "in_swift_p0015", + "in_swift_p0016", + "in_swift_p0017", + "in_swift_p0019", + "in_swift_p0020", + "in_swift_p0021", + "in_swift_p0022", + "in_swift_p0024", + "in_swift_p0025", + "in_swift_p0028", + "in_swift_p0029", + "in_swift_p0099", + "in_swift_p0101", + "in_swift_p0102", + "in_swift_p0103", + "in_swift_p0104", + "in_swift_p0105", + "in_swift_p0107", + "in_swift_p0108", + "in_swift_p0109", + "jp_swift_1001", + "jp_swift_1002", + "jp_swift_1003", + "jp_swift_1004", + "jp_swift_101", + "jp_swift_102", + "jp_swift_103", + "jp_swift_104", + "jp_swift_105", + "jp_swift_106", + "jp_swift_107", + "jp_swift_108", + "jp_swift_109", + "jp_swift_110", + "jp_swift_1101", + "jp_swift_1102", + "jp_swift_1103", + "jp_swift_1104", + "jp_swift_1105", + "jp_swift_1106", + "jp_swift_1107", + "jp_swift_1108", + "jp_swift_1109", + "jp_swift_111", + "jp_swift_1110", + "jp_swift_1111", + "jp_swift_1112", + "jp_swift_1201", + "jp_swift_1202", + "jp_swift_201", + "jp_swift_202", + "jp_swift_203", + "jp_swift_204", + "jp_swift_205", + "jp_swift_206", + "jp_swift_207", + "jp_swift_208", + "jp_swift_209", + "jp_swift_301", + "jp_swift_302", + "jp_swift_303", + "jp_swift_304", + "jp_swift_305", + "jp_swift_306", + "jp_swift_307", + "jp_swift_401", + "jp_swift_402", + "jp_swift_403", + "jp_swift_404", + "jp_swift_501", + "jp_swift_502", + "jp_swift_503", + "jp_swift_504", + "jp_swift_601", + "jp_swift_602", + "jp_swift_603", + "jp_swift_604", + "jp_swift_701", + "jp_swift_702", + "jp_swift_703", + "jp_swift_704", + "jp_swift_705", + "jp_swift_801", + "jp_swift_802", + "jp_swift_803", + "jp_swift_804", + "jp_swift_805", + "jp_swift_806", + "jp_swift_807", + "jp_swift_808", + "jp_swift_809", + "jp_swift_810", + "jp_swift_811", + "jp_swift_812", + "jp_swift_813", + "jp_swift_814", + "jp_swift_815", + "jp_swift_816", + "jp_swift_817", + "jp_swift_818", + "jp_swift_901", + "jp_swift_902", + "jp_swift_903", + "jp_swift_904", + "ke_swift_1001", + "ke_swift_1002", + "ke_swift_1101", + "ke_swift_1102", + "ke_swift_1201", + "ke_swift_1202", + "ke_swift_1206", + "ke_swift_1501", + "ke_swift_1518", + "ke_swift_1519", + "ke_swift_1527", + "ke_swift_1801", + "ke_swift_1802", + "ke_swift_1908", + "ke_swift_2101", + "ke_swift_2301", + "ke_swift_2501", + "ke_swift_2901", + "ke_swift_3001", + "ke_swift_3100", + "ke_swift_3101", + "ke_swift_3103", + "ke_swift_3200", + "ke_swift_3304", + "ke_swift_3509", + "ke_swift_3514", + "ke_swift_3801", + "ke_swift_4103", + "ke_swift_4301", + "ke_swift_4601", + "ke_swift_4702", + "ke_swift_512", + "ke_swift_6001", + "ke_swift_6002", + "ke_swift_6101", + "ke_swift_6102", + "ke_swift_6301", + "ke_swift_6401", + "ke_swift_6402", + "ke_swift_6501", + "ke_swift_6601", + "ke_swift_adtx", + "ke_swift_airb", + "ke_swift_artx", + "ke_swift_bech", + "ke_swift_bsd", + "ke_swift_bttx", + "ke_swift_busb", + "ke_swift_ccmc", + "ke_swift_cere", + "ke_swift_cfr", + "ke_swift_cgtx", + "ke_swift_chc", + "ke_swift_clot", + "ke_swift_comu", + "ke_swift_cons", + "ke_swift_cort", + "ke_swift_cotx", + "ke_swift_csdk", + "ke_swift_divd", + "ke_swift_edtx", + "ke_swift_educ", + "ke_swift_farm", + "ke_swift_foex", + "ke_swift_fuel", + "ke_swift_gokx", + "ke_swift_govt", + "ke_swift_hlfd", + "ke_swift_hlti", + "ke_swift_holi", + "ke_swift_ibld", + "ke_swift_inpc", + "ke_swift_insu", + "ke_swift_inte", + "ke_swift_intx", + "ke_swift_invs", + "ke_swift_istx", + "ke_swift_licf", + "ke_swift_lifi", + "ke_swift_loan", + "ke_swift_mach", + "ke_swift_mafc", + "ke_swift_mdcs", + "ke_swift_merc", + "ke_swift_paye", + "ke_swift_pena", + "ke_swift_pl39", + "ke_swift_pl40", + "ke_swift_pl41", + "ke_swift_pl42", + "ke_swift_pl43", + "ke_swift_pl44", + "ke_swift_pl45", + "ke_swift_pl46", + "ke_swift_pl47", + "ke_swift_pl48", + "ke_swift_pl49", + "ke_swift_pl50", + "ke_swift_pl51", + "ke_swift_pl52", + "ke_swift_pl53", + "ke_swift_ppti", + "ke_swift_prpy", + "ke_swift_psco", + "ke_swift_refu", + "ke_swift_relg", + "ke_swift_rent", + "ke_swift_ritx", + "ke_swift_rlwy", + "ke_swift_sala", + "ke_swift_savg", + "ke_swift_scho", + "ke_swift_sdtx", + "ke_swift_ship", + "ke_swift_swlf", + "ke_swift_taxr", + "ke_swift_taxs", + "ke_swift_tbil", + "ke_swift_tith", + "ke_swift_totx", + "ke_swift_trac", + "ke_swift_ubil", + "ke_swift_vatx", + "ke_swift_vipn", + "ke_swift_whld", + "ph_swift_1010101000", + "ph_swift_1010102001", + "ph_swift_1010102002", + "ph_swift_1010103001", + "ph_swift_1010103002", + "ph_swift_1010201000", + "ph_swift_1010202001", + "ph_swift_1010202002", + "ph_swift_1010203001", + "ph_swift_1010203002", + "ph_swift_1010300000", + "ph_swift_1110100001", + "ph_swift_1110200001", + "ph_swift_1110200002", + "ph_swift_1110200003", + "ph_swift_1110200004", + "ph_swift_1110300001", + "ph_swift_1110300002", + "ph_swift_1110300003", + "ph_swift_1110300004", + "ph_swift_1110400001", + "ph_swift_1110400002", + "ph_swift_1110400003", + "ph_swift_1110400004", + "ph_swift_1110400005", + "ph_swift_1110400006", + "ph_swift_1110500001", + "ph_swift_1110500002", + "ph_swift_1110500003", + "ph_swift_1110500004", + "ph_swift_1110500005", + "ph_swift_1110600001", + "ph_swift_1110700001", + "ph_swift_1310000001", + "ph_swift_1310000002", + "ph_swift_1310000003", + "ph_swift_1410100001", + "ph_swift_1410100002", + "ph_swift_1410200001", + "ph_swift_1410200002", + "ph_swift_1410200003", + "ph_swift_1410200004", + "ph_swift_1410300000", + "ph_swift_1410400000", + "ph_swift_1410500000", + "ph_swift_1410600000", + "ph_swift_1510000001", + "ph_swift_1510000002", + "ph_swift_1510000003", + "ph_swift_1510000004", + "ph_swift_1510000005", + "ph_swift_1510000006", + "ph_swift_1510000007", + "ph_swift_1510000008", + "ph_swift_1510000009", + "ph_swift_1510000010", + "ph_swift_1510000011", + "ph_swift_1510000012", + "ph_swift_1510000013", + "ph_swift_1510000014", + "ph_swift_1510000015", + "ph_swift_1510000016", + "ph_swift_1510000017", + "ph_swift_1510000018", + "ph_swift_1510000019", + "ph_swift_1510000020", + "ph_swift_1510000021", + "ph_swift_1510000023", + "ph_swift_1510000024", + "ph_swift_1510000025", + "ph_swift_210000001", + "ph_swift_210000002", + "ph_swift_210000003", + "ph_swift_210000004", + "ph_swift_210000005", + "ph_swift_210000006", + "ph_swift_210000007", + "ph_swift_210000008", + "ph_swift_210000009", + "ph_swift_210000010", + "ph_swift_510100001", + "ph_swift_510200001", + "ph_swift_510200002", + "ph_swift_510301001", + "ph_swift_510301002", + "ph_swift_510301003", + "ph_swift_510302001", + "ph_swift_510302002", + "ph_swift_510302003", + "ph_swift_510303000", + "ph_swift_510401000", + "ph_swift_510402001", + "ph_swift_510402002", + "ph_swift_510402003", + "ph_swift_510402004", + "ph_swift_510402005", + "ph_swift_510402006", + "ph_swift_510402007", + "ph_swift_510500001", + "ph_swift_510500002", + "ph_swift_510600001", + "ph_swift_510600002", + "ph_swift_510600003", + "ph_swift_510600004", + "ph_swift_510700000", + "ph_swift_510800001", + "ph_swift_510800002", + "ph_swift_510900000", + "ph_swift_511000001", + "ph_swift_511000002", + "ph_swift_511100001", + "ph_swift_511100002", + "ph_swift_511100003", + "ph_swift_511200000", + "ph_swift_511300001", + "ph_swift_511300002", + "ph_swift_511300003", + "ph_swift_511300004", + "ph_swift_511300005", + "ph_swift_511300006", + "ph_swift_511300007", + "ph_swift_511300008", + "ph_swift_511400001", + "ph_swift_511400002", + "ph_swift_511400003", + "ph_swift_511400004", + "ph_swift_511400005", + "ph_swift_511500001", + "ph_swift_511500002", + "ph_swift_511500003", + "ph_swift_511500004", + "ph_swift_511600001", + "ph_swift_511600002", + "ph_swift_511600003", + "ph_swift_511700001", + "ph_swift_511700002", + "ph_swift_511700003", + "ph_swift_610000001", + "ph_swift_610000002", + "ph_swift_610000003", + "ph_swift_610000004", + "ph_swift_610000005", + "ph_swift_610000006", + "ph_swift_610000007", + "ph_swift_710100001", + "ph_swift_710100002", + "ph_swift_710100003", + "ph_swift_710100004", + "ph_swift_710100006", + "ph_swift_710100007", + "ph_swift_710100008", + "ph_swift_710100009", + "ph_swift_710200001", + "ph_swift_710200002", + "ph_swift_710200003", + "ph_swift_710200004", + "ph_swift_710200009", + "ph_swift_710300001", + "ph_swift_710300002", + "ph_swift_710300003", + "ph_swift_710300004", + "ph_swift_710300009", + "ph_swift_710400001", + "ph_swift_710400002", + "ph_swift_810101001", + "ph_swift_810101002", + "ph_swift_810101003", + "ph_swift_810101004", + "ph_swift_810101007", + "ph_swift_810101008", + "ph_swift_810101011", + "ph_swift_810102001", + "ph_swift_810102002", + "ph_swift_810102003", + "ph_swift_810102004", + "ph_swift_810102005", + "ph_swift_810102006", + "ph_swift_810102007", + "ph_swift_810102008", + "ph_swift_810102009", + "ph_swift_810201001", + "ph_swift_810201002", + "ph_swift_810201003", + "ph_swift_810201004", + "ph_swift_810202001", + "ph_swift_810202002", + "ph_swift_810202003", + "ph_swift_810202005", + "ph_swift_810202006", + "ph_swift_910100001", + "ph_swift_910100002", + "ph_swift_910100003", + "ph_swift_910100004", + "ph_swift_910100005", + "ph_swift_910100006", + "ph_swift_910100007", + "ph_swift_910100009", + "ph_swift_910100010", + "ph_swift_910100011", + "ph_swift_910200001", + "ph_swift_910200002", + "ph_swift_910200003", + "ph_swift_910200004", + "ph_swift_910200005", + "ph_swift_910200006", + "ph_swift_910200007", + "ph_swift_910200009", + "ph_swift_910200010", + "ph_swift_910200011", + "pk_swift_9009", + "pk_swift_9010", + "pk_swift_9011", + "pk_swift_9012", + "pk_swift_9013", + "pk_swift_9014", + "pk_swift_9015", + "pk_swift_9016", + "pk_swift_9017", + "pk_swift_9018", + "pk_swift_9019", + "pk_swift_9020", + "pk_swift_9021", + "pk_swift_9022", + "pk_swift_9023", + "pk_swift_9024", + "pk_swift_9025", + "pk_swift_9026", + "pk_swift_9027", + "pk_swift_9028", + "pk_swift_9029", + "pk_swift_9030", + "pk_swift_9031", + "pk_swift_9032", + "pk_swift_9033", + "pk_swift_9041", + "pk_swift_9051", + "pk_swift_9052", + "pk_swift_9061", + "pk_swift_9071", + "pk_swift_9072", + "pk_swift_9073", + "pk_swift_9081", + "pk_swift_9082", + "pk_swift_9083", + "pk_swift_9084", + "pk_swift_9085", + "pk_swift_9086", + "pk_swift_9091", + "pk_swift_9092", + "pk_swift_9101", + "pk_swift_9102", + "pk_swift_9111", + "pk_swift_9121", + "pk_swift_9122", + "pk_swift_9124", + "pk_swift_9141", + "pk_swift_9146", + "pk_swift_9151", + "pk_swift_9152", + "pk_swift_9161", + "pk_swift_9171", + "pk_swift_9172", + "pk_swift_9173", + "pk_swift_9174", + "pk_swift_9181", + "pk_swift_9182", + "pk_swift_9183", + "pk_swift_9184", + "pk_swift_9185", + "pk_swift_9186", + "pk_swift_9191", + "pk_swift_9192", + "pk_swift_9193", + "pk_swift_9201", + "pk_swift_9202", + "pk_swift_9211", + "pk_swift_9212", + "pk_swift_9221", + "pk_swift_9222", + "pk_swift_9230", + "pk_swift_9231", + "pk_swift_9232", + "pk_swift_9233", + "pk_swift_9234", + "pk_swift_9235", + "pk_swift_9236", + "pk_swift_9237", + "pk_swift_9238", + "pk_swift_9239", + "pk_swift_9241", + "pk_swift_9242", + "pk_swift_9243", + "pk_swift_9244", + "pk_swift_9247", + "pk_swift_9248", + "pk_swift_9249", + "pk_swift_9250", + "pk_swift_9251", + "pk_swift_9261", + "pk_swift_9262", + "pk_swift_9271", + "pk_swift_9272", + "pk_swift_9273", + "pk_swift_9281", + "pk_swift_9291", + "pk_swift_9301", + "pk_swift_9302", + "pk_swift_9303", + "pk_swift_9311", + "pk_swift_9312", + "pk_swift_9322", + "pk_swift_9323", + "pk_swift_9324", + "pk_swift_9331", + "pk_swift_9332", + "pk_swift_9333", + "pk_swift_9341", + "pk_swift_9351", + "pk_swift_9361", + "pk_swift_9381", + "pk_swift_9391", + "pk_swift_9401", + "pk_swift_9412", + "pk_swift_9414", + "pk_swift_9421", + "pk_swift_9422", + "pk_swift_9423", + "pk_swift_9426", + "pk_swift_9431", + "pk_swift_9432", + "pk_swift_9433", + "pk_swift_9434", + "pk_swift_9435", + "pk_swift_9441", + "pk_swift_9442", + "pk_swift_9443", + "pk_swift_9444", + "pk_swift_9445", + "pk_swift_9448", + "pk_swift_9451", + "pk_swift_9452", + "pk_swift_9453", + "pk_swift_9454", + "pk_swift_9455", + "pk_swift_9456", + "pk_swift_9457", + "pk_swift_9458", + "pk_swift_9459", + "pk_swift_9461", + "pk_swift_9462", + "pk_swift_9463", + "pk_swift_9468", + "pk_swift_9469", + "pk_swift_9470", + "pk_swift_9471", + "pk_swift_9472", + "pk_swift_9473", + "pk_swift_9474", + "pk_swift_9475", + "pk_swift_9476", + "pk_swift_9477", + "pk_swift_9478", + "pk_swift_9479", + "pk_swift_9481", + "pk_swift_9482", + "pk_swift_9483", + "pk_swift_9484", + "pk_swift_9491", + "pk_swift_9492", + "pk_swift_9493", + "pk_swift_9494", + "pk_swift_9501", + "pk_swift_9502", + "pk_swift_9503", + "pk_swift_9521", + "pk_swift_9522", + "pk_swift_9523", + "pk_swift_9524", + "pk_swift_9525", + "pk_swift_9526", + "pk_swift_9527", + "pk_swift_9528", + "pk_swift_9529", + "pk_swift_9530", + "pk_swift_9531", + "pk_swift_9532", + "pk_swift_9533", + "pk_swift_9534", + "pk_swift_9535", + "pk_swift_9536", + "pk_swift_9537", + "pk_swift_9538", + "pk_swift_9539", + "pk_swift_9541", + "pk_swift_9542", + "pk_swift_9543", + "pk_swift_9544", + "pk_swift_9545", + "pk_swift_9546", + "pk_swift_9547", + "pk_swift_9548", + "pk_swift_9549", + "pk_swift_9551", + "pk_swift_9552", + "pk_swift_9553", + "pk_swift_9554", + "pk_swift_9555", + "pk_swift_9556", + "pk_swift_9561", + "pk_swift_9562", + "pk_swift_9563", + "pk_swift_9564", + "pk_swift_9565", + "pk_swift_9566", + "pk_swift_9572", + "pk_swift_9573", + "pk_swift_9574", + "pk_swift_9582", + "pk_swift_9583", + "pk_swift_9584", + "pk_swift_9592", + "pk_swift_9593", + "pk_swift_9594", + "pk_swift_9595", + "pk_swift_9596", + "pk_swift_9597", + "pk_swift_9602", + "pk_swift_9605", + "pk_swift_9606", + "pk_swift_9607", + "pk_swift_9608", + "pk_swift_9609", + "pk_swift_9612", + "pk_swift_9613", + "pk_swift_9614", + "pk_swift_9622", + "pk_swift_9623", + "pk_swift_9624", + "pk_swift_9625", + "pk_swift_9637", + "pk_swift_9638", + "pk_swift_9641", + "pk_swift_9642", + "pk_swift_9643", + "pk_swift_9644", + "pk_swift_9645", + "pk_swift_9646", + "pk_swift_9647", + "pk_swift_9648", + "pk_swift_9649", + "pk_swift_9650", + "pk_swift_9651", + "pk_swift_9652", + "pk_swift_9653", + "pk_swift_9654", + "pk_swift_9668", + "pk_swift_9669", + "pk_swift_9673", + "pk_swift_9674", + "pk_swift_9675", + "pk_swift_9676", + "pk_swift_9677", + "pk_swift_9678", + "pk_swift_9681", + "pk_swift_9682", + "pk_swift_9693", + "pk_swift_9694", + "pk_swift_9695", + "pk_swift_9697", + "pk_swift_9698", + "pk_swift_9699", + "pk_swift_9703", + "pk_swift_9707", + "pk_swift_9708", + "za_swift_105", + "za_swift_220", + "za_swift_231", + "za_swift_242", + "za_swift_250", + "za_swift_251", + "za_swift_265", + "za_swift_266", + "za_swift_275", + "za_swift_276", + "za_swift_280", + "za_swift_285", + "za_swift_287", + "za_swift_288", + "za_swift_289", + "za_swift_290", + "za_swift_291", + "za_swift_296", + "za_swift_297", + "za_swift_308", + "za_swift_401", + "za_swift_10101", + "za_swift_10301", + "za_swift_27201" + ], + "example": "bh_swift_afl" + }, + "created_at": { + "type": [ + "string", + "null" + ], + "format": "date-time", + "example": "2021-01-01T00:00:00Z" + } + }, + "required": [ + "id", + "type", + "name" + ] + }, + "CreateBankAccountIn": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "wire", + "ach", + "pix", + "pix_safe", + "ted", + "spei_bitso", + "transfers_bitso", + "ach_cop_bitso", + "international_swift", + "rtp", + "sepa" + ], + "example": "wire" + }, + "name": { + "type": "string", + "example": "Bank Account Name" + }, + "status": { + "type": [ + "string", + "null" + ], + "enum": [ + "verifying", + "approved", + "rejected", + "deprecated" + ], + "example": "verifying" + }, + "recipient_relationship": { + "type": [ + "string", + "null" + ], + "enum": [ + "first_party", + "employee", + "independent_contractor", + "vendor_or_supplier", + "subsidiary_or_affiliate", + "merchant_or_partner", + "customer", + "landlord", + "family", + "other" + ], + "example": "vendor_or_supplier" + }, + "swift_payment_code": { + "type": [ + "string", + "null" + ], + "enum": [ + "ae_swift_str", + "ae_swift_tcs", + "ae_swift_ipc", + "ae_swift_ifs", + "ae_swift_sts", + "ae_swift_pms", + "ae_swift_its", + "ae_swift_gde", + "ae_swift_ots", + "ae_swift_tts", + "bh_swift_afa", + "bh_swift_afl", + "bh_swift_ats", + "bh_swift_cea", + "bh_swift_cel", + "bh_swift_chc", + "bh_swift_dla", + "bh_swift_dlf", + "bh_swift_dll", + "bh_swift_doe", + "bh_swift_dsa", + "bh_swift_dsf", + "bh_swift_dsl", + "bh_swift_fam", + "bh_swift_fda", + "bh_swift_fdl", + "bh_swift_fia", + "bh_swift_fil", + "bh_swift_fis", + "bh_swift_fsa", + "bh_swift_fsl", + "bh_swift_gde", + "bh_swift_gdi", + "bh_swift_gms", + "bh_swift_gos", + "bh_swift_gri", + "bh_swift_ifs", + "bh_swift_igd", + "bh_swift_iid", + "bh_swift_ins", + "bh_swift_iod", + "bh_swift_iol", + "bh_swift_ipc", + "bh_swift_ish", + "bh_swift_isl", + "bh_swift_iss", + "bh_swift_its", + "bh_swift_ldl", + "bh_swift_lds", + "bh_swift_lea", + "bh_swift_lel", + "bh_swift_lla", + "bh_swift_lll", + "bh_swift_ots", + "bh_swift_pip", + "bh_swift_pms", + "bh_swift_ppa", + "bh_swift_ppl", + "bh_swift_prr", + "bh_swift_prs", + "bh_swift_rda", + "bh_swift_rdl", + "bh_swift_rds", + "bh_swift_rea", + "bh_swift_rel", + "bh_swift_rfs", + "bh_swift_rls", + "bh_swift_sal", + "bh_swift_sco", + "bh_swift_sla", + "bh_swift_sll", + "bh_swift_str", + "bh_swift_sts", + "bh_swift_tcp", + "bh_swift_tcr", + "bh_swift_tcs", + "bh_swift_tts", + "ch_swift_ccdndr", + "ch_swift_cctfdr", + "ch_swift_cgoddr", + "ch_swift_cocadr", + "ch_swift_cstrdr", + "ch_swift_remtdr", + "cn_swift_ccdndr", + "cn_swift_cctfdr", + "cn_swift_cgoddr", + "cn_swift_cocadr", + "cn_swift_cstrdr", + "cn_swift_remtdr", + "hk_swift_charitabledonation", + "hk_swift_goods", + "hk_swift_personal", + "hk_swift_services", + "id_swift_2011", + "id_swift_2012", + "id_swift_2015", + "id_swift_2018", + "id_swift_2019", + "id_swift_2097", + "id_swift_2098", + "id_swift_2127", + "id_swift_2129", + "id_swift_2150", + "id_swift_2163", + "id_swift_2193", + "id_swift_2194", + "id_swift_2197", + "id_swift_2198", + "id_swift_2203", + "id_swift_2204", + "id_swift_2206", + "id_swift_2207", + "id_swift_2221", + "id_swift_2222", + "id_swift_2231", + "id_swift_2232", + "id_swift_2233", + "id_swift_2240", + "id_swift_2241", + "id_swift_2242", + "id_swift_2243", + "id_swift_2244", + "id_swift_2245", + "id_swift_2246", + "id_swift_2247", + "id_swift_2251", + "id_swift_2252", + "id_swift_2255", + "id_swift_2256", + "id_swift_2257", + "id_swift_2261", + "id_swift_2262", + "id_swift_2263", + "id_swift_2264", + "id_swift_2271", + "id_swift_2272", + "id_swift_2273", + "id_swift_2274", + "id_swift_2275", + "id_swift_2276", + "id_swift_2277", + "id_swift_2278", + "id_swift_2279", + "id_swift_2280", + "id_swift_2282", + "id_swift_2299", + "id_swift_2311", + "id_swift_2321", + "id_swift_2322", + "id_swift_2323", + "id_swift_2331", + "id_swift_2332", + "id_swift_2333", + "id_swift_2341", + "id_swift_2342", + "id_swift_2351", + "id_swift_2352", + "id_swift_2353", + "id_swift_2354", + "id_swift_2361", + "id_swift_2362", + "id_swift_2363", + "id_swift_2364", + "id_swift_2365", + "id_swift_2366", + "id_swift_2371", + "id_swift_2372", + "id_swift_2375", + "id_swift_2376", + "id_swift_2377", + "id_swift_2378", + "id_swift_2379", + "id_swift_2380", + "id_swift_2381", + "id_swift_2382", + "id_swift_2383", + "id_swift_2384", + "id_swift_2385", + "id_swift_2386", + "id_swift_2387", + "id_swift_2388", + "id_swift_2389", + "id_swift_2390", + "id_swift_2391", + "id_swift_2392", + "id_swift_2393", + "id_swift_2394", + "id_swift_2395", + "id_swift_2396", + "id_swift_2397", + "id_swift_2398", + "id_swift_2400", + "id_swift_2405", + "id_swift_2411", + "id_swift_2412", + "id_swift_2413", + "id_swift_2421", + "id_swift_2422", + "id_swift_2423", + "id_swift_2431", + "id_swift_2432", + "id_swift_2433", + "id_swift_2441", + "id_swift_2442", + "id_swift_2443", + "id_swift_2450", + "id_swift_2461", + "id_swift_2462", + "id_swift_2466", + "id_swift_2467", + "id_swift_2468", + "id_swift_2469", + "id_swift_2480", + "id_swift_2490", + "id_swift_2495", + "id_swift_2501", + "id_swift_2502", + "id_swift_2511", + "id_swift_2512", + "id_swift_2521", + "id_swift_2522", + "id_swift_2523", + "id_swift_2524", + "id_swift_2525", + "id_swift_2526", + "id_swift_2531", + "id_swift_2532", + "id_swift_2533", + "id_swift_2541", + "id_swift_2546", + "id_swift_2547", + "id_swift_2550", + "id_swift_2560", + "id_swift_2570", + "id_swift_2580", + "id_swift_2590", + "id_swift_2600", + "id_swift_2610", + "id_swift_2615", + "id_swift_2616", + "id_swift_2630", + "id_swift_2640", + "id_swift_2651", + "id_swift_2652", + "id_swift_2660", + "id_swift_2670", + "id_swift_2701", + "id_swift_2702", + "id_swift_2705", + "id_swift_2710", + "id_swift_2716", + "id_swift_2717", + "id_swift_2720", + "id_swift_2725", + "id_swift_2730", + "id_swift_2731", + "id_swift_2741", + "id_swift_2742", + "id_swift_2743", + "id_swift_2751", + "id_swift_2752", + "id_swift_2760", + "id_swift_2765", + "id_swift_2766", + "id_swift_2767", + "id_swift_2770", + "id_swift_2802", + "id_swift_2803", + "id_swift_2804", + "id_swift_2808", + "id_swift_2809", + "id_swift_2811", + "id_swift_2812", + "id_swift_2813", + "id_swift_2814", + "id_swift_2815", + "id_swift_2821", + "id_swift_2822", + "id_swift_2823", + "id_swift_2824", + "id_swift_2825", + "id_swift_2826", + "id_swift_2827", + "id_swift_2828", + "in_swift_p0001", + "in_swift_p0002", + "in_swift_p0003", + "in_swift_p0004", + "in_swift_p0005", + "in_swift_p0006", + "in_swift_p0007", + "in_swift_p0008", + "in_swift_p0009", + "in_swift_p0010", + "in_swift_p0011", + "in_swift_p0012", + "in_swift_p0013", + "in_swift_p0014", + "in_swift_p0015", + "in_swift_p0016", + "in_swift_p0017", + "in_swift_p0019", + "in_swift_p0020", + "in_swift_p0021", + "in_swift_p0022", + "in_swift_p0024", + "in_swift_p0025", + "in_swift_p0028", + "in_swift_p0029", + "in_swift_p0099", + "in_swift_p0101", + "in_swift_p0102", + "in_swift_p0103", + "in_swift_p0104", + "in_swift_p0105", + "in_swift_p0107", + "in_swift_p0108", + "in_swift_p0109", + "jp_swift_1001", + "jp_swift_1002", + "jp_swift_1003", + "jp_swift_1004", + "jp_swift_101", + "jp_swift_102", + "jp_swift_103", + "jp_swift_104", + "jp_swift_105", + "jp_swift_106", + "jp_swift_107", + "jp_swift_108", + "jp_swift_109", + "jp_swift_110", + "jp_swift_1101", + "jp_swift_1102", + "jp_swift_1103", + "jp_swift_1104", + "jp_swift_1105", + "jp_swift_1106", + "jp_swift_1107", + "jp_swift_1108", + "jp_swift_1109", + "jp_swift_111", + "jp_swift_1110", + "jp_swift_1111", + "jp_swift_1112", + "jp_swift_1201", + "jp_swift_1202", + "jp_swift_201", + "jp_swift_202", + "jp_swift_203", + "jp_swift_204", + "jp_swift_205", + "jp_swift_206", + "jp_swift_207", + "jp_swift_208", + "jp_swift_209", + "jp_swift_301", + "jp_swift_302", + "jp_swift_303", + "jp_swift_304", + "jp_swift_305", + "jp_swift_306", + "jp_swift_307", + "jp_swift_401", + "jp_swift_402", + "jp_swift_403", + "jp_swift_404", + "jp_swift_501", + "jp_swift_502", + "jp_swift_503", + "jp_swift_504", + "jp_swift_601", + "jp_swift_602", + "jp_swift_603", + "jp_swift_604", + "jp_swift_701", + "jp_swift_702", + "jp_swift_703", + "jp_swift_704", + "jp_swift_705", + "jp_swift_801", + "jp_swift_802", + "jp_swift_803", + "jp_swift_804", + "jp_swift_805", + "jp_swift_806", + "jp_swift_807", + "jp_swift_808", + "jp_swift_809", + "jp_swift_810", + "jp_swift_811", + "jp_swift_812", + "jp_swift_813", + "jp_swift_814", + "jp_swift_815", + "jp_swift_816", + "jp_swift_817", + "jp_swift_818", + "jp_swift_901", + "jp_swift_902", + "jp_swift_903", + "jp_swift_904", + "ke_swift_1001", + "ke_swift_1002", + "ke_swift_1101", + "ke_swift_1102", + "ke_swift_1201", + "ke_swift_1202", + "ke_swift_1206", + "ke_swift_1501", + "ke_swift_1518", + "ke_swift_1519", + "ke_swift_1527", + "ke_swift_1801", + "ke_swift_1802", + "ke_swift_1908", + "ke_swift_2101", + "ke_swift_2301", + "ke_swift_2501", + "ke_swift_2901", + "ke_swift_3001", + "ke_swift_3100", + "ke_swift_3101", + "ke_swift_3103", + "ke_swift_3200", + "ke_swift_3304", + "ke_swift_3509", + "ke_swift_3514", + "ke_swift_3801", + "ke_swift_4103", + "ke_swift_4301", + "ke_swift_4601", + "ke_swift_4702", + "ke_swift_512", + "ke_swift_6001", + "ke_swift_6002", + "ke_swift_6101", + "ke_swift_6102", + "ke_swift_6301", + "ke_swift_6401", + "ke_swift_6402", + "ke_swift_6501", + "ke_swift_6601", + "ke_swift_adtx", + "ke_swift_airb", + "ke_swift_artx", + "ke_swift_bech", + "ke_swift_bsd", + "ke_swift_bttx", + "ke_swift_busb", + "ke_swift_ccmc", + "ke_swift_cere", + "ke_swift_cfr", + "ke_swift_cgtx", + "ke_swift_chc", + "ke_swift_clot", + "ke_swift_comu", + "ke_swift_cons", + "ke_swift_cort", + "ke_swift_cotx", + "ke_swift_csdk", + "ke_swift_divd", + "ke_swift_edtx", + "ke_swift_educ", + "ke_swift_farm", + "ke_swift_foex", + "ke_swift_fuel", + "ke_swift_gokx", + "ke_swift_govt", + "ke_swift_hlfd", + "ke_swift_hlti", + "ke_swift_holi", + "ke_swift_ibld", + "ke_swift_inpc", + "ke_swift_insu", + "ke_swift_inte", + "ke_swift_intx", + "ke_swift_invs", + "ke_swift_istx", + "ke_swift_licf", + "ke_swift_lifi", + "ke_swift_loan", + "ke_swift_mach", + "ke_swift_mafc", + "ke_swift_mdcs", + "ke_swift_merc", + "ke_swift_paye", + "ke_swift_pena", + "ke_swift_pl39", + "ke_swift_pl40", + "ke_swift_pl41", + "ke_swift_pl42", + "ke_swift_pl43", + "ke_swift_pl44", + "ke_swift_pl45", + "ke_swift_pl46", + "ke_swift_pl47", + "ke_swift_pl48", + "ke_swift_pl49", + "ke_swift_pl50", + "ke_swift_pl51", + "ke_swift_pl52", + "ke_swift_pl53", + "ke_swift_ppti", + "ke_swift_prpy", + "ke_swift_psco", + "ke_swift_refu", + "ke_swift_relg", + "ke_swift_rent", + "ke_swift_ritx", + "ke_swift_rlwy", + "ke_swift_sala", + "ke_swift_savg", + "ke_swift_scho", + "ke_swift_sdtx", + "ke_swift_ship", + "ke_swift_swlf", + "ke_swift_taxr", + "ke_swift_taxs", + "ke_swift_tbil", + "ke_swift_tith", + "ke_swift_totx", + "ke_swift_trac", + "ke_swift_ubil", + "ke_swift_vatx", + "ke_swift_vipn", + "ke_swift_whld", + "ph_swift_1010101000", + "ph_swift_1010102001", + "ph_swift_1010102002", + "ph_swift_1010103001", + "ph_swift_1010103002", + "ph_swift_1010201000", + "ph_swift_1010202001", + "ph_swift_1010202002", + "ph_swift_1010203001", + "ph_swift_1010203002", + "ph_swift_1010300000", + "ph_swift_1110100001", + "ph_swift_1110200001", + "ph_swift_1110200002", + "ph_swift_1110200003", + "ph_swift_1110200004", + "ph_swift_1110300001", + "ph_swift_1110300002", + "ph_swift_1110300003", + "ph_swift_1110300004", + "ph_swift_1110400001", + "ph_swift_1110400002", + "ph_swift_1110400003", + "ph_swift_1110400004", + "ph_swift_1110400005", + "ph_swift_1110400006", + "ph_swift_1110500001", + "ph_swift_1110500002", + "ph_swift_1110500003", + "ph_swift_1110500004", + "ph_swift_1110500005", + "ph_swift_1110600001", + "ph_swift_1110700001", + "ph_swift_1310000001", + "ph_swift_1310000002", + "ph_swift_1310000003", + "ph_swift_1410100001", + "ph_swift_1410100002", + "ph_swift_1410200001", + "ph_swift_1410200002", + "ph_swift_1410200003", + "ph_swift_1410200004", + "ph_swift_1410300000", + "ph_swift_1410400000", + "ph_swift_1410500000", + "ph_swift_1410600000", + "ph_swift_1510000001", + "ph_swift_1510000002", + "ph_swift_1510000003", + "ph_swift_1510000004", + "ph_swift_1510000005", + "ph_swift_1510000006", + "ph_swift_1510000007", + "ph_swift_1510000008", + "ph_swift_1510000009", + "ph_swift_1510000010", + "ph_swift_1510000011", + "ph_swift_1510000012", + "ph_swift_1510000013", + "ph_swift_1510000014", + "ph_swift_1510000015", + "ph_swift_1510000016", + "ph_swift_1510000017", + "ph_swift_1510000018", + "ph_swift_1510000019", + "ph_swift_1510000020", + "ph_swift_1510000021", + "ph_swift_1510000023", + "ph_swift_1510000024", + "ph_swift_1510000025", + "ph_swift_210000001", + "ph_swift_210000002", + "ph_swift_210000003", + "ph_swift_210000004", + "ph_swift_210000005", + "ph_swift_210000006", + "ph_swift_210000007", + "ph_swift_210000008", + "ph_swift_210000009", + "ph_swift_210000010", + "ph_swift_510100001", + "ph_swift_510200001", + "ph_swift_510200002", + "ph_swift_510301001", + "ph_swift_510301002", + "ph_swift_510301003", + "ph_swift_510302001", + "ph_swift_510302002", + "ph_swift_510302003", + "ph_swift_510303000", + "ph_swift_510401000", + "ph_swift_510402001", + "ph_swift_510402002", + "ph_swift_510402003", + "ph_swift_510402004", + "ph_swift_510402005", + "ph_swift_510402006", + "ph_swift_510402007", + "ph_swift_510500001", + "ph_swift_510500002", + "ph_swift_510600001", + "ph_swift_510600002", + "ph_swift_510600003", + "ph_swift_510600004", + "ph_swift_510700000", + "ph_swift_510800001", + "ph_swift_510800002", + "ph_swift_510900000", + "ph_swift_511000001", + "ph_swift_511000002", + "ph_swift_511100001", + "ph_swift_511100002", + "ph_swift_511100003", + "ph_swift_511200000", + "ph_swift_511300001", + "ph_swift_511300002", + "ph_swift_511300003", + "ph_swift_511300004", + "ph_swift_511300005", + "ph_swift_511300006", + "ph_swift_511300007", + "ph_swift_511300008", + "ph_swift_511400001", + "ph_swift_511400002", + "ph_swift_511400003", + "ph_swift_511400004", + "ph_swift_511400005", + "ph_swift_511500001", + "ph_swift_511500002", + "ph_swift_511500003", + "ph_swift_511500004", + "ph_swift_511600001", + "ph_swift_511600002", + "ph_swift_511600003", + "ph_swift_511700001", + "ph_swift_511700002", + "ph_swift_511700003", + "ph_swift_610000001", + "ph_swift_610000002", + "ph_swift_610000003", + "ph_swift_610000004", + "ph_swift_610000005", + "ph_swift_610000006", + "ph_swift_610000007", + "ph_swift_710100001", + "ph_swift_710100002", + "ph_swift_710100003", + "ph_swift_710100004", + "ph_swift_710100006", + "ph_swift_710100007", + "ph_swift_710100008", + "ph_swift_710100009", + "ph_swift_710200001", + "ph_swift_710200002", + "ph_swift_710200003", + "ph_swift_710200004", + "ph_swift_710200009", + "ph_swift_710300001", + "ph_swift_710300002", + "ph_swift_710300003", + "ph_swift_710300004", + "ph_swift_710300009", + "ph_swift_710400001", + "ph_swift_710400002", + "ph_swift_810101001", + "ph_swift_810101002", + "ph_swift_810101003", + "ph_swift_810101004", + "ph_swift_810101007", + "ph_swift_810101008", + "ph_swift_810101011", + "ph_swift_810102001", + "ph_swift_810102002", + "ph_swift_810102003", + "ph_swift_810102004", + "ph_swift_810102005", + "ph_swift_810102006", + "ph_swift_810102007", + "ph_swift_810102008", + "ph_swift_810102009", + "ph_swift_810201001", + "ph_swift_810201002", + "ph_swift_810201003", + "ph_swift_810201004", + "ph_swift_810202001", + "ph_swift_810202002", + "ph_swift_810202003", + "ph_swift_810202005", + "ph_swift_810202006", + "ph_swift_910100001", + "ph_swift_910100002", + "ph_swift_910100003", + "ph_swift_910100004", + "ph_swift_910100005", + "ph_swift_910100006", + "ph_swift_910100007", + "ph_swift_910100009", + "ph_swift_910100010", + "ph_swift_910100011", + "ph_swift_910200001", + "ph_swift_910200002", + "ph_swift_910200003", + "ph_swift_910200004", + "ph_swift_910200005", + "ph_swift_910200006", + "ph_swift_910200007", + "ph_swift_910200009", + "ph_swift_910200010", + "ph_swift_910200011", + "pk_swift_9009", + "pk_swift_9010", + "pk_swift_9011", + "pk_swift_9012", + "pk_swift_9013", + "pk_swift_9014", + "pk_swift_9015", + "pk_swift_9016", + "pk_swift_9017", + "pk_swift_9018", + "pk_swift_9019", + "pk_swift_9020", + "pk_swift_9021", + "pk_swift_9022", + "pk_swift_9023", + "pk_swift_9024", + "pk_swift_9025", + "pk_swift_9026", + "pk_swift_9027", + "pk_swift_9028", + "pk_swift_9029", + "pk_swift_9030", + "pk_swift_9031", + "pk_swift_9032", + "pk_swift_9033", + "pk_swift_9041", + "pk_swift_9051", + "pk_swift_9052", + "pk_swift_9061", + "pk_swift_9071", + "pk_swift_9072", + "pk_swift_9073", + "pk_swift_9081", + "pk_swift_9082", + "pk_swift_9083", + "pk_swift_9084", + "pk_swift_9085", + "pk_swift_9086", + "pk_swift_9091", + "pk_swift_9092", + "pk_swift_9101", + "pk_swift_9102", + "pk_swift_9111", + "pk_swift_9121", + "pk_swift_9122", + "pk_swift_9124", + "pk_swift_9141", + "pk_swift_9146", + "pk_swift_9151", + "pk_swift_9152", + "pk_swift_9161", + "pk_swift_9171", + "pk_swift_9172", + "pk_swift_9173", + "pk_swift_9174", + "pk_swift_9181", + "pk_swift_9182", + "pk_swift_9183", + "pk_swift_9184", + "pk_swift_9185", + "pk_swift_9186", + "pk_swift_9191", + "pk_swift_9192", + "pk_swift_9193", + "pk_swift_9201", + "pk_swift_9202", + "pk_swift_9211", + "pk_swift_9212", + "pk_swift_9221", + "pk_swift_9222", + "pk_swift_9230", + "pk_swift_9231", + "pk_swift_9232", + "pk_swift_9233", + "pk_swift_9234", + "pk_swift_9235", + "pk_swift_9236", + "pk_swift_9237", + "pk_swift_9238", + "pk_swift_9239", + "pk_swift_9241", + "pk_swift_9242", + "pk_swift_9243", + "pk_swift_9244", + "pk_swift_9247", + "pk_swift_9248", + "pk_swift_9249", + "pk_swift_9250", + "pk_swift_9251", + "pk_swift_9261", + "pk_swift_9262", + "pk_swift_9271", + "pk_swift_9272", + "pk_swift_9273", + "pk_swift_9281", + "pk_swift_9291", + "pk_swift_9301", + "pk_swift_9302", + "pk_swift_9303", + "pk_swift_9311", + "pk_swift_9312", + "pk_swift_9322", + "pk_swift_9323", + "pk_swift_9324", + "pk_swift_9331", + "pk_swift_9332", + "pk_swift_9333", + "pk_swift_9341", + "pk_swift_9351", + "pk_swift_9361", + "pk_swift_9381", + "pk_swift_9391", + "pk_swift_9401", + "pk_swift_9412", + "pk_swift_9414", + "pk_swift_9421", + "pk_swift_9422", + "pk_swift_9423", + "pk_swift_9426", + "pk_swift_9431", + "pk_swift_9432", + "pk_swift_9433", + "pk_swift_9434", + "pk_swift_9435", + "pk_swift_9441", + "pk_swift_9442", + "pk_swift_9443", + "pk_swift_9444", + "pk_swift_9445", + "pk_swift_9448", + "pk_swift_9451", + "pk_swift_9452", + "pk_swift_9453", + "pk_swift_9454", + "pk_swift_9455", + "pk_swift_9456", + "pk_swift_9457", + "pk_swift_9458", + "pk_swift_9459", + "pk_swift_9461", + "pk_swift_9462", + "pk_swift_9463", + "pk_swift_9468", + "pk_swift_9469", + "pk_swift_9470", + "pk_swift_9471", + "pk_swift_9472", + "pk_swift_9473", + "pk_swift_9474", + "pk_swift_9475", + "pk_swift_9476", + "pk_swift_9477", + "pk_swift_9478", + "pk_swift_9479", + "pk_swift_9481", + "pk_swift_9482", + "pk_swift_9483", + "pk_swift_9484", + "pk_swift_9491", + "pk_swift_9492", + "pk_swift_9493", + "pk_swift_9494", + "pk_swift_9501", + "pk_swift_9502", + "pk_swift_9503", + "pk_swift_9521", + "pk_swift_9522", + "pk_swift_9523", + "pk_swift_9524", + "pk_swift_9525", + "pk_swift_9526", + "pk_swift_9527", + "pk_swift_9528", + "pk_swift_9529", + "pk_swift_9530", + "pk_swift_9531", + "pk_swift_9532", + "pk_swift_9533", + "pk_swift_9534", + "pk_swift_9535", + "pk_swift_9536", + "pk_swift_9537", + "pk_swift_9538", + "pk_swift_9539", + "pk_swift_9541", + "pk_swift_9542", + "pk_swift_9543", + "pk_swift_9544", + "pk_swift_9545", + "pk_swift_9546", + "pk_swift_9547", + "pk_swift_9548", + "pk_swift_9549", + "pk_swift_9551", + "pk_swift_9552", + "pk_swift_9553", + "pk_swift_9554", + "pk_swift_9555", + "pk_swift_9556", + "pk_swift_9561", + "pk_swift_9562", + "pk_swift_9563", + "pk_swift_9564", + "pk_swift_9565", + "pk_swift_9566", + "pk_swift_9572", + "pk_swift_9573", + "pk_swift_9574", + "pk_swift_9582", + "pk_swift_9583", + "pk_swift_9584", + "pk_swift_9592", + "pk_swift_9593", + "pk_swift_9594", + "pk_swift_9595", + "pk_swift_9596", + "pk_swift_9597", + "pk_swift_9602", + "pk_swift_9605", + "pk_swift_9606", + "pk_swift_9607", + "pk_swift_9608", + "pk_swift_9609", + "pk_swift_9612", + "pk_swift_9613", + "pk_swift_9614", + "pk_swift_9622", + "pk_swift_9623", + "pk_swift_9624", + "pk_swift_9625", + "pk_swift_9637", + "pk_swift_9638", + "pk_swift_9641", + "pk_swift_9642", + "pk_swift_9643", + "pk_swift_9644", + "pk_swift_9645", + "pk_swift_9646", + "pk_swift_9647", + "pk_swift_9648", + "pk_swift_9649", + "pk_swift_9650", + "pk_swift_9651", + "pk_swift_9652", + "pk_swift_9653", + "pk_swift_9654", + "pk_swift_9668", + "pk_swift_9669", + "pk_swift_9673", + "pk_swift_9674", + "pk_swift_9675", + "pk_swift_9676", + "pk_swift_9677", + "pk_swift_9678", + "pk_swift_9681", + "pk_swift_9682", + "pk_swift_9693", + "pk_swift_9694", + "pk_swift_9695", + "pk_swift_9697", + "pk_swift_9698", + "pk_swift_9699", + "pk_swift_9703", + "pk_swift_9707", + "pk_swift_9708", + "za_swift_105", + "za_swift_220", + "za_swift_231", + "za_swift_242", + "za_swift_250", + "za_swift_251", + "za_swift_265", + "za_swift_266", + "za_swift_275", + "za_swift_276", + "za_swift_280", + "za_swift_285", + "za_swift_287", + "za_swift_288", + "za_swift_289", + "za_swift_290", + "za_swift_291", + "za_swift_296", + "za_swift_297", + "za_swift_308", + "za_swift_401", + "za_swift_10101", + "za_swift_10301", + "za_swift_27201" ], - "type": "object" + "example": "bh_swift_afl" }, - "tracking_transaction": { - "properties": { - "completed_at": { - "description": "Payout transaction completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "ledger_in_transaction_id": { - "description": "Ledger transaction ID for the IN (crypto deposit) transaction", - "type": [ - "string", - "null" - ] - }, - "ledger_out_transaction_id": { - "description": "Ledger transaction ID for the OUT (fiat withdrawal) transaction", - "type": [ - "string", - "null" - ] - }, - "provider_error_reason": { - "description": "Provider error reason when the crypto collection fails (e.g. erc20_allowance_insufficient, ESTIMATION_ERROR: execution reverted)", - "example": "erc20_allowance_insufficient", - "type": [ - "string", - "null" - ] - }, - "provider_transaction_id": { - "description": "Provider-side handle for the on-chain leg (e.g. Circle CPN payment id).", - "example": "67c12eae-b7bc-31cc-a5ef-623dcea82346", - "type": [ - "string", - "null" - ] - }, - "status": { - "description": "Payout transaction status", - "enum": [ - "failed", - "found" - ], - "example": "failed", - "type": [ - "string", - "null" - ] - }, - "step": { - "description": "Payout transaction step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "example": "processing", - "type": "string" - }, - "transaction_hash": { - "description": "Blockchain transaction hash", - "example": "0x123...890", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "step" + "pix_key": { + "type": [ + "string", + "null" ], - "type": "object" + "example": "14947677768" }, - "transaction_fee_amount": { - "description": "Transaction fee in cents (percentage-based fee)", - "example": 100, + "force_cpf_cnpj": { "type": [ - "number", + "boolean", "null" - ] - }, - "webhook_event": { - "enum": [ - "payout.complete" ], - "type": "string" - } - }, - "required": [ - "webhook_event", - "id", - "status", - "sender_wallet_address", - "tracking_complete", - "tracking_payment", - "tracking_transaction" - ], - "type": "object" - }, - "PayoutNewWebhookOut": { - "properties": { - "bank_account_id": { - "example": "ba_000000000000", - "maxLength": 15, - "minLength": 15, + "description": "Force CPF/CNPJ validation for PIX key", + "example": false + }, + "beneficiary_name": { "type": [ "string", "null" - ] + ], + "maxLength": 128, + "example": "Individual full name or business name" }, - "billing_fee_amount": { - "description": "Billing fee in cents (charged via invoice at the end of the month)", - "example": 50, + "routing_number": { "type": [ - "number", + "string", "null" - ] + ], + "example": "012345678" }, - "customer_id": { - "example": "re_000000000000", - "maxLength": 15, - "minLength": 15, + "account_number": { "type": [ "string", "null" - ] - }, - "id": { - "example": "pa_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" + ], + "example": "1001001234" }, - "offramp_wallet_id": { - "example": "ow_000000000000", - "maxLength": 15, - "minLength": 15, + "account_type": { "type": [ "string", "null" - ] - }, - "partner_fee": { - "default": 0, - "description": "Payout partner fee amount in cents (can be negative for rebates)", - "example": -25000, - "minimum": 0, - "type": "integer" - }, - "sender_wallet_address": { - "description": "Payout wallet address", - "example": "0x123...890", - "type": "string" + ], + "enum": [ + "checking", + "saving" + ], + "example": "checking" }, - "status": { - "description": "Payout general status", + "account_class": { + "type": [ + "string", + "null" + ], "enum": [ - "processing", - "failed", - "refunded", - "completed", - "on_hold" + "individual", + "business" ], - "example": "processing", - "type": "string" + "example": "individual" }, - "tracking_complete": { - "properties": { - "completed_at": { - "description": "Complete completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "provider_transaction_id": { - "description": "Provider-side handle for the refund transaction (e.g. Circle transaction id)", - "example": "67c12eae-b7bc-31cc-a5ef-623dcea82346", - "type": [ - "string", - "null" - ] - }, - "refund_reason": { - "description": "Reason for refund when tokens are returned to sender", - "example": "fiat_payment_failed", - "type": [ - "string", - "null" - ] - }, - "status": { - "description": "Complete status", - "enum": [ - "tokens_refunded", - "paid" - ], - "example": "tokens_refunded", - "type": [ - "string", - "null" - ] - }, - "step": { - "description": "Complete step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "example": "on_hold", - "type": "string" - }, - "transaction_hash": { - "description": "Complete transaction hash", - "example": "0x123...890", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "step" + "address_line_1": { + "type": [ + "string", + "null" ], - "type": "object" + "example": "Address line 1" }, - "tracking_documents": { - "properties": { - "completed_at": { - "description": "Documents completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "reviewed_by": { - "description": "Reviewer email/name", - "example": "compliance@example.com", - "type": [ - "string", - "null" - ] - }, - "status": { - "description": "Documents status", - "enum": [ - "waiting_documents", - "compliance_reviewing" - ], - "example": "waiting_documents", - "type": [ - "string", - "null" - ] - }, - "step": { - "description": "Documents step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "example": "processing", - "type": "string" - } - }, - "required": [ - "step" + "address_line_2": { + "type": [ + "string", + "null" ], + "example": "Address line 2" + }, + "city": { "type": [ - "object", + "string", "null" - ] + ], + "example": "City" }, - "tracking_liquidity": { - "properties": { - "completed_at": { - "description": "Payout transaction completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "estimated_time_of_arrival": { - "description": "Estimated time of arrival", - "enum": [ - "5_min", - "5_30_min", - "30_min", - "2_hours", - "1_business_day", - "2_business_days", - "5_business_days" - ], - "example": "1_business_day", - "type": [ - "string", - "null" - ] - }, - "provider_status": { - "description": "Payment provider status", - "enum": [ - "deposited", - "converted", - "withdrawn" - ], - "example": "deposited", - "type": [ - "string", - "null" - ] - }, - "provider_transaction_id": { - "description": "Payment provider transaction id", - "example": "0x123...890", - "type": [ - "string", - "null" - ] - }, - "step": { - "description": "Payout liquidity step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "example": "processing", - "type": "string" - } - }, - "required": [ - "step" + "state_province_region": { + "type": [ + "string", + "null" ], + "example": "State/Province/Region" + }, + "country": { "type": [ - "object", + "string", "null" - ] - }, - "tracking_payment": { - "properties": { - "coelsa_id": { - "description": "COELSA transaction reference ID for ARS transfers (Argentine national banking system)", - "example": "1LMP68NKV46DRDYK2R7OEV", - "type": [ - "string", - "null" - ] - }, - "completed_at": { - "description": "Payment completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "end_to_end_id": { - "description": "BACEN Pix end-to-end transaction ID (govt Pix ID)", - "example": "E20018183202603311320vm6ALFpJpsS", - "type": [ - "string", - "null" - ] - }, - "estimated_time_of_arrival": { - "description": "Estimated time of arrival", - "enum": [ - "5_min", - "5_30_min", - "30_min", - "2_hours", - "1_business_day", - "2_business_days", - "5_business_days" - ], - "example": "5_min", - "type": [ - "string", - "null" - ] - }, - "provider_clearing_system": { - "description": "Clearing system that processed the payment (e.g. FED, CHIPS, ACH, SWIFT).", - "example": "FED", - "maxLength": 40, - "type": [ - "string", - "null" - ] - }, - "provider_error_reason": { - "description": "Provider error reason when payment fails (e.g. invalid_key, wrong_parameters)", - "example": "invalid_key", - "type": [ - "string", - "null" - ] - }, - "provider_imad": { - "description": "Fed Input Message Accountability Data (IMAD). Domestic Fedwire payments only; null on ACH and SWIFT.", - "example": "20260526MMQFMP2M008120", - "maxLength": 120, - "type": [ - "string", - "null" - ] - }, - "provider_integration": { - "description": "Machine-readable integration that executed the fiat leg. Unlike provider_name (a client-facing bank label), this uniquely identifies the integration \u2014 e.g. zenus vs checkbook, which share the \"JPMorgan Chase\" label.", - "enum": [ - "veem", - "zenus", - "checkbook", - "onemoney", - "bitso", - "starkbank", - "triplea", - "infinitus" - ], - "example": "zenus", - "type": [ - "string", - "null" - ] - }, - "provider_name": { - "description": "Payment provider name", - "enum": [ - "Nvio Pagos", - "Brex", - "Stark Bank", - "JPMorgan Chase", - "HSBC", - "Inter", - "JP Morgan Chase", - "Bitso", - "Citi", - "CFSB", - "Triple A Technologies", - "Portage Bank" - ], - "example": "HSBC", - "type": [ - "string", - "null" - ] - }, - "provider_reference": { - "description": "Provider (JPMorgan/Zenus) payment reference captured from the ACCOUNT.ACCOUNT booking webhook (Zenus contractSource.sourceRef). Present for some ACH/wire payouts; a bank-side reference, not the formal ACH network trace number.", - "example": "2084734238TC", - "maxLength": 120, - "type": [ - "string", - "null" - ] - }, - "provider_status": { - "description": "Payment provider status", - "enum": [ - "canceled", - "failed", - "returned", - "sent" - ], - "example": "canceled", - "type": [ - "string", - "null" - ] - }, - "provider_transaction_id": { - "description": "Payment provider transaction id", - "example": "0x123...890", - "type": [ - "string", - "null" - ] - }, - "provider_uetr": { - "description": "Unique end-to-end transaction reference (UETR). Populated once the wire is confirmed by the network; null while the payment is in flight or when the rail does not expose it (e.g. ACH).", - "example": "37d10eff-d450-4aba-a5d4-e3978f5a3343", - "maxLength": 120, - "type": [ - "string", - "null" - ] - }, - "recipient_account_number": { - "description": "Recipient account number", - "example": "1234567890", - "type": [ - "string", - "null" - ] - }, - "recipient_account_type": { - "description": "Recipient account type", - "example": "checking", - "type": [ - "string", - "null" - ] - }, - "recipient_bank_code": { - "description": "Recipient bank code", - "example": "00416968", - "type": [ - "string", - "null" - ] - }, - "recipient_branch_code": { - "description": "Recipient branch code", - "example": "0001", - "type": [ - "string", - "null" - ] - }, - "recipient_name": { - "description": "Recipient name", - "example": "John Doe", - "type": [ - "string", - "null" - ] - }, - "recipient_tax_id": { - "description": "Recipient tax id", - "example": "123.456.789-10", - "type": [ - "string", - "null" - ] - }, - "step": { - "description": "Payment step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "example": "on_hold", - "type": "string" - } - }, - "required": [ - "step" ], - "type": "object" - }, - "tracking_transaction": { - "properties": { - "completed_at": { - "description": "Payout transaction completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "ledger_in_transaction_id": { - "description": "Ledger transaction ID for the IN (crypto deposit) transaction", - "type": [ - "string", - "null" - ] - }, - "ledger_out_transaction_id": { - "description": "Ledger transaction ID for the OUT (fiat withdrawal) transaction", - "type": [ - "string", - "null" - ] - }, - "provider_error_reason": { - "description": "Provider error reason when the crypto collection fails (e.g. erc20_allowance_insufficient, ESTIMATION_ERROR: execution reverted)", - "example": "erc20_allowance_insufficient", - "type": [ - "string", - "null" - ] - }, - "provider_transaction_id": { - "description": "Provider-side handle for the on-chain leg (e.g. Circle CPN payment id).", - "example": "67c12eae-b7bc-31cc-a5ef-623dcea82346", - "type": [ - "string", - "null" - ] - }, - "status": { - "description": "Payout transaction status", - "enum": [ - "failed", - "found" - ], - "example": "failed", - "type": [ - "string", - "null" - ] - }, - "step": { - "description": "Payout transaction step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "example": "processing", - "type": "string" - }, - "transaction_hash": { - "description": "Blockchain transaction hash", - "example": "0x123...890", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "step" + "enum": [ + "AF", + "AL", + "DZ", + "AS", + "AD", + "AO", + "AI", + "AQ", + "AG", + "AR", + "AM", + "AW", + "AU", + "AT", + "AZ", + "BS", + "BH", + "BD", + "BB", + "BY", + "BE", + "BZ", + "BJ", + "BM", + "BT", + "BO", + "BQ", + "BA", + "BW", + "BV", + "BR", + "IO", + "BN", + "BG", + "BF", + "BI", + "CV", + "KH", + "CM", + "CA", + "KY", + "CF", + "TD", + "CL", + "CN", + "CX", + "CC", + "CO", + "KM", + "CD", + "CG", + "CK", + "CR", + "HR", + "CU", + "CW", + "CY", + "CZ", + "CI", + "DK", + "DJ", + "DM", + "DO", + "EC", + "EG", + "SV", + "GQ", + "ER", + "EE", + "SZ", + "ET", + "FK", + "FO", + "FJ", + "FI", + "FR", + "GF", + "PF", + "TF", + "GA", + "GM", + "GE", + "DE", + "GH", + "GI", + "GR", + "GL", + "GD", + "GP", + "GU", + "GT", + "GG", + "GN", + "GW", + "GY", + "HT", + "HM", + "VA", + "HN", + "HK", + "HU", + "IS", + "IN", + "ID", + "IR", + "IQ", + "IE", + "IM", + "IL", + "IT", + "JM", + "JP", + "JE", + "JO", + "KZ", + "KE", + "KI", + "KP", + "KR", + "KW", + "KG", + "LA", + "LV", + "LB", + "LS", + "LR", + "LY", + "LI", + "LT", + "LU", + "MO", + "MG", + "MW", + "MY", + "MV", + "ML", + "MT", + "MH", + "MQ", + "MR", + "MU", + "YT", + "MX", + "FM", + "MD", + "MC", + "MN", + "ME", + "MS", + "MA", + "MZ", + "MM", + "NA", + "NR", + "NP", + "NL", + "NC", + "NZ", + "NI", + "NE", + "NG", + "NU", + "NF", + "MP", + "NO", + "OM", + "PK", + "PW", + "PS", + "PA", + "PG", + "PY", + "PE", + "PH", + "PN", + "PL", + "PT", + "PR", + "QA", + "MK", + "RO", + "RU", + "RW", + "RE", + "BL", + "SH", + "KN", + "LC", + "MF", + "PM", + "VC", + "WS", + "SM", + "ST", + "SA", + "SN", + "RS", + "SC", + "SL", + "SG", + "SX", + "SK", + "SI", + "SB", + "SO", + "ZA", + "GS", + "SS", + "ES", + "LK", + "SD", + "SR", + "SJ", + "SE", + "CH", + "SY", + "TW", + "TJ", + "TZ", + "TH", + "TL", + "TG", + "TK", + "TO", + "TT", + "TN", + "TR", + "TM", + "TC", + "TV", + "UG", + "UA", + "AE", + "GB", + "UM", + "US", + "UY", + "UZ", + "VU", + "VE", + "VN", + "VG", + "VI", + "WF", + "EH", + "YE", + "ZM", + "ZW", + "AX" ], - "type": "object" + "example": "US" }, - "transaction_fee_amount": { - "description": "Transaction fee in cents (percentage-based fee)", - "example": 100, + "postal_code": { "type": [ - "number", + "string", "null" - ] - }, - "webhook_event": { - "enum": [ - "payout.new" ], - "type": "string" - } - }, - "required": [ - "webhook_event", - "id", - "status", - "sender_wallet_address", - "tracking_complete", - "tracking_payment", - "tracking_transaction" - ], - "type": "object" - }, - "PayoutOnEvmIn": { - "properties": { - "quote_id": { - "example": "qu_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" + "example": "Postal code" }, - "sender_wallet_address": { - "description": "Payout wallet address", - "example": "0x123...890", - "type": "string" - } - }, - "required": [ - "quote_id", - "sender_wallet_address" - ], - "type": "object" - }, - "PayoutOnEvmOut": { - "properties": { - "bank_account_id": { - "example": "ba_000000000000", - "maxLength": 15, - "minLength": 15, + "checkbook_account_id": { "type": [ "string", "null" - ] - }, - "billing_fee_amount": { - "description": "Billing fee in cents (charged via invoice at the end of the month)", - "example": 50, - "type": [ - "number", - "null" - ] + ], + "example": "dc809ff8f4d3417d83e5697e76f0b88a" }, - "customer_id": { - "example": "re_000000000000", - "maxLength": 15, - "minLength": 15, + "checkbook_user_key": { "type": [ "string", "null" - ] - }, - "id": { - "example": "pa_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" + ], + "example": "d84fd0dc-3882-4de9-97f8-656730214619" }, - "offramp_wallet_id": { - "example": "ow_000000000000", - "maxLength": 15, - "minLength": 15, + "onemoney_external_account_id": { "type": [ "string", "null" - ] - }, - "partner_fee": { - "default": 0, - "description": "Payout partner fee amount in cents (can be negative for rebates)", - "example": -25000, - "minimum": 0, - "type": "integer" - }, - "sender_wallet_address": { - "description": "Payout wallet address", - "example": "0x123...890", - "type": "string" - }, - "status": { - "description": "Payout general status", - "enum": [ - "processing", - "failed", - "refunded", - "completed", - "on_hold" - ], - "example": "processing", - "type": "string" - }, - "tracking_complete": { - "properties": { - "completed_at": { - "description": "Complete completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "provider_transaction_id": { - "description": "Provider-side handle for the refund transaction (e.g. Circle transaction id)", - "example": "67c12eae-b7bc-31cc-a5ef-623dcea82346", - "type": [ - "string", - "null" - ] - }, - "refund_reason": { - "description": "Reason for refund when tokens are returned to sender", - "example": "fiat_payment_failed", - "type": [ - "string", - "null" - ] - }, - "status": { - "description": "Complete status", - "enum": [ - "tokens_refunded", - "paid" - ], - "example": "tokens_refunded", - "type": [ - "string", - "null" - ] - }, - "step": { - "description": "Complete step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "example": "on_hold", - "type": "string" - }, - "transaction_hash": { - "description": "Complete transaction hash", - "example": "0x123...890", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "step" - ], - "type": "object" - }, - "tracking_documents": { - "properties": { - "completed_at": { - "description": "Documents completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "reviewed_by": { - "description": "Reviewer email/name", - "example": "compliance@example.com", - "type": [ - "string", - "null" - ] - }, - "status": { - "description": "Documents status", - "enum": [ - "waiting_documents", - "compliance_reviewing" - ], - "example": "waiting_documents", - "type": [ - "string", - "null" - ] - }, - "step": { - "description": "Documents step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "example": "processing", - "type": "string" - } - }, - "required": [ - "step" ], - "type": [ - "object", - "null" - ] + "example": "ex_000000000000" }, - "tracking_liquidity": { - "properties": { - "completed_at": { - "description": "Payout transaction completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "estimated_time_of_arrival": { - "description": "Estimated time of arrival", - "enum": [ - "5_min", - "5_30_min", - "30_min", - "2_hours", - "1_business_day", - "2_business_days", - "5_business_days" - ], - "example": "1_business_day", - "type": [ - "string", - "null" - ] - }, - "provider_status": { - "description": "Payment provider status", - "enum": [ - "deposited", - "converted", - "withdrawn" - ], - "example": "deposited", - "type": [ - "string", - "null" - ] - }, - "provider_transaction_id": { - "description": "Payment provider transaction id", - "example": "0x123...890", - "type": [ - "string", - "null" - ] - }, - "step": { - "description": "Payout liquidity step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "example": "processing", - "type": "string" - } - }, - "required": [ - "step" - ], + "pix_safe_bank_code": { "type": [ - "object", - "null" - ] - }, - "tracking_payment": { - "properties": { - "coelsa_id": { - "description": "COELSA transaction reference ID for ARS transfers (Argentine national banking system)", - "example": "1LMP68NKV46DRDYK2R7OEV", - "type": [ - "string", - "null" - ] - }, - "completed_at": { - "description": "Payment completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "end_to_end_id": { - "description": "BACEN Pix end-to-end transaction ID (govt Pix ID)", - "example": "E20018183202603311320vm6ALFpJpsS", - "type": [ - "string", - "null" - ] - }, - "estimated_time_of_arrival": { - "description": "Estimated time of arrival", - "enum": [ - "5_min", - "5_30_min", - "30_min", - "2_hours", - "1_business_day", - "2_business_days", - "5_business_days" - ], - "example": "5_min", - "type": [ - "string", - "null" - ] - }, - "provider_clearing_system": { - "description": "Clearing system that processed the payment (e.g. FED, CHIPS, ACH, SWIFT).", - "example": "FED", - "maxLength": 40, - "type": [ - "string", - "null" - ] - }, - "provider_error_reason": { - "description": "Provider error reason when payment fails (e.g. invalid_key, wrong_parameters)", - "example": "invalid_key", - "type": [ - "string", - "null" - ] - }, - "provider_imad": { - "description": "Fed Input Message Accountability Data (IMAD). Domestic Fedwire payments only; null on ACH and SWIFT.", - "example": "20260526MMQFMP2M008120", - "maxLength": 120, - "type": [ - "string", - "null" - ] - }, - "provider_integration": { - "description": "Machine-readable integration that executed the fiat leg. Unlike provider_name (a client-facing bank label), this uniquely identifies the integration \u2014 e.g. zenus vs checkbook, which share the \"JPMorgan Chase\" label.", - "enum": [ - "veem", - "zenus", - "checkbook", - "onemoney", - "bitso", - "starkbank", - "triplea", - "infinitus" - ], - "example": "zenus", - "type": [ - "string", - "null" - ] - }, - "provider_name": { - "description": "Payment provider name", - "enum": [ - "Nvio Pagos", - "Brex", - "Stark Bank", - "JPMorgan Chase", - "HSBC", - "Inter", - "JP Morgan Chase", - "Bitso", - "Citi", - "CFSB", - "Triple A Technologies", - "Portage Bank" - ], - "example": "HSBC", - "type": [ - "string", - "null" - ] - }, - "provider_reference": { - "description": "Provider (JPMorgan/Zenus) payment reference captured from the ACCOUNT.ACCOUNT booking webhook (Zenus contractSource.sourceRef). Present for some ACH/wire payouts; a bank-side reference, not the formal ACH network trace number.", - "example": "2084734238TC", - "maxLength": 120, - "type": [ - "string", - "null" - ] - }, - "provider_status": { - "description": "Payment provider status", - "enum": [ - "canceled", - "failed", - "returned", - "sent" - ], - "example": "canceled", - "type": [ - "string", - "null" - ] - }, - "provider_transaction_id": { - "description": "Payment provider transaction id", - "example": "0x123...890", - "type": [ - "string", - "null" - ] - }, - "provider_uetr": { - "description": "Unique end-to-end transaction reference (UETR). Populated once the wire is confirmed by the network; null while the payment is in flight or when the rail does not expose it (e.g. ACH).", - "example": "37d10eff-d450-4aba-a5d4-e3978f5a3343", - "maxLength": 120, - "type": [ - "string", - "null" - ] - }, - "recipient_account_number": { - "description": "Recipient account number", - "example": "1234567890", - "type": [ - "string", - "null" - ] - }, - "recipient_account_type": { - "description": "Recipient account type", - "example": "checking", - "type": [ - "string", - "null" - ] - }, - "recipient_bank_code": { - "description": "Recipient bank code", - "example": "00416968", - "type": [ - "string", - "null" - ] - }, - "recipient_branch_code": { - "description": "Recipient branch code", - "example": "0001", - "type": [ - "string", - "null" - ] - }, - "recipient_name": { - "description": "Recipient name", - "example": "John Doe", - "type": [ - "string", - "null" - ] - }, - "recipient_tax_id": { - "description": "Recipient tax id", - "example": "123.456.789-10", - "type": [ - "string", - "null" - ] - }, - "step": { - "description": "Payment step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "example": "on_hold", - "type": "string" - } - }, - "required": [ - "step" - ], - "type": "object" - }, - "tracking_transaction": { - "properties": { - "completed_at": { - "description": "Payout transaction completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "ledger_in_transaction_id": { - "description": "Ledger transaction ID for the IN (crypto deposit) transaction", - "type": [ - "string", - "null" - ] - }, - "ledger_out_transaction_id": { - "description": "Ledger transaction ID for the OUT (fiat withdrawal) transaction", - "type": [ - "string", - "null" - ] - }, - "provider_error_reason": { - "description": "Provider error reason when the crypto collection fails (e.g. erc20_allowance_insufficient, ESTIMATION_ERROR: execution reverted)", - "example": "erc20_allowance_insufficient", - "type": [ - "string", - "null" - ] - }, - "provider_transaction_id": { - "description": "Provider-side handle for the on-chain leg (e.g. Circle CPN payment id).", - "example": "67c12eae-b7bc-31cc-a5ef-623dcea82346", - "type": [ - "string", - "null" - ] - }, - "status": { - "description": "Payout transaction status", - "enum": [ - "failed", - "found" - ], - "example": "failed", - "type": [ - "string", - "null" - ] - }, - "step": { - "description": "Payout transaction step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "example": "processing", - "type": "string" - }, - "transaction_hash": { - "description": "Blockchain transaction hash", - "example": "0x123...890", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "step" + "string", + "null" ], - "type": "object" + "pattern": "^\\d{4,8}$", + "example": "00416968" }, - "transaction_fee_amount": { - "description": "Transaction fee in cents (percentage-based fee)", - "example": 100, + "pix_safe_branch_code": { "type": [ - "number", + "string", "null" - ] - } - }, - "required": [ - "id", - "status", - "sender_wallet_address", - "tracking_complete", - "tracking_payment", - "tracking_transaction" - ], - "type": "object" - }, - "PayoutOnSolanaIn": { - "properties": { - "quote_id": { - "example": "qu_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - }, - "sender_wallet_address": { - "description": "Payout wallet address", - "example": "0x123...890", - "type": "string" + ], + "pattern": "^\\d{4}(-\\d)?$", + "example": "0001" }, - "signed_transaction": { - "description": "Signed transaction", - "example": "AAA...Zey8y0A", + "pix_safe_cpf_cnpj": { "type": [ "string", "null" - ] - } - }, - "required": [ - "quote_id", - "sender_wallet_address" - ], - "type": "object" - }, - "PayoutOnStellarAuthorizeIn": { - "properties": { - "quote_id": { - "example": "qu_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - }, - "sender_wallet_address": { - "description": "Payout wallet address", - "example": "0x123...890", - "type": "string" - } - }, - "required": [ - "quote_id", - "sender_wallet_address" - ], - "type": "object" - }, - "PayoutOnStellarIn": { - "properties": { - "quote_id": { - "example": "qu_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - }, - "sender_wallet_address": { - "description": "Payout wallet address", - "example": "0x123...890", - "type": "string" + ], + "example": "12345678901" }, - "signed_transaction": { - "description": "Signed transaction", - "example": "AAA...Zey8y0A", + "ted_bank_code": { "type": [ "string", "null" - ] - } - }, - "required": [ - "quote_id", - "sender_wallet_address" - ], - "type": "object" - }, - "PayoutOut": { - "properties": { - "account_class": { - "enum": [ - "individual", - "business" ], - "example": "individual", + "pattern": "^\\d{3,5}$", + "example": "033" + }, + "ted_branch_code": { "type": [ "string", "null" - ] + ], + "pattern": "^\\d{4}(-\\d)?$", + "example": "0001" }, - "account_number": { - "example": "1001001234", + "ted_cpf_cnpj": { "type": [ "string", "null" - ] + ], + "example": "12345678901" }, - "account_type": { + "spei_protocol": { + "type": [ + "string", + "null" + ], "enum": [ - "checking", - "saving" + "clabe", + "debitcard", + "phonenum" ], - "example": "checking", + "description": "For debitcard and phonenum the spei_institution_code is required", + "example": "clabe" + }, + "spei_institution_code": { "type": [ "string", "null" - ] + ], + "minLength": 5, + "maxLength": 5, + "example": "40002" }, - "ach_cop_bank_account": { - "example": "12345678", + "spei_clabe": { "type": [ "string", "null" - ] + ], + "example": "5482347403740546" }, - "ach_cop_bank_code": { - "example": "051", + "transfers_type": { "type": [ "string", "null" - ] + ], + "enum": [ + "CVU", + "CBU", + "ALIAS" + ], + "example": "CVU" + }, + "transfers_account": { + "type": [ + "string", + "null" + ], + "example": "BM123123123123" }, "ach_cop_beneficiary_first_name": { - "example": "Fernando", "type": [ "string", "null" - ] + ], + "example": "Fernando" }, "ach_cop_beneficiary_last_name": { - "example": "Guzman Alarc\u00f3n", "type": [ "string", "null" - ] + ], + "example": "Guzman Alarcón" }, "ach_cop_document_id": { - "example": "1661105408", "type": [ "string", "null" - ] + ], + "example": "1661105408" }, "ach_cop_document_type": { - "description": "CC - C\u00e9dula de Ciudadan\u00eda; CE - C\u00e9dula de Extranjer\u00eda; NIT - N\u00famero de Identificaci\u00f3n Tributaria; PASS - Passport; PEP - Permiso Especial de Permanencia", + "type": [ + "string", + "null" + ], "enum": [ "CC", "CE", @@ -28815,73 +27104,71 @@ "PASS", "PEP" ], - "example": "CC", + "description": "CC - Cédula de Ciudadanía; CE - Cédula de Extranjería; NIT - Número de Identificación Tributaria; PASS - Passport; PEP - Permiso Especial de Permanencia", + "example": "CC" + }, + "ach_cop_email": { "type": [ "string", "null" - ] + ], + "example": "fernando.guzman@gmail.com" }, - "ach_cop_email": { - "example": "fernando.guzman@gmail.com", + "ach_cop_bank_code": { "type": [ "string", "null" - ] + ], + "example": "051" }, - "address_line_1": { - "example": "Address line 1", + "ach_cop_bank_account": { "type": [ "string", "null" - ] + ], + "example": "12345678" }, - "address_line_2": { - "example": "Address line 2", + "swift_code_bic": { "type": [ "string", "null" - ] + ], + "example": "123456789" }, - "beneficiary_name": { - "example": "Individual full name or business name", - "maxLength": 128, + "swift_account_holder_name": { "type": [ "string", "null" - ] + ], + "maxLength": 50, + "example": "John Doe" }, - "billing_fee_amount": { - "description": "Billing fee in cents (charged via invoice at the end of the month)", - "example": 50, + "swift_account_number_iban": { "type": [ - "number", + "string", "null" - ] + ], + "example": "123456789" }, - "blindpay_quotation": { - "description": "1 USD = 4.85 BRL (commercial quotation - (blindpay taxes))", - "example": 485, + "swift_beneficiary_address_line_1": { "type": [ - "number", + "string", "null" - ] + ], + "example": "123 MAIN STREET SUITE 100" }, - "city": { - "example": "City", + "swift_beneficiary_address_line_2": { "type": [ "string", "null" - ] + ], + "example": "BUILDING A FLOOR 5" }, - "commercial_quotation": { - "description": "1 USD = 4.95 BRL", - "example": 495, + "swift_beneficiary_country": { "type": [ - "number", + "string", "null" - ] - }, - "country": { + ], "enum": [ "AF", "AL", @@ -29133,393 +27420,375 @@ "ZW", "AX" ], - "example": "US", - "type": [ - "string", - "null" - ] + "example": "MX" }, - "cpn_payment_id": { - "description": "Circle CPN payment id", - "example": "f06dbc45-58a4-389f-beb8-581c3fafff3c", + "swift_beneficiary_city": { "type": [ "string", "null" - ] + ], + "example": "MEXICO CITY" }, - "created_at": { - "example": "2021-01-01T00:00:00Z", - "format": "date-time", + "swift_beneficiary_state_province_region": { "type": [ "string", "null" - ] - }, - "currency": { - "description": "ISO 4271 currency code", - "enum": [ - "BRL", - "USD", - "MXN", - "COP", - "ARS", - "EUR" ], - "example": "BRL", - "type": "string" - }, - "customer_id": { - "description": "Customer id", - "example": "re_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" + "example": "MX" }, - "customer_local_amount": { - "description": "Estimated amount in the currency of recipient bank account", - "example": 1000, - "type": [ - "number", - "null" - ] - }, - "description": { - "example": "Memo code or description, only works with USD and BRL", - "maxLength": 128, + "swift_beneficiary_postal_code": { "type": [ "string", "null" - ] + ], + "example": "11530" }, - "first_name": { - "example": "John", + "swift_bank_name": { "type": [ "string", "null" - ] - }, - "has_virtual_account": { - "description": "Has virtual account", - "example": true, - "type": [ - "boolean", - "null" - ] - }, - "id": { - "example": "pa_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" + ], + "example": "Banco Regional SA" }, - "image_url": { - "example": "https://example.com/image.png", - "format": "uri", + "swift_bank_address_line_1": { "type": [ "string", "null" - ] - }, - "instance_id": { - "example": "in_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - }, - "jpm_track_data": { - "properties": { - "extended_tracking_status": { - "description": "Extended tracking status from JPM", - "example": "Delivered to next bank", - "type": [ - "string", - "null" - ] - }, - "fed_imad": { - "description": "Fed IMAD number (Wire payments only)", - "example": "1230MMQFMP2L034796", - "type": [ - "string", - "null" - ] - }, - "jpm_processing_status": { - "description": "JPM processing status", - "example": "Completed", - "type": [ - "string", - "null" - ] - }, - "jpm_reference_number": { - "description": "JPM reference number", - "example": "9483400364JO", - "type": [ - "string", - "null" - ] - }, - "jpm_trace_number": { - "description": "JPM trace number", - "example": "317802200000565", - "type": [ - "string", - "null" - ] - }, - "payment_amount": { - "description": "Payment amount", - "example": "3,914.00", - "type": [ - "string", - "null" - ] - }, - "payment_currency": { - "description": "Payment currency", - "example": "USD", - "type": [ - "string", - "null" - ] - }, - "payment_date": { - "description": "Payment date", - "example": "Dec 30 2025", - "type": [ - "string", - "null" - ] - }, - "uetr": { - "description": "Unique end-to-end transaction reference", - "example": "4ad5f98a-5279-410a-99a2-39a729aceb35", - "type": [ - "string", - "null" - ] - } - }, - "type": [ - "object", - "null" - ] + ], + "example": "123 Main Street, Suite 100, Downtown District, City Center CP 12345" }, - "last_name": { - "example": "Doe", + "swift_bank_address_line_2": { "type": [ "string", "null" - ] + ], + "example": "456 Oak Avenue, Building 7, Financial District, Business Center CP 54321" }, - "legal_name": { - "example": "Company Name Inc.", + "swift_bank_country": { "type": [ "string", "null" - ] - }, - "name": { - "example": "Bank Account Name", - "type": "string" - }, - "network": { - "description": "Check blindpay available networks", + ], "enum": [ - "base", - "sepolia", - "arbitrum_sepolia", - "base_sepolia", - "arbitrum", - "polygon", - "polygon_amoy", - "ethereum", - "stellar", - "stellar_testnet", - "tron", - "solana", - "solana_devnet" + "AF", + "AL", + "DZ", + "AS", + "AD", + "AO", + "AI", + "AQ", + "AG", + "AR", + "AM", + "AW", + "AU", + "AT", + "AZ", + "BS", + "BH", + "BD", + "BB", + "BY", + "BE", + "BZ", + "BJ", + "BM", + "BT", + "BO", + "BQ", + "BA", + "BW", + "BV", + "BR", + "IO", + "BN", + "BG", + "BF", + "BI", + "CV", + "KH", + "CM", + "CA", + "KY", + "CF", + "TD", + "CL", + "CN", + "CX", + "CC", + "CO", + "KM", + "CD", + "CG", + "CK", + "CR", + "HR", + "CU", + "CW", + "CY", + "CZ", + "CI", + "DK", + "DJ", + "DM", + "DO", + "EC", + "EG", + "SV", + "GQ", + "ER", + "EE", + "SZ", + "ET", + "FK", + "FO", + "FJ", + "FI", + "FR", + "GF", + "PF", + "TF", + "GA", + "GM", + "GE", + "DE", + "GH", + "GI", + "GR", + "GL", + "GD", + "GP", + "GU", + "GT", + "GG", + "GN", + "GW", + "GY", + "HT", + "HM", + "VA", + "HN", + "HK", + "HU", + "IS", + "IN", + "ID", + "IR", + "IQ", + "IE", + "IM", + "IL", + "IT", + "JM", + "JP", + "JE", + "JO", + "KZ", + "KE", + "KI", + "KP", + "KR", + "KW", + "KG", + "LA", + "LV", + "LB", + "LS", + "LR", + "LY", + "LI", + "LT", + "LU", + "MO", + "MG", + "MW", + "MY", + "MV", + "ML", + "MT", + "MH", + "MQ", + "MR", + "MU", + "YT", + "MX", + "FM", + "MD", + "MC", + "MN", + "ME", + "MS", + "MA", + "MZ", + "MM", + "NA", + "NR", + "NP", + "NL", + "NC", + "NZ", + "NI", + "NE", + "NG", + "NU", + "NF", + "MP", + "NO", + "OM", + "PK", + "PW", + "PS", + "PA", + "PG", + "PY", + "PE", + "PH", + "PN", + "PL", + "PT", + "PR", + "QA", + "MK", + "RO", + "RU", + "RW", + "RE", + "BL", + "SH", + "KN", + "LC", + "MF", + "PM", + "VC", + "WS", + "SM", + "ST", + "SA", + "SN", + "RS", + "SC", + "SL", + "SG", + "SX", + "SK", + "SI", + "SB", + "SO", + "ZA", + "GS", + "SS", + "ES", + "LK", + "SD", + "SR", + "SJ", + "SE", + "CH", + "SY", + "TW", + "TJ", + "TZ", + "TH", + "TL", + "TG", + "TK", + "TO", + "TT", + "TN", + "TR", + "TM", + "TC", + "TV", + "UG", + "UA", + "AE", + "GB", + "UM", + "US", + "UY", + "UZ", + "VU", + "VE", + "VN", + "VG", + "VI", + "WF", + "EH", + "YE", + "ZM", + "ZW", + "AX" ], - "example": "sepolia", - "type": "string" - }, - "partner_fee": { - "default": 0, - "description": "Payout partner fee amount in cents (can be negative for rebates)", - "example": -25000, - "minimum": 0, - "type": "integer" - }, - "partner_fee_amount": { - "default": 0, - "description": "1.5 USDC", - "example": 150, - "type": [ - "number", - "null" - ] - }, - "partner_fee_id": { - "example": "pf_000000000000", - "maxLength": 15, - "minLength": 15, - "type": [ - "string", - "null" - ] - }, - "pix_key": { - "example": "14947677768", - "type": [ - "string", - "null" - ] - }, - "pix_safe_bank_code": { - "example": "00416968", - "pattern": "^\\d{4,8}$", - "type": [ - "string", - "null" - ] - }, - "pix_safe_branch_code": { - "example": "0001", - "pattern": "^\\d{4}(-\\d)?$", - "type": [ - "string", - "null" - ] - }, - "pix_safe_cpf_cnpj": { - "example": "12345678901", - "type": [ - "string", - "null" - ] - }, - "postal_code": { - "example": "Postal code", - "type": [ - "string", - "null" - ] - }, - "quote_id": { - "example": "qu_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - }, - "receiver_amount": { - "description": "52.40 BRL", - "example": 5240, - "type": [ - "number", - "null" - ] - }, - "routing_number": { - "example": "012345678", - "type": [ - "string", - "null" - ] - }, - "sender_amount": { - "description": "10.10 USDC needs to be sent to bank account blockchain address", - "example": 1010, - "type": [ - "number", - "null" - ] + "example": "MX" }, - "sender_legal_name": { - "description": "Legal name of the sending instance (originator), shown on the receipt", - "example": "LRB TRADING INVESTMENT L.L.C", + "swift_bank_city": { "type": [ "string", "null" - ] - }, - "sender_wallet_address": { - "description": "Payout wallet address", - "example": "0x123...890", - "type": "string" + ], + "example": "City" }, - "signed_transaction": { - "description": "Signed transaction", - "example": "AAA...Zey8y0A", + "swift_bank_state_province_region": { "type": [ "string", "null" - ] + ], + "example": "District" }, - "spei_clabe": { - "example": "5482347403740546", + "swift_bank_postal_code": { "type": [ "string", "null" - ] + ], + "example": "11530" }, - "spei_institution_code": { - "example": "40002", - "maxLength": 5, - "minLength": 5, + "swift_ifsc_branch_code": { "type": [ "string", "null" - ] + ], + "pattern": "^[A-Z]{4}0[A-Z0-9]{6}$", + "example": "BARB0AHIMCI" }, - "spei_protocol": { - "description": "For debitcard and phonenum the spei_institution_code is required", - "enum": [ - "clabe", - "debitcard", - "phonenum" + "swift_intermediary_bank_swift_code_bic": { + "anyOf": [ + { + "type": "string", + "minLength": 8, + "maxLength": 8 + }, + { + "type": "string", + "minLength": 11, + "maxLength": 11 + }, + { + "type": "null" + } ], - "example": "clabe", - "type": [ - "string", - "null" - ] + "example": "AEIBARB1" }, - "state_province_region": { - "example": "State/Province/Region", + "swift_intermediary_bank_account_number_iban": { "type": [ "string", "null" - ] - }, - "status": { - "description": "Payout general status", - "enum": [ - "processing", - "failed", - "refunded", - "completed", - "on_hold" ], - "example": "processing", - "type": "string" + "maxLength": 34, + "example": "123456789" }, - "swift_account_holder_name": { - "example": "John Doe", - "maxLength": 50, + "swift_intermediary_bank_name": { "type": [ "string", "null" - ] + ], + "example": "Banco Regional SA" }, - "swift_account_number_iban": { - "example": "123456789", + "swift_intermediary_bank_country": { "type": [ "string", "null" - ] - }, - "swift_beneficiary_country": { + ], "enum": [ "AF", "AL", @@ -29771,2890 +28040,4350 @@ "ZW", "AX" ], - "example": "MX", + "example": "US" + }, + "sepa_iban": { "type": [ "string", "null" - ] + ], + "example": "DE89370400440532013000" }, - "swift_code_bic": { - "example": "123456789", + "sepa_beneficiary_bic": { "type": [ "string", "null" - ] + ], + "description": "BIC/SWIFT code of the beneficiary bank", + "example": "TRWIBEB1XXX" }, - "ted_bank_code": { - "example": "033", - "pattern": "^\\d{3,5}$", + "sepa_beneficiary_legal_name": { "type": [ "string", "null" - ] + ], + "maxLength": 128, + "example": "Hans Müller" }, - "ted_branch_code": { - "example": "0001", - "pattern": "^\\d{4}(-\\d)?$", + "sepa_beneficiary_address_line_1": { "type": [ "string", "null" - ] + ], + "example": "Friedrichstraße 12" }, - "ted_cpf_cnpj": { - "example": "12345678901", + "sepa_beneficiary_address_line_2": { "type": [ "string", "null" - ] + ], + "example": "Apt 4B" }, - "token": { - "description": "Check blindpay available tokens", - "enum": [ - "USDC", - "USDT", - "USDB" + "sepa_beneficiary_city": { + "type": [ + "string", + "null" ], - "example": "USDC", - "type": "string" + "example": "Berlin" }, - "total_fee_amount": { - "default": 0, - "description": "1.5 USDC", - "example": 1.5, + "sepa_beneficiary_state_province_region": { "type": [ - "number", + "string", "null" - ] + ], + "example": "Berlin" }, - "tracking_complete": { - "properties": { - "completed_at": { - "description": "Complete completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "provider_transaction_id": { - "description": "Provider-side handle for the refund transaction (e.g. Circle transaction id)", - "example": "67c12eae-b7bc-31cc-a5ef-623dcea82346", - "type": [ - "string", - "null" - ] - }, - "refund_reason": { - "description": "Reason for refund when tokens are returned to sender", - "example": "fiat_payment_failed", - "type": [ - "string", - "null" - ] - }, - "status": { - "description": "Complete status", - "enum": [ - "tokens_refunded", - "paid" - ], - "example": "tokens_refunded", - "type": [ - "string", - "null" - ] - }, - "step": { - "description": "Complete step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "example": "on_hold", - "type": "string" - }, - "transaction_hash": { - "description": "Complete transaction hash", - "example": "0x123...890", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "step" + "sepa_beneficiary_postal_code": { + "type": [ + "string", + "null" ], - "type": "object" + "example": "10117" }, - "tracking_documents": { - "properties": { - "completed_at": { - "description": "Documents completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "reviewed_by": { - "description": "Reviewer email/name", - "example": "compliance@example.com", - "type": [ - "string", - "null" - ] - }, - "status": { - "description": "Documents status", - "enum": [ - "waiting_documents", - "compliance_reviewing" - ], - "example": "waiting_documents", - "type": [ - "string", - "null" - ] - }, - "step": { - "description": "Documents step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "example": "processing", - "type": "string" - } - }, - "required": [ - "step" + "sepa_beneficiary_country": { + "type": [ + "string", + "null" + ], + "enum": [ + "AF", + "AL", + "DZ", + "AS", + "AD", + "AO", + "AI", + "AQ", + "AG", + "AR", + "AM", + "AW", + "AU", + "AT", + "AZ", + "BS", + "BH", + "BD", + "BB", + "BY", + "BE", + "BZ", + "BJ", + "BM", + "BT", + "BO", + "BQ", + "BA", + "BW", + "BV", + "BR", + "IO", + "BN", + "BG", + "BF", + "BI", + "CV", + "KH", + "CM", + "CA", + "KY", + "CF", + "TD", + "CL", + "CN", + "CX", + "CC", + "CO", + "KM", + "CD", + "CG", + "CK", + "CR", + "HR", + "CU", + "CW", + "CY", + "CZ", + "CI", + "DK", + "DJ", + "DM", + "DO", + "EC", + "EG", + "SV", + "GQ", + "ER", + "EE", + "SZ", + "ET", + "FK", + "FO", + "FJ", + "FI", + "FR", + "GF", + "PF", + "TF", + "GA", + "GM", + "GE", + "DE", + "GH", + "GI", + "GR", + "GL", + "GD", + "GP", + "GU", + "GT", + "GG", + "GN", + "GW", + "GY", + "HT", + "HM", + "VA", + "HN", + "HK", + "HU", + "IS", + "IN", + "ID", + "IR", + "IQ", + "IE", + "IM", + "IL", + "IT", + "JM", + "JP", + "JE", + "JO", + "KZ", + "KE", + "KI", + "KP", + "KR", + "KW", + "KG", + "LA", + "LV", + "LB", + "LS", + "LR", + "LY", + "LI", + "LT", + "LU", + "MO", + "MG", + "MW", + "MY", + "MV", + "ML", + "MT", + "MH", + "MQ", + "MR", + "MU", + "YT", + "MX", + "FM", + "MD", + "MC", + "MN", + "ME", + "MS", + "MA", + "MZ", + "MM", + "NA", + "NR", + "NP", + "NL", + "NC", + "NZ", + "NI", + "NE", + "NG", + "NU", + "NF", + "MP", + "NO", + "OM", + "PK", + "PW", + "PS", + "PA", + "PG", + "PY", + "PE", + "PH", + "PN", + "PL", + "PT", + "PR", + "QA", + "MK", + "RO", + "RU", + "RW", + "RE", + "BL", + "SH", + "KN", + "LC", + "MF", + "PM", + "VC", + "WS", + "SM", + "ST", + "SA", + "SN", + "RS", + "SC", + "SL", + "SG", + "SX", + "SK", + "SI", + "SB", + "SO", + "ZA", + "GS", + "SS", + "ES", + "LK", + "SD", + "SR", + "SJ", + "SE", + "CH", + "SY", + "TW", + "TJ", + "TZ", + "TH", + "TL", + "TG", + "TK", + "TO", + "TT", + "TN", + "TR", + "TM", + "TC", + "TV", + "UG", + "UA", + "AE", + "GB", + "UM", + "US", + "UY", + "UZ", + "VU", + "VE", + "VN", + "VG", + "VI", + "WF", + "EH", + "YE", + "ZM", + "ZW", + "AX" ], - "type": [ - "object", - "null" - ] + "example": "DE" }, - "tracking_liquidity": { - "properties": { - "completed_at": { - "description": "Payout transaction completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "estimated_time_of_arrival": { - "description": "Estimated time of arrival", - "enum": [ - "5_min", - "5_30_min", - "30_min", - "2_hours", - "1_business_day", - "2_business_days", - "5_business_days" - ], - "example": "1_business_day", - "type": [ - "string", - "null" - ] - }, - "provider_status": { - "description": "Payment provider status", - "enum": [ - "deposited", - "converted", - "withdrawn" - ], - "example": "deposited", - "type": [ - "string", - "null" - ] - }, - "provider_transaction_id": { - "description": "Payment provider transaction id", - "example": "0x123...890", - "type": [ - "string", - "null" - ] - }, - "step": { - "description": "Payout liquidity step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "example": "processing", - "type": "string" - } - }, - "required": [ - "step" - ], + "business_industry": { "type": [ - "object", + "string", "null" - ] - }, - "tracking_payment": { - "properties": { - "coelsa_id": { - "description": "COELSA transaction reference ID for ARS transfers (Argentine national banking system)", - "example": "1LMP68NKV46DRDYK2R7OEV", - "type": [ - "string", - "null" - ] - }, - "completed_at": { - "description": "Payment completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "end_to_end_id": { - "description": "BACEN Pix end-to-end transaction ID (govt Pix ID)", - "example": "E20018183202603311320vm6ALFpJpsS", - "type": [ - "string", - "null" - ] - }, - "estimated_time_of_arrival": { - "description": "Estimated time of arrival", - "enum": [ - "5_min", - "5_30_min", - "30_min", - "2_hours", - "1_business_day", - "2_business_days", - "5_business_days" - ], - "example": "5_min", - "type": [ - "string", - "null" - ] - }, - "provider_clearing_system": { - "description": "Clearing system that processed the payment (e.g. FED, CHIPS, ACH, SWIFT).", - "example": "FED", - "maxLength": 40, - "type": [ - "string", - "null" - ] - }, - "provider_error_reason": { - "description": "Provider error reason when payment fails (e.g. invalid_key, wrong_parameters)", - "example": "invalid_key", - "type": [ - "string", - "null" - ] - }, - "provider_imad": { - "description": "Fed Input Message Accountability Data (IMAD). Domestic Fedwire payments only; null on ACH and SWIFT.", - "example": "20260526MMQFMP2M008120", - "maxLength": 120, - "type": [ - "string", - "null" - ] - }, - "provider_integration": { - "description": "Machine-readable integration that executed the fiat leg. Unlike provider_name (a client-facing bank label), this uniquely identifies the integration \u2014 e.g. zenus vs checkbook, which share the \"JPMorgan Chase\" label.", - "enum": [ - "veem", - "zenus", - "checkbook", - "onemoney", - "bitso", - "starkbank", - "triplea", - "infinitus" - ], - "example": "zenus", - "type": [ - "string", - "null" - ] - }, - "provider_name": { - "description": "Payment provider name", - "enum": [ - "Nvio Pagos", - "Brex", - "Stark Bank", - "JPMorgan Chase", - "HSBC", - "Inter", - "JP Morgan Chase", - "Bitso", - "Citi", - "CFSB", - "Triple A Technologies", - "Portage Bank" - ], - "example": "HSBC", - "type": [ - "string", - "null" - ] - }, - "provider_reference": { - "description": "Provider (JPMorgan/Zenus) payment reference captured from the ACCOUNT.ACCOUNT booking webhook (Zenus contractSource.sourceRef). Present for some ACH/wire payouts; a bank-side reference, not the formal ACH network trace number.", - "example": "2084734238TC", - "maxLength": 120, - "type": [ - "string", - "null" - ] - }, - "provider_status": { - "description": "Payment provider status", - "enum": [ - "canceled", - "failed", - "returned", - "sent" - ], - "example": "canceled", - "type": [ - "string", - "null" - ] - }, - "provider_transaction_id": { - "description": "Payment provider transaction id", - "example": "0x123...890", - "type": [ - "string", - "null" - ] - }, - "provider_uetr": { - "description": "Unique end-to-end transaction reference (UETR). Populated once the wire is confirmed by the network; null while the payment is in flight or when the rail does not expose it (e.g. ACH).", - "example": "37d10eff-d450-4aba-a5d4-e3978f5a3343", - "maxLength": 120, - "type": [ - "string", - "null" - ] - }, - "recipient_account_number": { - "description": "Recipient account number", - "example": "1234567890", - "type": [ - "string", - "null" - ] - }, - "recipient_account_type": { - "description": "Recipient account type", - "example": "checking", - "type": [ - "string", - "null" - ] - }, - "recipient_bank_code": { - "description": "Recipient bank code", - "example": "00416968", - "type": [ - "string", - "null" - ] - }, - "recipient_branch_code": { - "description": "Recipient branch code", - "example": "0001", - "type": [ - "string", - "null" - ] - }, - "recipient_name": { - "description": "Recipient name", - "example": "John Doe", - "type": [ - "string", - "null" - ] - }, - "recipient_tax_id": { - "description": "Recipient tax id", - "example": "123.456.789-10", - "type": [ - "string", - "null" - ] - }, - "step": { - "description": "Payment step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "example": "on_hold", - "type": "string" - } - }, - "required": [ - "step" ], - "type": "object" - }, - "tracking_transaction": { - "properties": { - "completed_at": { - "description": "Payout transaction completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "ledger_in_transaction_id": { - "description": "Ledger transaction ID for the IN (crypto deposit) transaction", - "type": [ - "string", - "null" - ] - }, - "ledger_out_transaction_id": { - "description": "Ledger transaction ID for the OUT (fiat withdrawal) transaction", - "type": [ - "string", - "null" - ] - }, - "provider_error_reason": { - "description": "Provider error reason when the crypto collection fails (e.g. erc20_allowance_insufficient, ESTIMATION_ERROR: execution reverted)", - "example": "erc20_allowance_insufficient", - "type": [ - "string", - "null" - ] - }, - "provider_transaction_id": { - "description": "Provider-side handle for the on-chain leg (e.g. Circle CPN payment id).", - "example": "67c12eae-b7bc-31cc-a5ef-623dcea82346", - "type": [ - "string", - "null" - ] - }, - "status": { - "description": "Payout transaction status", - "enum": [ - "failed", - "found" - ], - "example": "failed", - "type": [ - "string", - "null" - ] - }, - "step": { - "description": "Payout transaction step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "example": "processing", - "type": "string" - }, - "transaction_hash": { - "description": "Blockchain transaction hash", - "example": "0x123...890", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "step" + "enum": [ + "111998", + "112120", + "113310", + "115114", + "541211", + "541810", + "541430", + "541715", + "541930", + "561422", + "561311", + "561612", + "561740", + "561730", + "236115", + "236220", + "237310", + "238210", + "811111", + "812111", + "812112", + "532111", + "624410", + "541922", + "811210", + "812199", + "611110", + "611310", + "611410", + "611710", + "211120", + "212114", + "221310", + "562111", + "562920", + "213112", + "522110", + "522210", + "522320", + "523150", + "523940", + "523999", + "524113", + "813110", + "813211", + "813219", + "551112", + "721110", + "722511", + "722513", + "561510", + "713110", + "713210", + "712110", + "711110", + "711211", + "621111", + "621210", + "622110", + "623110", + "621511", + "623220", + "541940", + "621399", + "621910", + "541110", + "311421", + "337121", + "322220", + "339920", + "334210", + "339930", + "312130", + "334111", + "334118", + "325412", + "339112", + "336110", + "336390", + "315990", + "313110", + "339910", + "516120", + "513130", + "512250", + "519130", + "711410", + "711510", + "531110", + "531120", + "531130", + "531190", + "531210", + "531311", + "531312", + "531320", + "531390", + "454110", + "445110", + "455110", + "457110", + "449210", + "444110", + "459210", + "459120", + "445320", + "458110", + "458210", + "458310", + "455219", + "424210", + "456110", + "446120", + "541511", + "541512", + "541519", + "518210", + "511210", + "517111", + "517112", + "517410", + "481111", + "483111", + "485210", + "488510", + "484121", + "493110", + "423430", + "423690", + "423110", + "423830", + "423840", + "423510", + "424690", + "424990", + "424410", + "424480", + "423940", + "541611", + "541618", + "541330", + "541990", + "541214", + "561499" ], - "type": "object" - }, - "transaction_document_file": { - "example": "https://example.com/image.png", - "format": "uri", - "type": [ - "string", - "null" - ] + "example": "541511" }, - "transaction_document_id": { - "example": "1234567890", - "maxLength": 512, + "phone_number": { "type": [ "string", "null" - ] - }, - "transaction_document_type": { - "enum": [ - "invoice", - "purchase_order", - "delivery_slip", - "contract", - "customs_declaration", - "bill_of_lading", - "others" ], - "example": "invoice", - "type": [ - "string", - "null" - ] - }, - "transaction_fee_amount": { - "description": "Transaction fee in cents (percentage-based fee)", - "example": 100, - "type": [ - "number", - "null" - ] + "example": "+13055555555" }, - "transfers_account": { - "example": "BM123123123123", + "tax_id": { "type": [ "string", "null" - ] - }, - "transfers_type": { - "enum": [ - "CVU", - "CBU", - "ALIAS" ], - "example": "CVU", - "type": [ - "string", - "null" - ] + "maxLength": 32, + "example": "536804398" }, - "type": { - "enum": [ - "wire", - "ach", - "pix", - "pix_safe", - "ted", - "spei_bitso", - "transfers_bitso", - "ach_cop_bitso", - "international_swift", - "rtp", - "sepa" + "date_of_birth": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "string" + }, + { + "type": "null" + } ], - "example": "wire", - "type": "string" - }, - "updated_at": { - "example": "2021-01-01T00:00:00Z", - "format": "date-time", - "type": [ - "string", - "null" - ] + "example": "1998-01-01T00:00:00Z" } }, "required": [ - "customer_id", - "id", - "status", - "sender_wallet_address", - "quote_id", - "instance_id", - "tracking_transaction", - "tracking_payment", - "tracking_complete", - "network", - "token", - "sender_amount", - "receiver_amount", - "commercial_quotation", - "blindpay_quotation", - "currency", - "name", - "type" - ], - "type": "object" + "type", + "name" + ] }, - "PayoutPartnerFeeWebhookOut": { + "VirtualAccountOut": { + "type": "object", "properties": { - "bank_account_id": { - "example": "ba_000000000000", - "maxLength": 15, - "minLength": 15, - "type": [ - "string", - "null" - ] - }, - "billing_fee_amount": { - "description": "Billing fee in cents (charged via invoice at the end of the month)", - "example": 50, - "type": [ - "number", - "null" - ] - }, - "customer_id": { - "example": "re_000000000000", - "maxLength": 15, - "minLength": 15, - "type": [ - "string", - "null" - ] - }, "id": { - "example": "pa_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - }, - "offramp_wallet_id": { - "example": "ow_000000000000", "maxLength": 15, - "minLength": 15, + "example": "va_000000000000" + }, + "banking_partner": { "type": [ "string", "null" - ] - }, - "partner_fee": { - "default": 0, - "description": "Payout partner fee amount in cents (can be negative for rebates)", - "example": -25000, - "minimum": 0, - "type": "integer" - }, - "sender_wallet_address": { - "description": "Payout wallet address", - "example": "0x123...890", - "type": "string" - }, - "status": { - "description": "Payout general status", - "enum": [ - "processing", - "failed", - "refunded", - "completed", - "on_hold" ], - "example": "processing", - "type": "string" - }, - "tracking_complete": { - "properties": { - "completed_at": { - "description": "Complete completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "provider_transaction_id": { - "description": "Provider-side handle for the refund transaction (e.g. Circle transaction id)", - "example": "67c12eae-b7bc-31cc-a5ef-623dcea82346", - "type": [ - "string", - "null" - ] - }, - "refund_reason": { - "description": "Reason for refund when tokens are returned to sender", - "example": "fiat_payment_failed", - "type": [ - "string", - "null" - ] - }, - "status": { - "description": "Complete status", - "enum": [ - "tokens_refunded", - "paid" - ], - "example": "tokens_refunded", - "type": [ - "string", - "null" - ] - }, - "step": { - "description": "Complete step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "example": "on_hold", - "type": "string" - }, - "transaction_hash": { - "description": "Complete transaction hash", - "example": "0x123...890", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "step" + "enum": [ + "jpmorgan", + "citi", + "hsbc", + "cfsb", + "portage" ], - "type": "object" + "example": "jpmorgan" }, - "tracking_documents": { - "properties": { - "completed_at": { - "description": "Documents completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "reviewed_by": { - "description": "Reviewer email/name", - "example": "compliance@example.com", - "type": [ - "string", - "null" - ] - }, - "status": { - "description": "Documents status", - "enum": [ - "waiting_documents", - "compliance_reviewing" - ], - "example": "waiting_documents", - "type": [ - "string", - "null" - ] - }, - "step": { - "description": "Documents step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "example": "processing", - "type": "string" - } - }, - "required": [ - "step" - ], + "kyc_status": { "type": [ - "object", + "string", "null" - ] - }, - "tracking_liquidity": { - "properties": { - "completed_at": { - "description": "Payout transaction completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "estimated_time_of_arrival": { - "description": "Estimated time of arrival", - "enum": [ - "5_min", - "5_30_min", - "30_min", - "2_hours", - "1_business_day", - "2_business_days", - "5_business_days" - ], - "example": "1_business_day", - "type": [ - "string", - "null" - ] - }, - "provider_status": { - "description": "Payment provider status", - "enum": [ - "deposited", - "converted", - "withdrawn" - ], - "example": "deposited", - "type": [ - "string", - "null" - ] - }, - "provider_transaction_id": { - "description": "Payment provider transaction id", - "example": "0x123...890", - "type": [ - "string", - "null" - ] - }, - "step": { - "description": "Payout liquidity step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "example": "processing", - "type": "string" - } - }, - "required": [ - "step" ], - "type": [ - "object", - "null" - ] - }, - "tracking_payment": { - "properties": { - "coelsa_id": { - "description": "COELSA transaction reference ID for ARS transfers (Argentine national banking system)", - "example": "1LMP68NKV46DRDYK2R7OEV", - "type": [ - "string", - "null" - ] - }, - "completed_at": { - "description": "Payment completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "end_to_end_id": { - "description": "BACEN Pix end-to-end transaction ID (govt Pix ID)", - "example": "E20018183202603311320vm6ALFpJpsS", - "type": [ - "string", - "null" - ] - }, - "estimated_time_of_arrival": { - "description": "Estimated time of arrival", - "enum": [ - "5_min", - "5_30_min", - "30_min", - "2_hours", - "1_business_day", - "2_business_days", - "5_business_days" - ], - "example": "5_min", - "type": [ - "string", - "null" - ] - }, - "provider_clearing_system": { - "description": "Clearing system that processed the payment (e.g. FED, CHIPS, ACH, SWIFT).", - "example": "FED", - "maxLength": 40, - "type": [ - "string", - "null" - ] - }, - "provider_error_reason": { - "description": "Provider error reason when payment fails (e.g. invalid_key, wrong_parameters)", - "example": "invalid_key", - "type": [ - "string", - "null" - ] - }, - "provider_imad": { - "description": "Fed Input Message Accountability Data (IMAD). Domestic Fedwire payments only; null on ACH and SWIFT.", - "example": "20260526MMQFMP2M008120", - "maxLength": 120, - "type": [ - "string", - "null" - ] - }, - "provider_integration": { - "description": "Machine-readable integration that executed the fiat leg. Unlike provider_name (a client-facing bank label), this uniquely identifies the integration \u2014 e.g. zenus vs checkbook, which share the \"JPMorgan Chase\" label.", - "enum": [ - "veem", - "zenus", - "checkbook", - "onemoney", - "bitso", - "starkbank", - "triplea", - "infinitus" - ], - "example": "zenus", - "type": [ - "string", - "null" - ] - }, - "provider_name": { - "description": "Payment provider name", - "enum": [ - "Nvio Pagos", - "Brex", - "Stark Bank", - "JPMorgan Chase", - "HSBC", - "Inter", - "JP Morgan Chase", - "Bitso", - "Citi", - "CFSB", - "Triple A Technologies", - "Portage Bank" - ], - "example": "HSBC", + "enum": [ + "verifying", + "approved", + "rejected", + "deprecated", + "pending_review", + "awaiting_contract", + "compliance_request", + "approved_rfi" + ], + "example": "approved" + }, + "us": { + "type": "object", + "properties": { + "ach": { "type": [ - "string", + "object", "null" + ], + "properties": { + "routing_number": { + "type": "string", + "example": "123456789" + }, + "account_number": { + "type": "string", + "example": "123456789" + } + }, + "required": [ + "routing_number", + "account_number" ] }, - "provider_reference": { - "description": "Provider (JPMorgan/Zenus) payment reference captured from the ACCOUNT.ACCOUNT booking webhook (Zenus contractSource.sourceRef). Present for some ACH/wire payouts; a bank-side reference, not the formal ACH network trace number.", - "example": "2084734238TC", - "maxLength": 120, - "type": [ - "string", - "null" + "wire": { + "type": "object", + "properties": { + "routing_number": { + "type": "string", + "example": "123456789" + }, + "account_number": { + "type": "string", + "example": "123456789" + } + }, + "required": [ + "routing_number", + "account_number" ] }, - "provider_status": { - "description": "Payment provider status", - "enum": [ - "canceled", - "failed", - "returned", - "sent" - ], - "example": "canceled", + "rtp": { "type": [ - "string", + "object", "null" + ], + "properties": { + "routing_number": { + "type": "string", + "example": "123456789" + }, + "account_number": { + "type": "string", + "example": "123456789" + } + }, + "required": [ + "routing_number", + "account_number" ] }, - "provider_transaction_id": { - "description": "Payment provider transaction id", - "example": "0x123...890", + "swift_bic_code": { "type": [ "string", "null" - ] + ], + "example": "TCCLGB3L" }, - "provider_uetr": { - "description": "Unique end-to-end transaction reference (UETR). Populated once the wire is confirmed by the network; null while the payment is in flight or when the rail does not expose it (e.g. ACH).", - "example": "37d10eff-d450-4aba-a5d4-e3978f5a3343", - "maxLength": 120, + "swift_account_number": { "type": [ "string", "null" - ] + ], + "example": "GB50TCCL04140449730892" }, - "recipient_account_number": { - "description": "Recipient account number", - "example": "1234567890", + "account_type": { "type": [ "string", "null" - ] + ], + "enum": [ + "Personal checking", + "Business checking" + ], + "default": "Business checking", + "example": "Business checking" }, - "recipient_account_type": { - "description": "Recipient account type", - "example": "checking", + "beneficiary": { "type": [ - "string", + "object", "null" + ], + "properties": { + "name": { + "type": "string", + "example": "Customer Name" + }, + "address_line_1": { + "type": "string", + "example": "8 The Green, #19364" + }, + "address_line_2": { + "type": "string", + "example": "Dover, DE 19901" + } + }, + "required": [ + "name", + "address_line_1", + "address_line_2" ] }, - "recipient_bank_code": { - "description": "Recipient bank code", - "example": "00416968", + "receiving_bank": { "type": [ - "string", + "object", "null" + ], + "properties": { + "name": { + "type": "string", + "example": "JPMorgan Chase" + }, + "address_line_1": { + "type": "string", + "example": "270 Park Ave" + }, + "address_line_2": { + "type": [ + "string", + "null" + ], + "example": "New York, NY, 10017-2070" + } + }, + "required": [ + "name", + "address_line_1" ] }, - "recipient_branch_code": { - "description": "Recipient branch code", - "example": "0001", + "swift_receiving_bank": { "type": [ - "string", + "object", "null" - ] + ], + "properties": { + "name": { + "type": [ + "string", + "null" + ], + "example": "JPMorgan Chase" + }, + "address_line_1": { + "type": [ + "string", + "null" + ], + "example": "270 Park Ave" + }, + "address_line_2": { + "type": [ + "string", + "null" + ], + "example": "New York, NY, 10017-2070" + } + } }, - "recipient_name": { - "description": "Recipient name", - "example": "John Doe", + "swift_intermediary_bank": { "type": [ - "string", + "object", "null" - ] + ], + "properties": { + "name": { + "type": [ + "string", + "null" + ], + "example": "JP Morgan Chase NA" + }, + "swift_code_bic": { + "type": [ + "string", + "null" + ], + "example": "CHASUS33" + }, + "routing_number": { + "type": [ + "string", + "null" + ], + "example": "021000021" + }, + "address_line_1": { + "type": [ + "string", + "null" + ], + "example": "270 Park Ave" + }, + "address_line_2": { + "type": [ + "string", + "null" + ], + "example": "New York, NY, 10017-2070" + } + } + } + }, + "required": [ + "wire" + ] + }, + "token": { + "type": "string", + "enum": [ + "USDC", + "USDT", + "USDB" + ], + "example": "USDC" + }, + "blockchain_wallet_id": { + "type": [ + "string", + "null" + ], + "minLength": 15, + "maxLength": 15, + "example": "bw_000000000000" + }, + "blockchain_wallet": { + "type": [ + "object", + "null" + ], + "properties": { + "network": { + "type": "string", + "enum": [ + "base", + "sepolia", + "arbitrum_sepolia", + "base_sepolia", + "arbitrum", + "polygon", + "polygon_amoy", + "ethereum", + "stellar", + "stellar_testnet", + "tron", + "solana", + "solana_devnet" + ], + "example": "polygon" }, - "recipient_tax_id": { - "description": "Recipient tax id", - "example": "123.456.789-10", + "address": { "type": [ "string", "null" - ] - }, - "step": { - "description": "Payment step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" ], - "example": "on_hold", - "type": "string" + "example": "0xDD6a3aD0949396e57C7738ba8FC1A46A5a1C372C" } }, "required": [ - "step" + "network" + ] + }, + "customer_id": { + "type": [ + "string", + "null" + ], + "minLength": 15, + "maxLength": 15, + "example": "re_000000000000" + } + }, + "required": [ + "id", + "banking_partner", + "kyc_status", + "us", + "token" + ] + }, + "CreateVirtualAccountIn": { + "type": "object", + "properties": { + "banking_partner": { + "type": "string", + "enum": [ + "jpmorgan", + "citi", + "hsbc", + "cfsb", + "portage" + ], + "example": "jpmorgan" + }, + "token": { + "type": "string", + "enum": [ + "USDC", + "USDT", + "USDB" + ], + "example": "USDC" + }, + "blockchain_wallet_id": { + "type": "string", + "minLength": 15, + "maxLength": 15 + }, + "sole_proprietor_doc_type": { + "type": [ + "string", + "null" + ], + "enum": [ + "master_service_agreement", + "salary_slip", + "bank_statement" + ], + "example": "master_service_agreement" + }, + "sole_proprietor_doc_file": { + "type": [ + "string", + "null" + ], + "format": "uri", + "example": "https://example.com/document.pdf" + } + }, + "required": [ + "banking_partner", + "token", + "blockchain_wallet_id" + ] + }, + "UpdateVirtualAccountIn": { + "type": "object", + "properties": { + "token": { + "type": "string", + "enum": [ + "USDC", + "USDT", + "USDB" + ], + "example": "USDC" + }, + "blockchain_wallet_id": { + "type": "string", + "minLength": 15, + "maxLength": 15 + } + }, + "required": [ + "token", + "blockchain_wallet_id" + ] + }, + "CreateCustomerIn": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "individual", + "business" + ], + "example": "individual" + }, + "kyc_type": { + "type": "string", + "enum": [ + "light", + "standard", + "enhanced" + ], + "example": "standard" + }, + "email": { + "type": "string", + "format": "email", + "example": "email@example.com" + }, + "tax_id": { + "type": [ + "string", + "null" + ], + "example": "536804398" + }, + "address_line_1": { + "type": [ + "string", + "null" + ], + "example": "738 Plain St" + }, + "address_line_2": { + "type": [ + "string", + "null" + ], + "example": "Building 22" + }, + "city": { + "type": [ + "string", + "null" + ], + "example": "Marshfield" + }, + "state_province_region": { + "type": [ + "string", + "null" + ], + "example": "MA" + }, + "country": { + "type": "string", + "enum": [ + "AF", + "AL", + "DZ", + "AS", + "AD", + "AO", + "AI", + "AQ", + "AG", + "AR", + "AM", + "AW", + "AU", + "AT", + "AZ", + "BS", + "BH", + "BD", + "BB", + "BY", + "BE", + "BZ", + "BJ", + "BM", + "BT", + "BO", + "BQ", + "BA", + "BW", + "BV", + "BR", + "IO", + "BN", + "BG", + "BF", + "BI", + "CV", + "KH", + "CM", + "CA", + "KY", + "CF", + "TD", + "CL", + "CN", + "CX", + "CC", + "CO", + "KM", + "CD", + "CG", + "CK", + "CR", + "HR", + "CU", + "CW", + "CY", + "CZ", + "CI", + "DK", + "DJ", + "DM", + "DO", + "EC", + "EG", + "SV", + "GQ", + "ER", + "EE", + "SZ", + "ET", + "FK", + "FO", + "FJ", + "FI", + "FR", + "GF", + "PF", + "TF", + "GA", + "GM", + "GE", + "DE", + "GH", + "GI", + "GR", + "GL", + "GD", + "GP", + "GU", + "GT", + "GG", + "GN", + "GW", + "GY", + "HT", + "HM", + "VA", + "HN", + "HK", + "HU", + "IS", + "IN", + "ID", + "IR", + "IQ", + "IE", + "IM", + "IL", + "IT", + "JM", + "JP", + "JE", + "JO", + "KZ", + "KE", + "KI", + "KP", + "KR", + "KW", + "KG", + "LA", + "LV", + "LB", + "LS", + "LR", + "LY", + "LI", + "LT", + "LU", + "MO", + "MG", + "MW", + "MY", + "MV", + "ML", + "MT", + "MH", + "MQ", + "MR", + "MU", + "YT", + "MX", + "FM", + "MD", + "MC", + "MN", + "ME", + "MS", + "MA", + "MZ", + "MM", + "NA", + "NR", + "NP", + "NL", + "NC", + "NZ", + "NI", + "NE", + "NG", + "NU", + "NF", + "MP", + "NO", + "OM", + "PK", + "PW", + "PS", + "PA", + "PG", + "PY", + "PE", + "PH", + "PN", + "PL", + "PT", + "PR", + "QA", + "MK", + "RO", + "RU", + "RW", + "RE", + "BL", + "SH", + "KN", + "LC", + "MF", + "PM", + "VC", + "WS", + "SM", + "ST", + "SA", + "SN", + "RS", + "SC", + "SL", + "SG", + "SX", + "SK", + "SI", + "SB", + "SO", + "ZA", + "GS", + "SS", + "ES", + "LK", + "SD", + "SR", + "SJ", + "SE", + "CH", + "SY", + "TW", + "TJ", + "TZ", + "TH", + "TL", + "TG", + "TK", + "TO", + "TT", + "TN", + "TR", + "TM", + "TC", + "TV", + "UG", + "UA", + "AE", + "GB", + "UM", + "US", + "UY", + "UZ", + "VU", + "VE", + "VN", + "VG", + "VI", + "WF", + "EH", + "YE", + "ZM", + "ZW", + "AX" ], - "type": "object" + "example": "US" }, - "tracking_transaction": { - "properties": { - "completed_at": { - "description": "Payout transaction completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "ledger_in_transaction_id": { - "description": "Ledger transaction ID for the IN (crypto deposit) transaction", - "type": [ - "string", - "null" - ] - }, - "ledger_out_transaction_id": { - "description": "Ledger transaction ID for the OUT (fiat withdrawal) transaction", - "type": [ - "string", - "null" - ] - }, - "provider_error_reason": { - "description": "Provider error reason when the crypto collection fails (e.g. erc20_allowance_insufficient, ESTIMATION_ERROR: execution reverted)", - "example": "erc20_allowance_insufficient", - "type": [ - "string", - "null" - ] - }, - "provider_transaction_id": { - "description": "Provider-side handle for the on-chain leg (e.g. Circle CPN payment id).", - "example": "67c12eae-b7bc-31cc-a5ef-623dcea82346", - "type": [ - "string", - "null" - ] - }, - "status": { - "description": "Payout transaction status", - "enum": [ - "failed", - "found" - ], - "example": "failed", - "type": [ - "string", - "null" - ] + "postal_code": { + "type": [ + "string", + "null" + ], + "example": "02050" + }, + "ip_address": { + "type": [ + "string", + "null" + ], + "format": "ip", + "example": "127.0.0.1" + }, + "latitude": { + "type": [ + "number", + "null" + ], + "minimum": -90, + "maximum": 90, + "description": "Optional geolocation latitude collected from the customer. Forwarded to AiPrise and SEON for fraud analysis.", + "example": 37.7749 + }, + "longitude": { + "type": [ + "number", + "null" + ], + "minimum": -180, + "maximum": 180, + "description": "Optional geolocation longitude collected from the customer. Forwarded to AiPrise and SEON for fraud analysis.", + "example": -122.4194 + }, + "image_url": { + "type": [ + "string", + "null" + ], + "format": "uri", + "example": "https://example.com/image.png" + }, + "phone_number": { + "type": [ + "string", + "null" + ], + "example": "+13055555555" + }, + "proof_of_address_doc_type": { + "type": [ + "string", + "null" + ], + "enum": [ + "UTILITY_BILL", + "BANK_STATEMENT", + "RENTAL_AGREEMENT", + "TAX_DOCUMENT", + "GOVERNMENT_CORRESPONDENCE" + ], + "example": "UTILITY_BILL" + }, + "proof_of_address_doc_file": { + "type": [ + "string", + "null" + ], + "format": "uri", + "description": "Please upload one document that serve as proof of address, this needs to be the same physical address as the one provided above. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", + "example": "https://example.com/image.png" + }, + "first_name": { + "type": [ + "string", + "null" + ], + "example": "John" + }, + "last_name": { + "type": [ + "string", + "null" + ], + "example": "Doe" + }, + "date_of_birth": { + "anyOf": [ + { + "type": "string", + "format": "date-time" }, - "step": { - "description": "Payout transaction step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "example": "processing", + { "type": "string" }, - "transaction_hash": { - "description": "Blockchain transaction hash", - "example": "0x123...890", - "type": [ - "string", - "null" - ] + { + "type": "null" } - }, - "required": [ - "step" ], - "type": "object" + "example": "1998-01-01T00:00:00Z" + }, + "id_doc_country": { + "type": [ + "string", + "null" + ], + "enum": [ + "AF", + "AL", + "DZ", + "AS", + "AD", + "AO", + "AI", + "AQ", + "AG", + "AR", + "AM", + "AW", + "AU", + "AT", + "AZ", + "BS", + "BH", + "BD", + "BB", + "BY", + "BE", + "BZ", + "BJ", + "BM", + "BT", + "BO", + "BQ", + "BA", + "BW", + "BV", + "BR", + "IO", + "BN", + "BG", + "BF", + "BI", + "CV", + "KH", + "CM", + "CA", + "KY", + "CF", + "TD", + "CL", + "CN", + "CX", + "CC", + "CO", + "KM", + "CD", + "CG", + "CK", + "CR", + "HR", + "CU", + "CW", + "CY", + "CZ", + "CI", + "DK", + "DJ", + "DM", + "DO", + "EC", + "EG", + "SV", + "GQ", + "ER", + "EE", + "SZ", + "ET", + "FK", + "FO", + "FJ", + "FI", + "FR", + "GF", + "PF", + "TF", + "GA", + "GM", + "GE", + "DE", + "GH", + "GI", + "GR", + "GL", + "GD", + "GP", + "GU", + "GT", + "GG", + "GN", + "GW", + "GY", + "HT", + "HM", + "VA", + "HN", + "HK", + "HU", + "IS", + "IN", + "ID", + "IR", + "IQ", + "IE", + "IM", + "IL", + "IT", + "JM", + "JP", + "JE", + "JO", + "KZ", + "KE", + "KI", + "KP", + "KR", + "KW", + "KG", + "LA", + "LV", + "LB", + "LS", + "LR", + "LY", + "LI", + "LT", + "LU", + "MO", + "MG", + "MW", + "MY", + "MV", + "ML", + "MT", + "MH", + "MQ", + "MR", + "MU", + "YT", + "MX", + "FM", + "MD", + "MC", + "MN", + "ME", + "MS", + "MA", + "MZ", + "MM", + "NA", + "NR", + "NP", + "NL", + "NC", + "NZ", + "NI", + "NE", + "NG", + "NU", + "NF", + "MP", + "NO", + "OM", + "PK", + "PW", + "PS", + "PA", + "PG", + "PY", + "PE", + "PH", + "PN", + "PL", + "PT", + "PR", + "QA", + "MK", + "RO", + "RU", + "RW", + "RE", + "BL", + "SH", + "KN", + "LC", + "MF", + "PM", + "VC", + "WS", + "SM", + "ST", + "SA", + "SN", + "RS", + "SC", + "SL", + "SG", + "SX", + "SK", + "SI", + "SB", + "SO", + "ZA", + "GS", + "SS", + "ES", + "LK", + "SD", + "SR", + "SJ", + "SE", + "CH", + "SY", + "TW", + "TJ", + "TZ", + "TH", + "TL", + "TG", + "TK", + "TO", + "TT", + "TN", + "TR", + "TM", + "TC", + "TV", + "UG", + "UA", + "AE", + "GB", + "UM", + "US", + "UY", + "UZ", + "VU", + "VE", + "VN", + "VG", + "VI", + "WF", + "EH", + "YE", + "ZM", + "ZW", + "AX" + ], + "example": "BR" }, - "transaction_fee_amount": { - "description": "Transaction fee in cents (percentage-based fee)", - "example": 100, + "id_doc_type": { "type": [ - "number", + "string", "null" - ] - }, - "webhook_event": { + ], "enum": [ - "payout.partnerFee" + "PASSPORT", + "ID_CARD", + "DRIVERS" ], - "type": "string" - } - }, - "required": [ - "webhook_event", - "id", - "status", - "sender_wallet_address", - "tracking_complete", - "tracking_payment", - "tracking_transaction" - ], - "type": "object" - }, - "PayoutUpdateWebhookOut": { - "properties": { - "bank_account_id": { - "example": "ba_000000000000", - "maxLength": 15, - "minLength": 15, + "example": "PASSPORT" + }, + "id_doc_front_file": { "type": [ "string", "null" - ] + ], + "format": "uri", + "description": "Only image files are accepted (.jpg, .jpeg, .png)", + "example": "https://example.com/image.png" }, - "billing_fee_amount": { - "description": "Billing fee in cents (charged via invoice at the end of the month)", - "example": 50, + "id_doc_back_file": { "type": [ - "number", + "string", "null" - ] + ], + "format": "uri", + "description": "Only image files are accepted (.jpg, .jpeg, .png)", + "example": "https://example.com/image.png" }, - "customer_id": { - "example": "re_000000000000", - "maxLength": 15, - "minLength": 15, + "legal_name": { "type": [ "string", "null" - ] - }, - "id": { - "example": "pa_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" + ], + "example": "Company Name Inc." }, - "offramp_wallet_id": { - "example": "ow_000000000000", - "maxLength": 15, - "minLength": 15, + "alternate_name": { "type": [ "string", "null" - ] - }, - "partner_fee": { - "default": 0, - "description": "Payout partner fee amount in cents (can be negative for rebates)", - "example": -25000, - "minimum": 0, - "type": "integer" - }, - "sender_wallet_address": { - "description": "Payout wallet address", - "example": "0x123...890", - "type": "string" - }, - "status": { - "description": "Payout general status", - "enum": [ - "processing", - "failed", - "refunded", - "completed", - "on_hold" ], - "example": "processing", - "type": "string" + "example": "Company Name Inc." }, - "tracking_complete": { - "properties": { - "completed_at": { - "description": "Complete completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "provider_transaction_id": { - "description": "Provider-side handle for the refund transaction (e.g. Circle transaction id)", - "example": "67c12eae-b7bc-31cc-a5ef-623dcea82346", - "type": [ - "string", - "null" - ] - }, - "refund_reason": { - "description": "Reason for refund when tokens are returned to sender", - "example": "fiat_payment_failed", - "type": [ - "string", - "null" - ] - }, - "status": { - "description": "Complete status", - "enum": [ - "tokens_refunded", - "paid" - ], - "example": "tokens_refunded", - "type": [ - "string", - "null" - ] + "formation_date": { + "anyOf": [ + { + "type": "string", + "format": "date-time" }, - "step": { - "description": "Complete step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "example": "on_hold", + { "type": "string" }, - "transaction_hash": { - "description": "Complete transaction hash", - "example": "0x123...890", - "type": [ - "string", - "null" - ] + { + "type": "null" } - }, - "required": [ - "step" ], - "type": "object" + "example": "1998-01-01T00:00:00Z", + "format": "date-time" }, - "tracking_documents": { - "properties": { - "completed_at": { - "description": "Documents completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "reviewed_by": { - "description": "Reviewer email/name", - "example": "compliance@example.com", - "type": [ - "string", - "null" - ] - }, - "status": { - "description": "Documents status", - "enum": [ - "waiting_documents", - "compliance_reviewing" - ], - "example": "waiting_documents", - "type": [ - "string", - "null" - ] - }, - "step": { - "description": "Documents step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "example": "processing", - "type": "string" - } - }, - "required": [ - "step" - ], + "website": { "type": [ - "object", + "string", "null" - ] - }, - "tracking_liquidity": { - "properties": { - "completed_at": { - "description": "Payout transaction completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "estimated_time_of_arrival": { - "description": "Estimated time of arrival", - "enum": [ - "5_min", - "5_30_min", - "30_min", - "2_hours", - "1_business_day", - "2_business_days", - "5_business_days" - ], - "example": "1_business_day", - "type": [ - "string", - "null" - ] - }, - "provider_status": { - "description": "Payment provider status", - "enum": [ - "deposited", - "converted", - "withdrawn" - ], - "example": "deposited", - "type": [ - "string", - "null" - ] - }, - "provider_transaction_id": { - "description": "Payment provider transaction id", - "example": "0x123...890", - "type": [ - "string", - "null" - ] - }, - "step": { - "description": "Payout liquidity step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "example": "processing", - "type": "string" - } - }, - "required": [ - "step" ], + "format": "uri", + "example": "https://example.com" + }, + "owners": { "type": [ - "object", + "array", "null" - ] - }, - "tracking_payment": { - "properties": { - "coelsa_id": { - "description": "COELSA transaction reference ID for ARS transfers (Argentine national banking system)", - "example": "1LMP68NKV46DRDYK2R7OEV", - "type": [ - "string", - "null" - ] - }, - "completed_at": { - "description": "Payment completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "end_to_end_id": { - "description": "BACEN Pix end-to-end transaction ID (govt Pix ID)", - "example": "E20018183202603311320vm6ALFpJpsS", - "type": [ - "string", - "null" - ] - }, - "estimated_time_of_arrival": { - "description": "Estimated time of arrival", - "enum": [ - "5_min", - "5_30_min", - "30_min", - "2_hours", - "1_business_day", - "2_business_days", - "5_business_days" - ], - "example": "5_min", - "type": [ - "string", - "null" - ] - }, - "provider_clearing_system": { - "description": "Clearing system that processed the payment (e.g. FED, CHIPS, ACH, SWIFT).", - "example": "FED", - "maxLength": 40, - "type": [ - "string", - "null" - ] - }, - "provider_error_reason": { - "description": "Provider error reason when payment fails (e.g. invalid_key, wrong_parameters)", - "example": "invalid_key", - "type": [ - "string", - "null" - ] - }, - "provider_imad": { - "description": "Fed Input Message Accountability Data (IMAD). Domestic Fedwire payments only; null on ACH and SWIFT.", - "example": "20260526MMQFMP2M008120", - "maxLength": 120, - "type": [ - "string", - "null" - ] - }, - "provider_integration": { - "description": "Machine-readable integration that executed the fiat leg. Unlike provider_name (a client-facing bank label), this uniquely identifies the integration \u2014 e.g. zenus vs checkbook, which share the \"JPMorgan Chase\" label.", - "enum": [ - "veem", - "zenus", - "checkbook", - "onemoney", - "bitso", - "starkbank", - "triplea", - "infinitus" - ], - "example": "zenus", - "type": [ - "string", - "null" - ] - }, - "provider_name": { - "description": "Payment provider name", - "enum": [ - "Nvio Pagos", - "Brex", - "Stark Bank", - "JPMorgan Chase", - "HSBC", - "Inter", - "JP Morgan Chase", - "Bitso", - "Citi", - "CFSB", - "Triple A Technologies", - "Portage Bank" - ], - "example": "HSBC", - "type": [ - "string", - "null" - ] - }, - "provider_reference": { - "description": "Provider (JPMorgan/Zenus) payment reference captured from the ACCOUNT.ACCOUNT booking webhook (Zenus contractSource.sourceRef). Present for some ACH/wire payouts; a bank-side reference, not the formal ACH network trace number.", - "example": "2084734238TC", - "maxLength": 120, - "type": [ - "string", - "null" - ] - }, - "provider_status": { - "description": "Payment provider status", - "enum": [ - "canceled", - "failed", - "returned", - "sent" - ], - "example": "canceled", - "type": [ - "string", - "null" - ] - }, - "provider_transaction_id": { - "description": "Payment provider transaction id", - "example": "0x123...890", - "type": [ - "string", - "null" - ] - }, - "provider_uetr": { - "description": "Unique end-to-end transaction reference (UETR). Populated once the wire is confirmed by the network; null while the payment is in flight or when the rail does not expose it (e.g. ACH).", - "example": "37d10eff-d450-4aba-a5d4-e3978f5a3343", - "maxLength": 120, - "type": [ - "string", - "null" - ] - }, - "recipient_account_number": { - "description": "Recipient account number", - "example": "1234567890", - "type": [ - "string", - "null" - ] - }, - "recipient_account_type": { - "description": "Recipient account type", - "example": "checking", - "type": [ - "string", - "null" - ] - }, - "recipient_bank_code": { - "description": "Recipient bank code", - "example": "00416968", - "type": [ - "string", - "null" - ] - }, - "recipient_branch_code": { - "description": "Recipient branch code", - "example": "0001", - "type": [ - "string", - "null" - ] - }, - "recipient_name": { - "description": "Recipient name", - "example": "John Doe", - "type": [ - "string", - "null" - ] - }, - "recipient_tax_id": { - "description": "Recipient tax id", - "example": "123.456.789-10", - "type": [ - "string", - "null" - ] + ], + "items": { + "type": "object", + "properties": { + "role": { + "type": "string", + "enum": [ + "beneficial_controlling", + "beneficial_owner", + "controlling_person" + ], + "description": "A beneficial owner is someone who directly or indirectly owns 25% or more of your business. A controlling person is someone with significant responsibility to control, manage or direct your business (typically a CEO, senior executive officer or equivalent).", + "example": "beneficial_owner" + }, + "first_name": { + "type": "string", + "minLength": 1, + "example": "John" + }, + "last_name": { + "type": "string", + "minLength": 1, + "example": "Doe" + }, + "date_of_birth": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "string" + } + ], + "example": "1998-01-01T00:00:00Z" + }, + "tax_id": { + "type": "string", + "example": "536804398" + }, + "address_line_1": { + "type": "string", + "example": "738 Plain St" + }, + "address_line_2": { + "type": [ + "string", + "null" + ], + "example": "Building 22" + }, + "city": { + "type": "string", + "example": "Marshfield" + }, + "state_province_region": { + "type": "string", + "example": "MA" + }, + "country": { + "type": "string", + "enum": [ + "AF", + "AL", + "DZ", + "AS", + "AD", + "AO", + "AI", + "AQ", + "AG", + "AR", + "AM", + "AW", + "AU", + "AT", + "AZ", + "BS", + "BH", + "BD", + "BB", + "BY", + "BE", + "BZ", + "BJ", + "BM", + "BT", + "BO", + "BQ", + "BA", + "BW", + "BV", + "BR", + "IO", + "BN", + "BG", + "BF", + "BI", + "CV", + "KH", + "CM", + "CA", + "KY", + "CF", + "TD", + "CL", + "CN", + "CX", + "CC", + "CO", + "KM", + "CD", + "CG", + "CK", + "CR", + "HR", + "CU", + "CW", + "CY", + "CZ", + "CI", + "DK", + "DJ", + "DM", + "DO", + "EC", + "EG", + "SV", + "GQ", + "ER", + "EE", + "SZ", + "ET", + "FK", + "FO", + "FJ", + "FI", + "FR", + "GF", + "PF", + "TF", + "GA", + "GM", + "GE", + "DE", + "GH", + "GI", + "GR", + "GL", + "GD", + "GP", + "GU", + "GT", + "GG", + "GN", + "GW", + "GY", + "HT", + "HM", + "VA", + "HN", + "HK", + "HU", + "IS", + "IN", + "ID", + "IR", + "IQ", + "IE", + "IM", + "IL", + "IT", + "JM", + "JP", + "JE", + "JO", + "KZ", + "KE", + "KI", + "KP", + "KR", + "KW", + "KG", + "LA", + "LV", + "LB", + "LS", + "LR", + "LY", + "LI", + "LT", + "LU", + "MO", + "MG", + "MW", + "MY", + "MV", + "ML", + "MT", + "MH", + "MQ", + "MR", + "MU", + "YT", + "MX", + "FM", + "MD", + "MC", + "MN", + "ME", + "MS", + "MA", + "MZ", + "MM", + "NA", + "NR", + "NP", + "NL", + "NC", + "NZ", + "NI", + "NE", + "NG", + "NU", + "NF", + "MP", + "NO", + "OM", + "PK", + "PW", + "PS", + "PA", + "PG", + "PY", + "PE", + "PH", + "PN", + "PL", + "PT", + "PR", + "QA", + "MK", + "RO", + "RU", + "RW", + "RE", + "BL", + "SH", + "KN", + "LC", + "MF", + "PM", + "VC", + "WS", + "SM", + "ST", + "SA", + "SN", + "RS", + "SC", + "SL", + "SG", + "SX", + "SK", + "SI", + "SB", + "SO", + "ZA", + "GS", + "SS", + "ES", + "LK", + "SD", + "SR", + "SJ", + "SE", + "CH", + "SY", + "TW", + "TJ", + "TZ", + "TH", + "TL", + "TG", + "TK", + "TO", + "TT", + "TN", + "TR", + "TM", + "TC", + "TV", + "UG", + "UA", + "AE", + "GB", + "UM", + "US", + "UY", + "UZ", + "VU", + "VE", + "VN", + "VG", + "VI", + "WF", + "EH", + "YE", + "ZM", + "ZW", + "AX" + ], + "example": "US" + }, + "postal_code": { + "type": "string", + "example": "02050" + }, + "id_doc_country": { + "type": "string", + "enum": [ + "AF", + "AL", + "DZ", + "AS", + "AD", + "AO", + "AI", + "AQ", + "AG", + "AR", + "AM", + "AW", + "AU", + "AT", + "AZ", + "BS", + "BH", + "BD", + "BB", + "BY", + "BE", + "BZ", + "BJ", + "BM", + "BT", + "BO", + "BQ", + "BA", + "BW", + "BV", + "BR", + "IO", + "BN", + "BG", + "BF", + "BI", + "CV", + "KH", + "CM", + "CA", + "KY", + "CF", + "TD", + "CL", + "CN", + "CX", + "CC", + "CO", + "KM", + "CD", + "CG", + "CK", + "CR", + "HR", + "CU", + "CW", + "CY", + "CZ", + "CI", + "DK", + "DJ", + "DM", + "DO", + "EC", + "EG", + "SV", + "GQ", + "ER", + "EE", + "SZ", + "ET", + "FK", + "FO", + "FJ", + "FI", + "FR", + "GF", + "PF", + "TF", + "GA", + "GM", + "GE", + "DE", + "GH", + "GI", + "GR", + "GL", + "GD", + "GP", + "GU", + "GT", + "GG", + "GN", + "GW", + "GY", + "HT", + "HM", + "VA", + "HN", + "HK", + "HU", + "IS", + "IN", + "ID", + "IR", + "IQ", + "IE", + "IM", + "IL", + "IT", + "JM", + "JP", + "JE", + "JO", + "KZ", + "KE", + "KI", + "KP", + "KR", + "KW", + "KG", + "LA", + "LV", + "LB", + "LS", + "LR", + "LY", + "LI", + "LT", + "LU", + "MO", + "MG", + "MW", + "MY", + "MV", + "ML", + "MT", + "MH", + "MQ", + "MR", + "MU", + "YT", + "MX", + "FM", + "MD", + "MC", + "MN", + "ME", + "MS", + "MA", + "MZ", + "MM", + "NA", + "NR", + "NP", + "NL", + "NC", + "NZ", + "NI", + "NE", + "NG", + "NU", + "NF", + "MP", + "NO", + "OM", + "PK", + "PW", + "PS", + "PA", + "PG", + "PY", + "PE", + "PH", + "PN", + "PL", + "PT", + "PR", + "QA", + "MK", + "RO", + "RU", + "RW", + "RE", + "BL", + "SH", + "KN", + "LC", + "MF", + "PM", + "VC", + "WS", + "SM", + "ST", + "SA", + "SN", + "RS", + "SC", + "SL", + "SG", + "SX", + "SK", + "SI", + "SB", + "SO", + "ZA", + "GS", + "SS", + "ES", + "LK", + "SD", + "SR", + "SJ", + "SE", + "CH", + "SY", + "TW", + "TJ", + "TZ", + "TH", + "TL", + "TG", + "TK", + "TO", + "TT", + "TN", + "TR", + "TM", + "TC", + "TV", + "UG", + "UA", + "AE", + "GB", + "UM", + "US", + "UY", + "UZ", + "VU", + "VE", + "VN", + "VG", + "VI", + "WF", + "EH", + "YE", + "ZM", + "ZW", + "AX" + ], + "example": "BR" + }, + "id_doc_type": { + "type": "string", + "enum": [ + "PASSPORT", + "ID_CARD", + "DRIVERS" + ], + "example": "PASSPORT" + }, + "id_doc_front_file": { + "type": "string", + "format": "uri" + }, + "id_doc_back_file": { + "type": [ + "string", + "null" + ], + "format": "uri", + "description": "Only image files are accepted (.jpg, .jpeg, .png)" + }, + "proof_of_address_doc_type": { + "type": [ + "string", + "null" + ], + "enum": [ + "UTILITY_BILL", + "BANK_STATEMENT", + "RENTAL_AGREEMENT", + "TAX_DOCUMENT", + "GOVERNMENT_CORRESPONDENCE" + ], + "example": "UTILITY_BILL" + }, + "proof_of_address_doc_file": { + "type": [ + "string", + "null" + ], + "format": "uri", + "description": "Please upload one document that serve as proof of address, this needs to be the same address as the one provided above. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB." + }, + "ownership_percentage": { + "type": [ + "integer", + "null" + ], + "minimum": 0, + "maximum": 100, + "description": "Ownership percentage of the beneficial owner (0-100)", + "example": 25 + }, + "title": { + "type": [ + "string", + "null" + ], + "maxLength": 128, + "description": "Job title of the owner", + "example": "CEO" + }, + "tax_type": { + "type": [ + "string", + "null" + ], + "enum": [ + "SSN", + "ITIN" + ], + "description": "Tax identifier type. Mandatory when country is US; must be SSN or ITIN.", + "example": "SSN" + } }, - "step": { - "description": "Payment step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "example": "on_hold", - "type": "string" - } - }, - "required": [ - "step" - ], - "type": "object" + "required": [ + "role", + "first_name", + "last_name", + "date_of_birth", + "tax_id", + "address_line_1", + "city", + "state_province_region", + "country", + "postal_code", + "id_doc_country", + "id_doc_type", + "id_doc_front_file" + ] + } }, - "tracking_transaction": { - "properties": { - "completed_at": { - "description": "Payout transaction completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "ledger_in_transaction_id": { - "description": "Ledger transaction ID for the IN (crypto deposit) transaction", - "type": [ - "string", - "null" - ] - }, - "ledger_out_transaction_id": { - "description": "Ledger transaction ID for the OUT (fiat withdrawal) transaction", - "type": [ - "string", - "null" - ] - }, - "provider_error_reason": { - "description": "Provider error reason when the crypto collection fails (e.g. erc20_allowance_insufficient, ESTIMATION_ERROR: execution reverted)", - "example": "erc20_allowance_insufficient", - "type": [ - "string", - "null" - ] - }, - "provider_transaction_id": { - "description": "Provider-side handle for the on-chain leg (e.g. Circle CPN payment id).", - "example": "67c12eae-b7bc-31cc-a5ef-623dcea82346", - "type": [ - "string", - "null" - ] - }, - "status": { - "description": "Payout transaction status", - "enum": [ - "failed", - "found" - ], - "example": "failed", - "type": [ - "string", - "null" - ] - }, - "step": { - "description": "Payout transaction step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "example": "processing", - "type": "string" - }, - "transaction_hash": { - "description": "Blockchain transaction hash", - "example": "0x123...890", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "step" + "incorporation_doc_file": { + "type": [ + "string", + "null" ], - "type": "object" + "format": "uri", + "description": "Please upload your articles of incorporation below. The articles of incorporation or a certificate of incorporation usually includes information like the company name, business purpose, number of shares offered, value of shares, etc. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", + "example": "https://example.com/image.png" }, - "transaction_fee_amount": { - "description": "Transaction fee in cents (percentage-based fee)", - "example": 100, + "proof_of_ownership_doc_file": { "type": [ - "number", + "string", "null" - ] + ], + "format": "uri", + "description": "Please upload your proof of ownership below. This document usually includes information like the shareholders names and percentages. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", + "example": "https://example.com/image.png" }, - "webhook_event": { + "source_of_funds_doc_type": { + "type": [ + "string", + "null" + ], "enum": [ - "payout.update" + "business_income", + "gambling_proceeds", + "gifts", + "government_benefits", + "inheritance", + "investment_loans", + "pension_retirement", + "salary", + "sale_of_assets_real_estate", + "savings", + "esops", + "investment_proceeds", + "someone_else_funds" + ], + "example": "business_income" + }, + "source_of_funds_doc_file": { + "type": [ + "string", + "null" ], - "type": "string" - } - }, - "required": [ - "webhook_event", - "id", - "status", - "sender_wallet_address", - "tracking_complete", - "tracking_payment", - "tracking_transaction" - ], - "type": "object" - }, - "PortalAccessOut": { - "properties": { - "url": { - "example": "https://example.com/webhook", "format": "uri", - "type": "string" - } - }, - "required": [ - "url" - ], - "type": "object" - }, - "QuoteIn": { - "properties": { - "bank_account_id": { - "example": "ba_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" + "example": "https://example.com/image.png" }, - "cover_fees": { - "description": "If true, the sender will cover the fees. If false, the customer will cover the fees.", - "example": true, + "selfie_file": { "type": [ - "boolean", + "string", "null" - ] + ], + "format": "uri", + "description": "Only image files are accepted (.jpg, .jpeg, .png)", + "example": "https://example.com/image.png" }, - "currency_type": { - "description": "", + "purpose_of_transactions": { + "type": [ + "string", + "null" + ], "enum": [ - "sender", - "receiver" + "business_transactions", + "charitable_donations", + "investment_purposes", + "payments_to_friends_or_family_abroad", + "personal_or_living_expenses", + "protect_wealth", + "purchase_good_and_services", + "receive_payment_for_freelancing", + "receive_salary", + "other" ], - "example": "sender", - "type": "string" + "example": "business_transactions" }, - "description": { - "example": "Memo code or description, only works with USD and BRL", - "maxLength": 128, + "purpose_of_transactions_explanation": { "type": [ "string", "null" - ] + ], + "example": "I am a business owner and I want to receive payments from my customers" }, - "network": { - "description": "Check blindpay available networks", + "account_purpose": { + "type": [ + "string", + "null" + ], "enum": [ - "base", - "sepolia", - "arbitrum_sepolia", - "base_sepolia", - "arbitrum", - "polygon", - "polygon_amoy", - "ethereum", - "stellar", - "stellar_testnet", - "tron", - "solana", - "solana_devnet" + "charitable_donations", + "ecommerce_retail_payments", + "investment_purposes", + "business_expenses", + "payments_to_friends_or_family_abroad", + "personal_or_living_expenses", + "protect_wealth", + "purchase_goods_and_services", + "receive_payments_for_goods_and_services", + "tax_optimization", + "third_party_money_transmission", + "payroll", + "treasury_management", + "other" ], - "example": "sepolia", - "type": "string" + "example": "treasury_management" }, - "partner_fee_id": { - "example": "pf_000000000000", - "maxLength": 15, - "minLength": 15, + "account_purpose_other": { "type": [ "string", "null" - ] + ], + "maxLength": 512, + "description": "Required when account_purpose is \"other\". Max 512 characters.", + "example": "Custom account purpose description" }, - "refund_wallet_address": { - "description": "Optional wallet address to receive the refund if this payout fails or is refunded. Must be a valid address on the quote network. When omitted, refunds are sent back to the sender wallet address.", - "example": "0xDD6a3aD0949396e57C7738ba8FC1A46A5a1C372C", + "business_type": { "type": [ "string", "null" - ] - }, - "request_amount": { - "description": "1000 represents 10.00, 2050 represents 20.50", - "example": 1000, - "minimum": 500, - "type": "integer" - }, - "token": { - "description": "Check blindpay available tokens", + ], "enum": [ - "USDC", - "USDT", - "USDB" + "corporation", + "llc", + "partnership", + "sole_proprietorship", + "trust", + "non_profit" ], - "example": "USDC", - "type": "string" - } - }, - "required": [ - "bank_account_id", - "currency_type", - "request_amount", - "network", - "token" - ], - "type": "object" - }, - "QuoteOut": { - "properties": { - "billing_fee_amount": { - "description": "Billing fee in cents (charged via invoice at the end of the month)", - "example": 50, + "example": "llc" + }, + "business_description": { "type": [ - "number", + "string", "null" - ] + ], + "maxLength": 1000, + "example": "Software development company" }, - "blindpay_quotation": { - "description": "1 USD = 4.85 BRL (commercial quotation - (blindpay taxes))", - "example": 485, + "business_industry": { "type": [ - "number", + "string", "null" - ] + ], + "enum": [ + "111998", + "112120", + "113310", + "115114", + "541211", + "541810", + "541430", + "541715", + "541930", + "561422", + "561311", + "561612", + "561740", + "561730", + "236115", + "236220", + "237310", + "238210", + "811111", + "812111", + "812112", + "532111", + "624410", + "541922", + "811210", + "812199", + "611110", + "611310", + "611410", + "611710", + "211120", + "212114", + "221310", + "562111", + "562920", + "213112", + "522110", + "522210", + "522320", + "523150", + "523940", + "523999", + "524113", + "813110", + "813211", + "813219", + "551112", + "721110", + "722511", + "722513", + "561510", + "713110", + "713210", + "712110", + "711110", + "711211", + "621111", + "621210", + "622110", + "623110", + "621511", + "623220", + "541940", + "621399", + "621910", + "541110", + "311421", + "337121", + "322220", + "339920", + "334210", + "339930", + "312130", + "334111", + "334118", + "325412", + "339112", + "336110", + "336390", + "315990", + "313110", + "339910", + "516120", + "513130", + "512250", + "519130", + "711410", + "711510", + "531110", + "531120", + "531130", + "531190", + "531210", + "531311", + "531312", + "531320", + "531390", + "454110", + "445110", + "455110", + "457110", + "449210", + "444110", + "459210", + "459120", + "445320", + "458110", + "458210", + "458310", + "455219", + "424210", + "456110", + "446120", + "541511", + "541512", + "541519", + "518210", + "511210", + "517111", + "517112", + "517410", + "481111", + "483111", + "485210", + "488510", + "484121", + "493110", + "423430", + "423690", + "423110", + "423830", + "423840", + "423510", + "424690", + "424990", + "424410", + "424480", + "423940", + "541611", + "541618", + "541330", + "541990", + "541214", + "561499" + ], + "example": "541511" }, - "commercial_quotation": { - "description": "1 USD = 4.95 BRL", - "example": 495, + "estimated_annual_revenue": { "type": [ - "number", + "string", "null" - ] - }, - "contract": { - "properties": { - "abi": { - "items": { - "description": "Contract abi related to the network you send in request params", - "example": {}, - "properties": {}, - "type": "object" - }, - "type": "array" - }, - "address": { - "description": "Token address related to the network you send in request params", - "example": "0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238", - "type": "string" - }, - "amount": { - "description": "Amount to approve with correct decimal places", - "example": "1000000000000000000", - "type": "string" - }, - "blindpayContractAddress": { - "description": "Blindpay contract address", - "example": "0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238", - "type": "string" - }, - "functionName": { - "description": "Function name from ERC20 smart contract", - "enum": [ - "approve" - ], - "example": "approve", - "type": "string" - }, - "network": { - "properties": { - "chainId": { - "example": 1, - "type": "number" - }, - "name": { - "example": "Ethereum", - "type": "string" - } - }, - "required": [ - "name", - "chainId" - ], - "type": "object" - } - }, - "required": [ - "abi", - "address", - "functionName", - "blindpayContractAddress", - "amount", - "network" ], + "enum": [ + "0_99999", + "100000_999999", + "1000000_9999999", + "10000000_49999999", + "50000000_249999999", + "250000000_plus" + ], + "example": "1000000_9999999" + }, + "source_of_wealth": { "type": [ - "object", + "string", "null" - ] + ], + "enum": [ + "business_dividends_or_profits", + "investments", + "asset_sales", + "client_investor_contributions", + "gambling", + "charitable_contributions", + "inheritance", + "affiliate_or_royalty_income" + ], + "example": "affiliate_or_royalty_income" }, - "customer_local_amount": { - "description": "Estimated amount in the currency of recipient bank account", - "example": 1000, + "publicly_traded": { "type": [ - "number", + "boolean", "null" - ] + ], + "example": false }, - "description": { - "example": "Memo code or description, only works with USD and BRL", - "maxLength": 128, + "occupation": { "type": [ "string", "null" - ] + ], + "maxLength": 255, + "example": "Software Engineer" }, - "expires_at": { - "description": "Epoch unix timestamp that represents the final datetime to transaction be received on blockchain. For SEPA payouts this may be shorter than the default 5 minute window if Circle CPN returns an earlier expiry.", - "example": 1712958191, + "external_id": { "type": [ - "number", + "string", "null" - ] + ], + "example": "your_company_external_id" }, - "flat_fee": { - "description": "0.5 USDC", - "example": 50, + "tos_id": { "type": [ - "number", + "string", "null" - ] + ], + "minLength": 15, + "maxLength": 15, + "example": "to_000000000000" }, + "additional_info": { + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/components/schemas/AdditionalInfoItem" + }, + "description": "Optional extra documents or notes for this customer. `label` is a known category, `value` is either a URL to upload or a free-text description. Any URLs are downloaded and re-hosted on Blindpay storage before being stored.", + "example": [ + { + "label": "EIN_LETTER", + "value": "https://example.com/ein.pdf" + }, + { + "label": "FLOW_OF_FUNDS", + "value": "Funds originate from US payroll deposits, forwarded weekly to customer." + } + ] + } + }, + "required": [ + "type", + "kyc_type", + "email", + "country" + ] + }, + "CustomerOut": { + "type": "object", + "properties": { "id": { - "example": "qu_000000000000", + "type": "string", + "minLength": 15, "maxLength": 15, + "example": "re_000000000000" + }, + "customer_id": { + "type": "string", "minLength": 15, - "type": "string" + "maxLength": 15, + "example": "re_000000000000" }, - "partner_fee_amount": { - "default": 0, - "description": "1.5 USDC", - "example": 150, + "type": { + "type": "string", + "enum": [ + "individual", + "business" + ], + "example": "individual" + }, + "kyc_type": { + "type": "string", + "enum": [ + "light", + "standard", + "enhanced" + ], + "example": "standard" + }, + "kyc_status": { + "type": "string", + "enum": [ + "verifying", + "approved", + "rejected", + "deprecated", + "pending_review", + "awaiting_contract", + "compliance_request", + "approved_rfi" + ], + "example": "verifying" + }, + "kyc_warnings": { "type": [ - "number", + "array", "null" + ], + "items": { + "type": "object", + "properties": { + "code": { + "type": [ + "string", + "null" + ] + }, + "message": { + "type": [ + "string", + "null" + ] + }, + "resolution_status": { + "type": [ + "string", + "null" + ] + }, + "warning_id": { + "type": [ + "string", + "null" + ] + } + } + }, + "description": "You can find more information here: https://docs.aiprise.com/docs/warnings-and-error-codes", + "example": [ + { + "code": "BIRTH_DATE_MISMATCH", + "message": "Mismatch between supplied birth date and extracted/looked up birth date.", + "resolution_status": "UNRESOLVED", + "warning_id": "38170889-50aa-4271-9eb1-61113ebf408c" + } ] }, - "receiver_amount": { - "description": "52.40 BRL", - "example": 5240, + "fraud_warnings": { "type": [ - "number", + "array", "null" + ], + "items": { + "type": "object", + "properties": { + "id": { + "type": [ + "string", + "null" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + }, + "operation": { + "type": [ + "string", + "null" + ] + }, + "score": { + "type": [ + "number", + "null" + ] + } + } + }, + "example": [ + { + "id": "UC114", + "name": "User never used a Datacenter proxy and this device before", + "operation": "+", + "score": 10 + } ] }, - "sender_amount": { - "description": "10.10 USDC needs to be sent to bank account blockchain address", - "example": 1010, + "email": { + "type": "string", + "format": "email", + "example": "email@example.com" + }, + "tax_id": { "type": [ - "number", + "string", "null" - ] - } - }, - "required": [ - "id", - "expires_at", - "commercial_quotation", - "blindpay_quotation", - "receiver_amount", - "sender_amount" - ], - "type": "object" - }, - "RecurringItem": { - "properties": { - "amount": { - "description": "Amount in cents for fixed billing", - "example": 5000, - "type": "integer" - }, - "billing_scheme": { - "enum": [ - "fixed", - "metered" ], - "example": "fixed", - "type": "string" + "example": "536804398" }, - "created_at": { - "format": "date-time", - "type": "string" + "address_line_1": { + "type": [ + "string", + "null" + ], + "example": "738 Plain St" }, - "description": { - "example": "Premium Support", - "type": "string" + "address_line_2": { + "type": [ + "string", + "null" + ], + "example": "Building 22" }, - "first_invoice_sequence": { - "description": "Invoice sequence number when this item first becomes due", - "example": 1, - "exclusiveMinimum": 0, - "type": "integer" + "city": { + "type": [ + "string", + "null" + ], + "example": "Marshfield" }, - "frequency_months": { - "description": "Billing frequency in months (1=monthly, 3=quarterly, etc)", - "example": 1, - "exclusiveMinimum": 0, - "type": "integer" + "state_province_region": { + "type": [ + "string", + "null" + ], + "example": "MA" }, - "id": { - "example": "rc_000000000000", - "type": "string" + "country": { + "type": "string", + "enum": [ + "AF", + "AL", + "DZ", + "AS", + "AD", + "AO", + "AI", + "AQ", + "AG", + "AR", + "AM", + "AW", + "AU", + "AT", + "AZ", + "BS", + "BH", + "BD", + "BB", + "BY", + "BE", + "BZ", + "BJ", + "BM", + "BT", + "BO", + "BQ", + "BA", + "BW", + "BV", + "BR", + "IO", + "BN", + "BG", + "BF", + "BI", + "CV", + "KH", + "CM", + "CA", + "KY", + "CF", + "TD", + "CL", + "CN", + "CX", + "CC", + "CO", + "KM", + "CD", + "CG", + "CK", + "CR", + "HR", + "CU", + "CW", + "CY", + "CZ", + "CI", + "DK", + "DJ", + "DM", + "DO", + "EC", + "EG", + "SV", + "GQ", + "ER", + "EE", + "SZ", + "ET", + "FK", + "FO", + "FJ", + "FI", + "FR", + "GF", + "PF", + "TF", + "GA", + "GM", + "GE", + "DE", + "GH", + "GI", + "GR", + "GL", + "GD", + "GP", + "GU", + "GT", + "GG", + "GN", + "GW", + "GY", + "HT", + "HM", + "VA", + "HN", + "HK", + "HU", + "IS", + "IN", + "ID", + "IR", + "IQ", + "IE", + "IM", + "IL", + "IT", + "JM", + "JP", + "JE", + "JO", + "KZ", + "KE", + "KI", + "KP", + "KR", + "KW", + "KG", + "LA", + "LV", + "LB", + "LS", + "LR", + "LY", + "LI", + "LT", + "LU", + "MO", + "MG", + "MW", + "MY", + "MV", + "ML", + "MT", + "MH", + "MQ", + "MR", + "MU", + "YT", + "MX", + "FM", + "MD", + "MC", + "MN", + "ME", + "MS", + "MA", + "MZ", + "MM", + "NA", + "NR", + "NP", + "NL", + "NC", + "NZ", + "NI", + "NE", + "NG", + "NU", + "NF", + "MP", + "NO", + "OM", + "PK", + "PW", + "PS", + "PA", + "PG", + "PY", + "PE", + "PH", + "PN", + "PL", + "PT", + "PR", + "QA", + "MK", + "RO", + "RU", + "RW", + "RE", + "BL", + "SH", + "KN", + "LC", + "MF", + "PM", + "VC", + "WS", + "SM", + "ST", + "SA", + "SN", + "RS", + "SC", + "SL", + "SG", + "SX", + "SK", + "SI", + "SB", + "SO", + "ZA", + "GS", + "SS", + "ES", + "LK", + "SD", + "SR", + "SJ", + "SE", + "CH", + "SY", + "TW", + "TJ", + "TZ", + "TH", + "TL", + "TG", + "TK", + "TO", + "TT", + "TN", + "TR", + "TM", + "TC", + "TV", + "UG", + "UA", + "AE", + "GB", + "UM", + "US", + "UY", + "UZ", + "VU", + "VE", + "VN", + "VG", + "VI", + "WF", + "EH", + "YE", + "ZM", + "ZW", + "AX" + ], + "example": "US" }, - "instance_id": { - "example": "in_000000000000", - "type": "string" + "postal_code": { + "type": [ + "string", + "null" + ], + "example": "02050" }, - "metric_id": { - "example": "approved_individual_customers", + "ip_address": { "type": [ "string", "null" - ] + ], + "format": "ip", + "example": "127.0.0.1" }, - "per_unit_amount": { - "description": "Override default rate in cents for metered billing", - "example": 20, + "latitude": { "type": [ - "integer", + "number", "null" - ] + ], + "minimum": -90, + "maximum": 90, + "description": "Optional geolocation latitude collected from the customer. Forwarded to AiPrise and SEON for fraud analysis.", + "example": 37.7749 }, - "product_id": { - "example": "pr_000000000000", + "longitude": { "type": [ - "string", + "number", "null" - ] + ], + "minimum": -180, + "maximum": 180, + "description": "Optional geolocation longitude collected from the customer. Forwarded to AiPrise and SEON for fraud analysis.", + "example": -122.4194 }, - "product_name": { - "description": "Product name when product_id is set (from stripe product catalog)", - "example": "Swift Addon", + "image_url": { "type": [ "string", "null" - ] - }, - "updated_at": { - "format": "date-time", - "type": "string" - } - }, - "required": [ - "id", - "instance_id", - "description", - "amount", - "frequency_months", - "first_invoice_sequence", - "billing_scheme", - "metric_id", - "per_unit_amount", - "product_id" - ], - "type": "object" - }, - "Rfi": { - "properties": { - "created_at": { - "format": "date-time", - "type": "string" + ], + "example": "https://example.com/image.png" }, - "customer_aiprise_session_id": { + "phone_number": { "type": [ "string", "null" - ] + ], + "example": "+13055555555" }, - "customer_aiprise_user_profile_id": { + "proof_of_address_doc_type": { "type": [ "string", "null" - ] - }, - "customer_id": { - "type": "string" - }, - "customer_kyc_status": { - "type": "string" - }, - "customer_type": { - "enum": [ - "individual", - "business" ], - "type": "string" - }, - "expires_at": { - "format": "date-time", - "type": "string" - }, - "id": { - "type": "string" - }, - "instance_id": { - "type": "string" - }, - "request": { - "items": { - "$ref": "#/components/schemas/RfiSection" - }, - "maxItems": 20, - "minItems": 1, - "type": "array" - }, - "response": { - "additionalProperties": { - "anyOf": [ - { - "maxLength": 4096, - "type": "string" - }, - { - "items": { - "format": "uri", - "type": "string" - }, - "maxItems": 20, - "type": "array" - } - ] - }, - "type": "object" - }, - "status": { "enum": [ - "pending", - "submitted", - "expired", - "cancelled" + "UTILITY_BILL", + "BANK_STATEMENT", + "RENTAL_AGREEMENT", + "TAX_DOCUMENT", + "GOVERNMENT_CORRESPONDENCE" ], - "type": "string" + "example": "UTILITY_BILL" }, - "submitted_at": { - "format": "date-time", + "proof_of_address_doc_file": { "type": [ "string", "null" - ] - } - }, - "required": [ - "id", - "customer_id", - "instance_id", - "status", - "request", - "response", - "expires_at", - "submitted_at", - "created_at" - ], - "type": [ - "object", - "null" - ] - }, - "RfiField": { - "properties": { - "aiprise_document_type": { - "enum": [ - "ADDRESS_PROOF_DOCUMENT", - "SOURCE_OF_FUNDS_DOCUMENT", - "BANK_STATEMENT_DOCUMENT", - "USER_SELFIE", - "TAX_CERTIFICATE", - "VISA_DOCUMENT", - "OTHER" ], - "type": "string" - }, - "items": { - "items": { - "properties": { - "label": { - "type": "string" - }, - "value": { - "type": "string" - } - }, - "required": [ - "label", - "value" - ], - "type": "object" - }, - "type": "array" - }, - "key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "label": { - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "multiple": { - "type": "boolean" - }, - "regex": { - "maxLength": 512, - "type": "string" - }, - "required": { - "type": "boolean" - } - }, - "required": [ - "key", - "label", - "required" - ], - "type": "object" - }, - "RfiSection": { - "properties": { - "description": { - "maxLength": 4096, - "type": "string" - }, - "fields": { - "items": { - "$ref": "#/components/schemas/RfiField" - }, - "maxItems": 20, - "minItems": 1, - "type": "array" - }, - "supporting_document": { - "format": "uri", - "type": "string" - }, - "title": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "title", - "description", - "fields" - ], - "type": "object" - }, - "SubmitPayoutDocumentsIn": { - "properties": { - "description": { - "description": "Optional payment description/memo (max 128 chars)", - "example": "Payment for services - Invoice #12345", - "maxLength": 128, - "type": "string" - }, - "transaction_document_file": { - "description": "URL to the uploaded document", - "example": "https://example.com/document.pdf", - "format": "uri", - "type": "string" - }, - "transaction_document_id": { - "description": "Document identifier (invoice number, contract ID, etc.)", - "example": "INV-12345", - "maxLength": 512, - "minLength": 1, - "type": "string" + "description": "Please upload one document that serve as proof of address, this needs to be the same physical address as the one provided above. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", + "example": "https://example.com/image.png" }, - "transaction_document_type": { - "description": "Document type", - "enum": [ - "invoice", - "purchase_order", - "delivery_slip", - "contract", - "customs_declaration", - "bill_of_lading", - "others" + "first_name": { + "type": [ + "string", + "null" ], - "example": "invoice", - "type": "string" - } - }, - "required": [ - "transaction_document_type", - "transaction_document_id", - "transaction_document_file" - ], - "type": "object" - }, - "Success": { - "properties": { - "success": { - "example": true, - "type": "boolean" - } - }, - "required": [ - "success" - ], - "type": "object" - }, - "SwiftCodeItem": { - "properties": { - "bank": { - "example": "BANK OF AMERICA, N.A.", - "type": "string" - }, - "branch": { - "example": "LENDING SERVICES AND OPERATIONS (LSOP)", - "type": "string" - }, - "city": { - "example": "NEW JERSEY", - "type": "string" - }, - "country": { - "example": "United States", - "type": "string" - }, - "countrySlug": { - "example": "united-states", - "type": "string" - }, - "id": { - "example": "416", - "type": "string" - }, - "swiftCode": { - "example": "BOFAUS3NLMA", - "type": "string" + "example": "John" }, - "swiftCodeLink": { - "example": "https://bank.codes/swift-code/united-states/bofaus3nlma/", - "type": "string" - } - }, - "required": [ - "id", - "bank", - "city", - "branch", - "swiftCode", - "swiftCodeLink", - "country", - "countrySlug" - ], - "type": "object" - }, - "SwiftCodeResponse": { - "items": { - "$ref": "#/components/schemas/SwiftCodeItem" - }, - "type": "array" - }, - "TosAcceptWebhookOut": { - "properties": { - "customer_id": { - "example": "re_000000000000", - "maxLength": 15, - "minLength": 15, + "last_name": { "type": [ "string", "null" - ] - }, - "idempotency_key": { - "example": "123e4567-e89b-12d3-a456-426614174000", - "format": "uuid", - "type": "string" - }, - "tos_id": { - "example": "to_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" + ], + "example": "Doe" }, - "version": { - "enum": [ - "1.0.0", - "1.0.1" + "date_of_birth": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "string" + }, + { + "type": "null" + } ], - "example": "1.0.0", + "example": "1998-01-01T00:00:00Z" + }, + "id_doc_country": { "type": [ "string", "null" - ] - }, - "webhook_event": { + ], "enum": [ - "tos.accept" + "AF", + "AL", + "DZ", + "AS", + "AD", + "AO", + "AI", + "AQ", + "AG", + "AR", + "AM", + "AW", + "AU", + "AT", + "AZ", + "BS", + "BH", + "BD", + "BB", + "BY", + "BE", + "BZ", + "BJ", + "BM", + "BT", + "BO", + "BQ", + "BA", + "BW", + "BV", + "BR", + "IO", + "BN", + "BG", + "BF", + "BI", + "CV", + "KH", + "CM", + "CA", + "KY", + "CF", + "TD", + "CL", + "CN", + "CX", + "CC", + "CO", + "KM", + "CD", + "CG", + "CK", + "CR", + "HR", + "CU", + "CW", + "CY", + "CZ", + "CI", + "DK", + "DJ", + "DM", + "DO", + "EC", + "EG", + "SV", + "GQ", + "ER", + "EE", + "SZ", + "ET", + "FK", + "FO", + "FJ", + "FI", + "FR", + "GF", + "PF", + "TF", + "GA", + "GM", + "GE", + "DE", + "GH", + "GI", + "GR", + "GL", + "GD", + "GP", + "GU", + "GT", + "GG", + "GN", + "GW", + "GY", + "HT", + "HM", + "VA", + "HN", + "HK", + "HU", + "IS", + "IN", + "ID", + "IR", + "IQ", + "IE", + "IM", + "IL", + "IT", + "JM", + "JP", + "JE", + "JO", + "KZ", + "KE", + "KI", + "KP", + "KR", + "KW", + "KG", + "LA", + "LV", + "LB", + "LS", + "LR", + "LY", + "LI", + "LT", + "LU", + "MO", + "MG", + "MW", + "MY", + "MV", + "ML", + "MT", + "MH", + "MQ", + "MR", + "MU", + "YT", + "MX", + "FM", + "MD", + "MC", + "MN", + "ME", + "MS", + "MA", + "MZ", + "MM", + "NA", + "NR", + "NP", + "NL", + "NC", + "NZ", + "NI", + "NE", + "NG", + "NU", + "NF", + "MP", + "NO", + "OM", + "PK", + "PW", + "PS", + "PA", + "PG", + "PY", + "PE", + "PH", + "PN", + "PL", + "PT", + "PR", + "QA", + "MK", + "RO", + "RU", + "RW", + "RE", + "BL", + "SH", + "KN", + "LC", + "MF", + "PM", + "VC", + "WS", + "SM", + "ST", + "SA", + "SN", + "RS", + "SC", + "SL", + "SG", + "SX", + "SK", + "SI", + "SB", + "SO", + "ZA", + "GS", + "SS", + "ES", + "LK", + "SD", + "SR", + "SJ", + "SE", + "CH", + "SY", + "TW", + "TJ", + "TZ", + "TH", + "TL", + "TG", + "TK", + "TO", + "TT", + "TN", + "TR", + "TM", + "TC", + "TV", + "UG", + "UA", + "AE", + "GB", + "UM", + "US", + "UY", + "UZ", + "VU", + "VE", + "VN", + "VG", + "VI", + "WF", + "EH", + "YE", + "ZM", + "ZW", + "AX" ], - "type": "string" - } - }, - "required": [ - "webhook_event", - "tos_id", - "idempotency_key" - ], - "type": "object" - }, - "TransferOut": { - "properties": { - "address": { - "example": "0xDD6a3aD0949396e57C7738ba8FC1A46A5a1C372C", - "maxLength": 64, - "type": [ - "string", - "null" - ] + "example": "BR" }, - "created_at": { - "example": "2021-01-01T00:00:00Z", - "format": "date-time", + "id_doc_type": { "type": [ "string", "null" - ] - }, - "customer_id": { - "example": "re_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - }, - "customer_network": { - "enum": [ - "base", - "sepolia", - "arbitrum_sepolia", - "base_sepolia", - "arbitrum", - "polygon", - "polygon_amoy", - "ethereum", - "stellar", - "stellar_testnet", - "tron", - "solana", - "solana_devnet" ], - "example": "polygon", - "type": "string" - }, - "customer_token": { "enum": [ - "USDC", - "USDT", - "USDB" + "PASSPORT", + "ID_CARD", + "DRIVERS" ], - "example": "USDC", - "type": "string" - }, - "customer_wallet_address": { - "example": "0xDD6a3aD0949396e57C7738ba8FC1A46A5a1C372C", - "maxLength": 64, - "minLength": 32, - "type": "string" - }, - "external_id": { - "example": "your-database-id", - "maxLength": 255, - "type": [ - "string", - "null" - ] - }, - "first_name": { - "example": "John", - "type": [ - "string", - "null" - ] - }, - "id": { - "example": "bl_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" + "example": "PASSPORT" }, - "image_url": { - "example": "https://example.com/image.png", - "format": "uri", + "id_doc_front_file": { "type": [ "string", "null" - ] - }, - "instance_id": { - "example": "in_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" + ], + "description": "Only image files are accepted (.jpg, .jpeg, .png)", + "example": "https://example.com/image.png" }, - "last_name": { - "example": "Doe", + "id_doc_back_file": { "type": [ "string", "null" - ] + ], + "description": "Only image files are accepted (.jpg, .jpeg, .png)", + "example": "https://example.com/image.png" }, "legal_name": { - "example": "Company Name Inc.", "type": [ "string", "null" - ] - }, - "network": { - "enum": [ - "base", - "sepolia", - "arbitrum_sepolia", - "base_sepolia", - "arbitrum", - "polygon", - "polygon_amoy", - "ethereum", - "stellar", - "stellar_testnet", - "tron", - "solana", - "solana_devnet" ], - "example": "polygon", - "type": "string" + "example": "Company Name Inc." }, - "partner_fee_amount": { - "default": 0, - "description": "1.5 USDC", - "example": 150, + "alternate_name": { "type": [ - "number", + "string", "null" - ] - }, - "receiver_amount": { - "description": "10.10 USDC", - "example": 1010, - "type": "number" - }, - "sender_amount": { - "description": "52.40 BRL needs to be sent in a pix transfer", - "example": 5240, - "type": "number" - }, - "sender_token": { - "enum": [ - "USDC", - "USDT", - "USDB" - ], - "example": "USDC", - "type": "string" - }, - "status": { - "description": "Transfer general status", - "enum": [ - "processing", - "failed", - "refunded", - "completed" ], - "example": "processing", - "type": "string" + "example": "Company Name Inc." }, - "tracking_bridge_swap": { - "properties": { - "completed_at": { - "description": "Complete completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "error_message": { - "example": "Gas fee is too low", - "type": [ - "string", - "null" - ] - }, - "gas_fee": { - "description": "Gas fee related to transaction", - "example": "100", - "type": [ - "string", - "null" - ] + "formation_date": { + "anyOf": [ + { + "type": "string", + "format": "date-time" }, - "step": { - "description": "Complete step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "example": "on_hold", + { "type": "string" }, - "transaction_hash": { - "description": "Complete transaction hash", - "example": "0x123...890", - "type": [ - "string", - "null" - ] + { + "type": "null" } - }, - "required": [ - "step" ], - "type": "object" + "example": "1998-01-01T00:00:00Z", + "format": "date-time" }, - "tracking_complete": { - "properties": { - "completed_at": { - "description": "Complete completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "error_message": { - "example": "Gas fee is too low", - "type": [ - "string", - "null" - ] - }, - "gas_fee": { - "description": "Gas fee related to transaction", - "example": "100", - "type": [ - "string", - "null" - ] - }, - "step": { - "description": "Complete step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "example": "on_hold", - "type": "string" - }, - "transaction_hash": { - "description": "Complete transaction hash", - "example": "0x123...890", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "step" + "website": { + "type": [ + "string", + "null" ], - "type": "object" + "format": "uri", + "example": "https://example.com" }, - "tracking_paymaster": { - "properties": { - "completed_at": { - "description": "Complete completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "error_message": { - "example": "Gas fee is too low", - "type": [ - "string", - "null" - ] - }, - "gas_fee": { - "description": "Gas fee related to transaction", - "example": "100", - "type": [ - "string", - "null" - ] - }, - "step": { - "description": "Complete step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "example": "on_hold", - "type": "string" - }, - "transaction_hash": { - "description": "Complete transaction hash", - "example": "0x123...890", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "step" + "owners": { + "type": [ + "array", + "null" ], - "type": "object" - }, - "tracking_transaction_monitoring": { - "properties": { - "blockchain_screening": { - "description": "Blindpay screening step", - "example": 1, - "maximum": 100, - "minimum": 0, - "type": [ - "number", - "null" - ] - }, - "completed_at": { - "description": "Transfer transaction completed date", - "example": "2011-10-05T14:48:00.000Z", - "type": [ - "string", - "null" - ] - }, - "risk_score": { - "description": "Risk score", - "example": 1, - "maximum": 100, - "minimum": 0, - "type": [ - "number", - "null" - ] - }, - "step": { - "description": "Transaction monitoring step", - "enum": [ - "processing", - "on_hold", - "pending_review", - "completed" - ], - "example": "processing", - "type": "string" + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "ub_000000000000" + }, + "instance_id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "in_000000000000" + }, + "customer_id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "re_000000000000" + }, + "role": { + "type": "string", + "enum": [ + "beneficial_controlling", + "beneficial_owner", + "controlling_person" + ], + "description": "A beneficial owner is someone who directly or indirectly owns 25% or more of your business. A controlling person is someone with significant responsibility to control, manage or direct your business (typically a CEO, senior executive officer or equivalent).", + "example": "beneficial_owner" + }, + "first_name": { + "type": "string", + "minLength": 1, + "example": "John" + }, + "last_name": { + "type": "string", + "minLength": 1, + "example": "Doe" + }, + "date_of_birth": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "string" + } + ], + "example": "1998-01-01T00:00:00Z" + }, + "tax_id": { + "type": [ + "string", + "null" + ], + "example": "536804398" + }, + "address_line_1": { + "type": "string", + "example": "738 Plain St" + }, + "address_line_2": { + "type": [ + "string", + "null" + ], + "example": "Building 22" + }, + "city": { + "type": "string", + "example": "Marshfield" + }, + "state_province_region": { + "type": "string", + "example": "MA" + }, + "country": { + "type": "string", + "enum": [ + "AF", + "AL", + "DZ", + "AS", + "AD", + "AO", + "AI", + "AQ", + "AG", + "AR", + "AM", + "AW", + "AU", + "AT", + "AZ", + "BS", + "BH", + "BD", + "BB", + "BY", + "BE", + "BZ", + "BJ", + "BM", + "BT", + "BO", + "BQ", + "BA", + "BW", + "BV", + "BR", + "IO", + "BN", + "BG", + "BF", + "BI", + "CV", + "KH", + "CM", + "CA", + "KY", + "CF", + "TD", + "CL", + "CN", + "CX", + "CC", + "CO", + "KM", + "CD", + "CG", + "CK", + "CR", + "HR", + "CU", + "CW", + "CY", + "CZ", + "CI", + "DK", + "DJ", + "DM", + "DO", + "EC", + "EG", + "SV", + "GQ", + "ER", + "EE", + "SZ", + "ET", + "FK", + "FO", + "FJ", + "FI", + "FR", + "GF", + "PF", + "TF", + "GA", + "GM", + "GE", + "DE", + "GH", + "GI", + "GR", + "GL", + "GD", + "GP", + "GU", + "GT", + "GG", + "GN", + "GW", + "GY", + "HT", + "HM", + "VA", + "HN", + "HK", + "HU", + "IS", + "IN", + "ID", + "IR", + "IQ", + "IE", + "IM", + "IL", + "IT", + "JM", + "JP", + "JE", + "JO", + "KZ", + "KE", + "KI", + "KP", + "KR", + "KW", + "KG", + "LA", + "LV", + "LB", + "LS", + "LR", + "LY", + "LI", + "LT", + "LU", + "MO", + "MG", + "MW", + "MY", + "MV", + "ML", + "MT", + "MH", + "MQ", + "MR", + "MU", + "YT", + "MX", + "FM", + "MD", + "MC", + "MN", + "ME", + "MS", + "MA", + "MZ", + "MM", + "NA", + "NR", + "NP", + "NL", + "NC", + "NZ", + "NI", + "NE", + "NG", + "NU", + "NF", + "MP", + "NO", + "OM", + "PK", + "PW", + "PS", + "PA", + "PG", + "PY", + "PE", + "PH", + "PN", + "PL", + "PT", + "PR", + "QA", + "MK", + "RO", + "RU", + "RW", + "RE", + "BL", + "SH", + "KN", + "LC", + "MF", + "PM", + "VC", + "WS", + "SM", + "ST", + "SA", + "SN", + "RS", + "SC", + "SL", + "SG", + "SX", + "SK", + "SI", + "SB", + "SO", + "ZA", + "GS", + "SS", + "ES", + "LK", + "SD", + "SR", + "SJ", + "SE", + "CH", + "SY", + "TW", + "TJ", + "TZ", + "TH", + "TL", + "TG", + "TK", + "TO", + "TT", + "TN", + "TR", + "TM", + "TC", + "TV", + "UG", + "UA", + "AE", + "GB", + "UM", + "US", + "UY", + "UZ", + "VU", + "VE", + "VN", + "VG", + "VI", + "WF", + "EH", + "YE", + "ZM", + "ZW", + "AX" + ], + "example": "US" + }, + "postal_code": { + "type": "string", + "example": "02050" + }, + "id_doc_country": { + "type": "string", + "enum": [ + "AF", + "AL", + "DZ", + "AS", + "AD", + "AO", + "AI", + "AQ", + "AG", + "AR", + "AM", + "AW", + "AU", + "AT", + "AZ", + "BS", + "BH", + "BD", + "BB", + "BY", + "BE", + "BZ", + "BJ", + "BM", + "BT", + "BO", + "BQ", + "BA", + "BW", + "BV", + "BR", + "IO", + "BN", + "BG", + "BF", + "BI", + "CV", + "KH", + "CM", + "CA", + "KY", + "CF", + "TD", + "CL", + "CN", + "CX", + "CC", + "CO", + "KM", + "CD", + "CG", + "CK", + "CR", + "HR", + "CU", + "CW", + "CY", + "CZ", + "CI", + "DK", + "DJ", + "DM", + "DO", + "EC", + "EG", + "SV", + "GQ", + "ER", + "EE", + "SZ", + "ET", + "FK", + "FO", + "FJ", + "FI", + "FR", + "GF", + "PF", + "TF", + "GA", + "GM", + "GE", + "DE", + "GH", + "GI", + "GR", + "GL", + "GD", + "GP", + "GU", + "GT", + "GG", + "GN", + "GW", + "GY", + "HT", + "HM", + "VA", + "HN", + "HK", + "HU", + "IS", + "IN", + "ID", + "IR", + "IQ", + "IE", + "IM", + "IL", + "IT", + "JM", + "JP", + "JE", + "JO", + "KZ", + "KE", + "KI", + "KP", + "KR", + "KW", + "KG", + "LA", + "LV", + "LB", + "LS", + "LR", + "LY", + "LI", + "LT", + "LU", + "MO", + "MG", + "MW", + "MY", + "MV", + "ML", + "MT", + "MH", + "MQ", + "MR", + "MU", + "YT", + "MX", + "FM", + "MD", + "MC", + "MN", + "ME", + "MS", + "MA", + "MZ", + "MM", + "NA", + "NR", + "NP", + "NL", + "NC", + "NZ", + "NI", + "NE", + "NG", + "NU", + "NF", + "MP", + "NO", + "OM", + "PK", + "PW", + "PS", + "PA", + "PG", + "PY", + "PE", + "PH", + "PN", + "PL", + "PT", + "PR", + "QA", + "MK", + "RO", + "RU", + "RW", + "RE", + "BL", + "SH", + "KN", + "LC", + "MF", + "PM", + "VC", + "WS", + "SM", + "ST", + "SA", + "SN", + "RS", + "SC", + "SL", + "SG", + "SX", + "SK", + "SI", + "SB", + "SO", + "ZA", + "GS", + "SS", + "ES", + "LK", + "SD", + "SR", + "SJ", + "SE", + "CH", + "SY", + "TW", + "TJ", + "TZ", + "TH", + "TL", + "TG", + "TK", + "TO", + "TT", + "TN", + "TR", + "TM", + "TC", + "TV", + "UG", + "UA", + "AE", + "GB", + "UM", + "US", + "UY", + "UZ", + "VU", + "VE", + "VN", + "VG", + "VI", + "WF", + "EH", + "YE", + "ZM", + "ZW", + "AX" + ], + "example": "BR" + }, + "id_doc_type": { + "type": "string", + "enum": [ + "PASSPORT", + "ID_CARD", + "DRIVERS" + ], + "example": "PASSPORT" + }, + "id_doc_front_file": { + "type": [ + "string", + "null" + ], + "description": "Only image files are accepted (.jpg, .jpeg, .png)" + }, + "id_doc_back_file": { + "type": [ + "string", + "null" + ], + "description": "Only image files are accepted (.jpg, .jpeg, .png)" + }, + "proof_of_address_doc_type": { + "type": [ + "string", + "null" + ], + "enum": [ + "UTILITY_BILL", + "BANK_STATEMENT", + "RENTAL_AGREEMENT", + "TAX_DOCUMENT", + "GOVERNMENT_CORRESPONDENCE" + ], + "example": "UTILITY_BILL" + }, + "proof_of_address_doc_file": { + "type": [ + "string", + "null" + ], + "description": "Please upload one document that serve as proof of address, this needs to be the same address as the one provided above. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB." + }, + "ownership_percentage": { + "type": [ + "integer", + "null" + ], + "minimum": 0, + "maximum": 100, + "description": "Ownership percentage of the beneficial owner (0-100)", + "example": 25 + }, + "title": { + "type": [ + "string", + "null" + ], + "maxLength": 128, + "description": "Job title of the owner", + "example": "CEO" + }, + "tax_type": { + "type": [ + "string", + "null" + ], + "enum": [ + "SSN", + "ITIN" + ], + "description": "Tax identifier type. Mandatory when country is US; must be SSN or ITIN.", + "example": "SSN" + } } }, - "required": [ - "step" + "description": "Customer owners", + "example": [ + { + "id": "ub_000000000000", + "first_name": "John", + "last_name": "Doe", + "address_line_1": "738 Plain St", + "address_line_2": "Building 22", + "city": "Marshfield", + "state_province_region": "MA", + "country": "US", + "postal_code": "02050", + "id_doc_country": "BR", + "id_doc_type": "PASSPORT", + "id_doc_front_file": "https://example.com/image.png", + "id_doc_back_file": "https://example.com/image.png" + } + ] + }, + "incorporation_doc_file": { + "type": [ + "string", + "null" ], - "type": "object" + "description": "Please upload your articles of incorporation below. The articles of incorporation or a certificate of incorporation usually includes information like the company name, business purpose, number of shares offered, value of shares, etc. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", + "example": "https://example.com/image.png" }, - "transfer_quote_id": { - "example": "pq_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" + "proof_of_ownership_doc_file": { + "type": [ + "string", + "null" + ], + "description": "Please upload your proof of ownership below. This document usually includes information like the shareholders names and percentages. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", + "example": "https://example.com/image.png" }, - "updated_at": { - "example": "2021-01-01T00:00:00Z", - "format": "date-time", + "source_of_funds_doc_type": { "type": [ "string", "null" - ] + ], + "enum": [ + "business_income", + "gambling_proceeds", + "gifts", + "government_benefits", + "inheritance", + "investment_loans", + "pension_retirement", + "salary", + "sale_of_assets_real_estate", + "savings", + "esops", + "investment_proceeds", + "someone_else_funds" + ], + "example": "business_income" + }, + "source_of_funds_doc_file": { + "type": [ + "string", + "null" + ], + "example": "https://example.com/image.png" + }, + "selfie_file": { + "type": [ + "string", + "null" + ], + "description": "Only image files are accepted (.jpg, .jpeg, .png)", + "example": "https://example.com/image.png" + }, + "purpose_of_transactions": { + "type": [ + "string", + "null" + ], + "enum": [ + "business_transactions", + "charitable_donations", + "investment_purposes", + "payments_to_friends_or_family_abroad", + "personal_or_living_expenses", + "protect_wealth", + "purchase_good_and_services", + "receive_payment_for_freelancing", + "receive_salary", + "other" + ], + "example": "business_transactions" + }, + "purpose_of_transactions_explanation": { + "type": [ + "string", + "null" + ], + "example": "I am a business owner and I want to receive payments from my customers" + }, + "is_fbo": { + "type": [ + "boolean", + "null" + ], + "example": false }, - "wallet_id": { - "example": "bl_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - } - }, - "required": [ - "id", - "status", - "transfer_quote_id", - "instance_id", - "tracking_transaction_monitoring", - "tracking_paymaster", - "tracking_bridge_swap", - "tracking_complete", - "wallet_id", - "sender_token", - "sender_amount", - "receiver_amount", - "customer_network", - "customer_token", - "customer_wallet_address", - "customer_id", - "network" - ], - "type": "object" - }, - "UpdateCustomerIn": { - "properties": { "account_purpose": { + "type": [ + "string", + "null" + ], "enum": [ "charitable_donations", "ecommerce_retail_payments", @@ -32671,71 +32400,45 @@ "treasury_management", "other" ], - "example": "treasury_management", - "type": [ - "string", - "null" - ] + "example": "treasury_management" }, "account_purpose_other": { - "description": "Required when account_purpose is \"other\". Max 512 characters.", - "example": "Custom account purpose description", - "maxLength": 512, "type": [ "string", "null" - ] - }, - "additional_info": { - "description": "Optional extra documents or notes for this customer. `label` is a known category, `value` is either a URL to upload or a free-text description. Any URLs are downloaded and re-hosted on Blindpay storage before being stored.", - "example": [ - { - "label": "EIN_LETTER", - "value": "https://example.com/ein.pdf" - }, - { - "label": "FLOW_OF_FUNDS", - "value": "Funds originate from US payroll deposits, forwarded weekly to customer." - } ], - "items": { - "$ref": "#/components/schemas/AdditionalInfoItem" - }, - "type": [ - "array", - "null" - ] - }, - "address_line_1": { - "example": "738 Plain St", - "type": [ - "string", - "null" - ] + "maxLength": 512, + "description": "Required when account_purpose is \"other\". Max 512 characters.", + "example": "Custom account purpose description" }, - "address_line_2": { - "example": "Building 22", + "business_type": { "type": [ "string", "null" - ] + ], + "enum": [ + "corporation", + "llc", + "partnership", + "sole_proprietorship", + "trust", + "non_profit" + ], + "example": "llc" }, - "alternate_name": { - "example": "Company Name Inc.", + "business_description": { "type": [ "string", "null" - ] - }, - "business_description": { - "example": "Software development company", + ], "maxLength": 1000, + "example": "Software development company" + }, + "business_industry": { "type": [ "string", "null" - ] - }, - "business_industry": { + ], "enum": [ "111998", "112120", @@ -32882,35 +32585,257 @@ "541214", "561499" ], - "example": "541511", + "example": "541511" + }, + "estimated_annual_revenue": { "type": [ "string", "null" - ] + ], + "enum": [ + "0_99999", + "100000_999999", + "1000000_9999999", + "10000000_49999999", + "50000000_249999999", + "250000000_plus" + ], + "example": "1000000_9999999" }, - "business_type": { + "source_of_wealth": { + "type": [ + "string", + "null" + ], "enum": [ - "corporation", - "llc", - "partnership", - "sole_proprietorship", - "trust", - "non_profit" + "business_dividends_or_profits", + "investments", + "asset_sales", + "client_investor_contributions", + "gambling", + "charitable_contributions", + "inheritance", + "affiliate_or_royalty_income" + ], + "example": "affiliate_or_royalty_income" + }, + "publicly_traded": { + "type": [ + "boolean", + "null" + ], + "example": false + }, + "occupation": { + "type": [ + "string", + "null" + ], + "maxLength": 255, + "example": "Software Engineer" + }, + "external_id": { + "type": [ + "string", + "null" + ], + "example": "your_company_external_id" + }, + "instance_id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "in_000000000000" + }, + "tos_id": { + "type": [ + "string", + "null" + ], + "minLength": 15, + "maxLength": 15, + "example": "to_000000000000" + }, + "aml_status": { + "type": [ + "string", + "null" + ], + "enum": [ + "clear", + "hit", + "error" + ], + "description": "AML screening status from SEON. null = not yet screened.", + "example": "clear" + }, + "aml_hits": { + "type": [ + "object", + "null" + ], + "properties": { + "has_sanction_match": { + "type": "boolean", + "default": false + }, + "has_pep_match": { + "type": "boolean", + "default": false + }, + "has_watchlist_match": { + "type": "boolean", + "default": false + }, + "has_crimelist_match": { + "type": "boolean", + "default": false + }, + "has_adversemedia_match": { + "type": "boolean", + "default": false + } + }, + "description": "AML screening match details from SEON.", + "example": { + "has_sanction_match": false, + "has_pep_match": false, + "has_watchlist_match": false, + "has_crimelist_match": false, + "has_adversemedia_match": false + } + }, + "created_at": { + "type": [ + "string", + "null" ], - "example": "llc", + "format": "date-time", + "example": "2021-01-01T00:00:00Z" + }, + "updated_at": { "type": [ "string", "null" + ], + "format": "date-time", + "example": "2021-01-01T00:00:00Z" + }, + "limit": { + "type": "object", + "properties": { + "per_transaction": { + "type": [ + "number", + "null" + ], + "example": 100000 + }, + "daily": { + "type": [ + "number", + "null" + ], + "example": 200000 + }, + "monthly": { + "type": [ + "number", + "null" + ], + "example": 1000000 + } + }, + "required": [ + "per_transaction", + "daily", + "monthly" + ] + }, + "is_tos_accepted": { + "type": [ + "boolean", + "null" + ] + }, + "additional_info": { + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/components/schemas/AdditionalInfoItem" + }, + "description": "Optional extra documents or notes for this customer. `label` is a known category, `value` is either a URL to upload or a free-text description. Any URLs are downloaded and re-hosted on Blindpay storage before being stored.", + "example": [ + { + "label": "EIN_LETTER", + "value": "https://example.com/ein.pdf" + }, + { + "label": "FLOW_OF_FUNDS", + "value": "Funds originate from US payroll deposits, forwarded weekly to customer." + } ] + } + }, + "required": [ + "id", + "customer_id", + "type", + "kyc_type", + "kyc_status", + "email", + "country", + "instance_id", + "limit" + ] + }, + "UpdateCustomerIn": { + "type": "object", + "properties": { + "email": { + "type": "string", + "format": "email", + "example": "email@example.com" + }, + "tax_id": { + "type": [ + "string", + "null" + ], + "example": "536804398" + }, + "address_line_1": { + "type": [ + "string", + "null" + ], + "example": "738 Plain St" + }, + "address_line_2": { + "type": [ + "string", + "null" + ], + "example": "Building 22" }, "city": { - "example": "Marshfield", "type": [ "string", "null" - ] + ], + "example": "Marshfield" + }, + "state_province_region": { + "type": [ + "string", + "null" + ], + "example": "MA" }, "country": { + "type": "string", "enum": [ "AF", "AL", @@ -33162,63 +33087,100 @@ "ZW", "AX" ], - "example": "US", - "type": "string" + "example": "US" }, - "date_of_birth": { - "anyOf": [ - { - "format": "date-time", - "type": "string" - }, - { - "type": "string" - }, - { - "type": "null" - } + "postal_code": { + "type": [ + "string", + "null" ], - "example": "1998-01-01T00:00:00Z" + "example": "02050" }, - "email": { - "example": "email@example.com", - "format": "email", - "type": "string" + "ip_address": { + "type": [ + "string", + "null" + ], + "format": "ip", + "example": "127.0.0.1" }, - "estimated_annual_revenue": { - "enum": [ - "0_99999", - "100000_999999", - "1000000_9999999", - "10000000_49999999", - "50000000_249999999", - "250000000_plus" + "latitude": { + "type": [ + "number", + "null" ], - "example": "1000000_9999999", + "minimum": -90, + "maximum": 90, + "description": "Optional geolocation latitude collected from the customer. Forwarded to AiPrise and SEON for fraud analysis.", + "example": 37.7749 + }, + "longitude": { + "type": [ + "number", + "null" + ], + "minimum": -180, + "maximum": 180, + "description": "Optional geolocation longitude collected from the customer. Forwarded to AiPrise and SEON for fraud analysis.", + "example": -122.4194 + }, + "image_url": { "type": [ "string", "null" - ] + ], + "format": "uri", + "example": "https://example.com/image.png" }, - "external_id": { - "example": "your_company_external_id", + "phone_number": { "type": [ "string", "null" - ] + ], + "example": "+13055555555" + }, + "proof_of_address_doc_type": { + "type": [ + "string", + "null" + ], + "enum": [ + "UTILITY_BILL", + "BANK_STATEMENT", + "RENTAL_AGREEMENT", + "TAX_DOCUMENT", + "GOVERNMENT_CORRESPONDENCE" + ], + "example": "UTILITY_BILL" + }, + "proof_of_address_doc_file": { + "type": [ + "string", + "null" + ], + "format": "uri", + "description": "Please upload one document that serve as proof of address, this needs to be the same physical address as the one provided above. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", + "example": "https://example.com/image.png" }, "first_name": { - "example": "John", "type": [ "string", "null" - ] + ], + "example": "John" }, - "formation_date": { + "last_name": { + "type": [ + "string", + "null" + ], + "example": "Doe" + }, + "date_of_birth": { "anyOf": [ { - "format": "date-time", - "type": "string" + "type": "string", + "format": "date-time" }, { "type": "string" @@ -33227,19 +33189,13 @@ "type": "null" } ], - "example": "1998-01-01T00:00:00Z", - "format": "date-time" + "example": "1998-01-01T00:00:00Z" }, - "id_doc_back_file": { - "description": "Only image files are accepted (.jpg, .jpeg, .png)", - "example": "https://example.com/image.png", - "format": "uri", + "id_doc_country": { "type": [ "string", "null" - ] - }, - "id_doc_country": { + ], "enum": [ "AF", "AL", @@ -33491,119 +33447,141 @@ "ZW", "AX" ], - "example": "BR", - "type": [ - "string", - "null" - ] + "example": "BR" }, - "id_doc_front_file": { - "description": "Only image files are accepted (.jpg, .jpeg, .png)", - "example": "https://example.com/image.png", - "format": "uri", + "id_doc_type": { "type": [ "string", "null" - ] - }, - "id_doc_type": { + ], "enum": [ "PASSPORT", "ID_CARD", "DRIVERS" ], - "example": "PASSPORT", - "type": [ - "string", - "null" - ] + "example": "PASSPORT" }, - "image_url": { - "example": "https://example.com/image.png", - "format": "uri", + "id_doc_front_file": { "type": [ "string", "null" - ] - }, - "incorporation_doc_file": { - "description": "Please upload your articles of incorporation below. The articles of incorporation or a certificate of incorporation usually includes information like the company name, business purpose, number of shares offered, value of shares, etc. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", - "example": "https://example.com/image.png", + ], "format": "uri", - "type": [ - "string", - "null" - ] + "description": "Only image files are accepted (.jpg, .jpeg, .png)", + "example": "https://example.com/image.png" }, - "ip_address": { - "example": "127.0.0.1", - "format": "ip", + "id_doc_back_file": { "type": [ "string", "null" - ] + ], + "format": "uri", + "description": "Only image files are accepted (.jpg, .jpeg, .png)", + "example": "https://example.com/image.png" }, - "last_name": { - "example": "Doe", + "legal_name": { "type": [ "string", "null" - ] - }, - "latitude": { - "description": "Optional geolocation latitude collected from the customer. Forwarded to AiPrise and SEON for fraud analysis.", - "example": 37.7749, - "maximum": 90, - "minimum": -90, - "type": [ - "number", - "null" - ] + ], + "example": "Company Name Inc." }, - "legal_name": { - "example": "Company Name Inc.", + "alternate_name": { "type": [ "string", "null" - ] + ], + "example": "Company Name Inc." }, - "longitude": { - "description": "Optional geolocation longitude collected from the customer. Forwarded to AiPrise and SEON for fraud analysis.", - "example": -122.4194, - "maximum": 180, - "minimum": -180, - "type": [ - "number", - "null" - ] + "formation_date": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "string" + }, + { + "type": "null" + } + ], + "example": "1998-01-01T00:00:00Z", + "format": "date-time" }, - "occupation": { - "example": "Software Engineer", - "maxLength": 255, + "website": { "type": [ "string", "null" - ] + ], + "format": "uri", + "example": "https://example.com" }, "owners": { + "type": [ + "array", + "null" + ], "items": { + "type": "object", "properties": { + "role": { + "type": "string", + "enum": [ + "beneficial_controlling", + "beneficial_owner", + "controlling_person" + ], + "description": "A beneficial owner is someone who directly or indirectly owns 25% or more of your business. A controlling person is someone with significant responsibility to control, manage or direct your business (typically a CEO, senior executive officer or equivalent).", + "example": "beneficial_owner" + }, + "first_name": { + "type": "string", + "minLength": 1, + "example": "John" + }, + "last_name": { + "type": "string", + "minLength": 1, + "example": "Doe" + }, + "date_of_birth": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "string" + } + ], + "example": "1998-01-01T00:00:00Z" + }, + "tax_id": { + "type": "string", + "example": "536804398" + }, "address_line_1": { - "example": "738 Plain St", - "type": "string" + "type": "string", + "example": "738 Plain St" }, "address_line_2": { - "example": "Building 22", "type": [ "string", "null" - ] + ], + "example": "Building 22" }, "city": { - "example": "Marshfield", - "type": "string" + "type": "string", + "example": "Marshfield" + }, + "state_province_region": { + "type": "string", + "example": "MA" }, "country": { + "type": "string", "enum": [ "AF", "AL", @@ -33855,40 +33833,14 @@ "ZW", "AX" ], - "example": "US", - "type": "string" - }, - "date_of_birth": { - "anyOf": [ - { - "format": "date-time", - "type": "string" - }, - { - "type": "string" - } - ], - "example": "1998-01-01T00:00:00Z" - }, - "first_name": { - "example": "John", - "minLength": 1, - "type": "string" - }, - "id": { - "maxLength": 15, - "minLength": 15, - "type": "string" + "example": "US" }, - "id_doc_back_file": { - "description": "Only image files are accepted (.jpg, .jpeg, .png)", - "format": "uri", - "type": [ - "string", - "null" - ] + "postal_code": { + "type": "string", + "example": "02050" }, "id_doc_country": { + "type": "string", "enum": [ "AF", "AL", @@ -34140,50 +34092,34 @@ "ZW", "AX" ], - "example": "BR", - "type": "string" - }, - "id_doc_front_file": { - "format": "uri", - "type": "string" + "example": "BR" }, "id_doc_type": { + "type": "string", "enum": [ "PASSPORT", "ID_CARD", "DRIVERS" ], - "example": "PASSPORT", - "type": "string" + "example": "PASSPORT" }, - "last_name": { - "example": "Doe", - "minLength": 1, - "type": "string" + "id_doc_front_file": { + "type": "string", + "format": "uri" }, - "ownership_percentage": { - "description": "Ownership percentage of the beneficial owner (0-100)", - "example": 25, - "maximum": 100, - "minimum": 0, + "id_doc_back_file": { "type": [ - "integer", + "string", "null" - ] - }, - "postal_code": { - "example": "02050", - "type": "string" - }, - "proof_of_address_doc_file": { - "description": "Please upload one document that serve as proof of address, this needs to be the same address as the one provided above. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", + ], "format": "uri", + "description": "Only image files are accepted (.jpg, .jpeg, .png)" + }, + "proof_of_address_doc_type": { "type": [ "string", "null" - ] - }, - "proof_of_address_doc_type": { + ], "enum": [ "UTILITY_BILL", "BANK_STATEMENT", @@ -34191,116 +34127,120 @@ "TAX_DOCUMENT", "GOVERNMENT_CORRESPONDENCE" ], - "example": "UTILITY_BILL", + "example": "UTILITY_BILL" + }, + "proof_of_address_doc_file": { "type": [ "string", "null" - ] - }, - "role": { - "description": "A beneficial owner is someone who directly or indirectly owns 25% or more of your business. A controlling person is someone with significant responsibility to control, manage or direct your business (typically a CEO, senior executive officer or equivalent).", - "enum": [ - "beneficial_controlling", - "beneficial_owner", - "controlling_person" ], - "example": "beneficial_owner", - "type": "string" - }, - "state_province_region": { - "example": "MA", - "type": "string" - }, - "tax_id": { - "example": "536804398", - "type": "string" + "format": "uri", + "description": "Please upload one document that serve as proof of address, this needs to be the same address as the one provided above. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB." }, - "tax_type": { - "description": "Tax identifier type. Mandatory when country is US; must be SSN or ITIN.", - "enum": [ - "SSN", - "ITIN" - ], - "example": "SSN", + "ownership_percentage": { "type": [ - "string", + "integer", "null" - ] + ], + "minimum": 0, + "maximum": 100, + "description": "Ownership percentage of the beneficial owner (0-100)", + "example": 25 }, "title": { - "description": "Job title of the owner", - "example": "CEO", + "type": [ + "string", + "null" + ], "maxLength": 128, + "description": "Job title of the owner", + "example": "CEO" + }, + "tax_type": { "type": [ "string", "null" - ] + ], + "enum": [ + "SSN", + "ITIN" + ], + "description": "Tax identifier type. Mandatory when country is US; must be SSN or ITIN.", + "example": "SSN" + }, + "id": { + "type": "string", + "minLength": 15, + "maxLength": 15 } }, "required": [ "id" - ], - "type": "object" - }, - "type": [ - "array", - "null" - ] + ] + } }, - "phone_number": { - "example": "+13055555555", + "incorporation_doc_file": { "type": [ "string", "null" - ] + ], + "format": "uri", + "description": "Please upload your articles of incorporation below. The articles of incorporation or a certificate of incorporation usually includes information like the company name, business purpose, number of shares offered, value of shares, etc. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", + "example": "https://example.com/image.png" }, - "postal_code": { - "example": "02050", + "proof_of_ownership_doc_file": { "type": [ "string", "null" - ] - }, - "proof_of_address_doc_file": { - "description": "Please upload one document that serve as proof of address, this needs to be the same physical address as the one provided above. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", - "example": "https://example.com/image.png", + ], "format": "uri", + "description": "Please upload your proof of ownership below. This document usually includes information like the shareholders names and percentages. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", + "example": "https://example.com/image.png" + }, + "source_of_funds_doc_type": { "type": [ "string", "null" - ] - }, - "proof_of_address_doc_type": { + ], "enum": [ - "UTILITY_BILL", - "BANK_STATEMENT", - "RENTAL_AGREEMENT", - "TAX_DOCUMENT", - "GOVERNMENT_CORRESPONDENCE" + "business_income", + "gambling_proceeds", + "gifts", + "government_benefits", + "inheritance", + "investment_loans", + "pension_retirement", + "salary", + "sale_of_assets_real_estate", + "savings", + "esops", + "investment_proceeds", + "someone_else_funds" ], - "example": "UTILITY_BILL", + "example": "business_income" + }, + "source_of_funds_doc_file": { "type": [ "string", "null" - ] - }, - "proof_of_ownership_doc_file": { - "description": "Please upload your proof of ownership below. This document usually includes information like the shareholders names and percentages. Only PDF and image files are accepted (.jpg, .jpeg, .png, .pdf) with a maximum size of 3MB.", - "example": "https://example.com/image.png", + ], "format": "uri", + "example": "https://example.com/image.png" + }, + "selfie_file": { "type": [ "string", "null" - ] + ], + "format": "uri", + "description": "Only image files are accepted (.jpg, .jpeg, .png)", + "example": "https://example.com/image.png" }, - "publicly_traded": { - "example": false, + "purpose_of_transactions": { "type": [ - "boolean", + "string", "null" - ] - }, - "purpose_of_transactions": { + ], "enum": [ "business_transactions", "charitable_donations", @@ -34313,59 +34253,243 @@ "receive_salary", "other" ], - "example": "business_transactions", + "example": "business_transactions" + }, + "purpose_of_transactions_explanation": { "type": [ "string", "null" - ] + ], + "example": "I am a business owner and I want to receive payments from my customers" }, - "purpose_of_transactions_explanation": { - "example": "I am a business owner and I want to receive payments from my customers", + "account_purpose": { "type": [ "string", "null" - ] + ], + "enum": [ + "charitable_donations", + "ecommerce_retail_payments", + "investment_purposes", + "business_expenses", + "payments_to_friends_or_family_abroad", + "personal_or_living_expenses", + "protect_wealth", + "purchase_goods_and_services", + "receive_payments_for_goods_and_services", + "tax_optimization", + "third_party_money_transmission", + "payroll", + "treasury_management", + "other" + ], + "example": "treasury_management" }, - "selfie_file": { - "description": "Only image files are accepted (.jpg, .jpeg, .png)", - "example": "https://example.com/image.png", - "format": "uri", + "account_purpose_other": { "type": [ "string", "null" - ] + ], + "maxLength": 512, + "description": "Required when account_purpose is \"other\". Max 512 characters.", + "example": "Custom account purpose description" }, - "source_of_funds_doc_file": { - "example": "https://example.com/image.png", - "format": "uri", + "business_type": { "type": [ "string", "null" - ] + ], + "enum": [ + "corporation", + "llc", + "partnership", + "sole_proprietorship", + "trust", + "non_profit" + ], + "example": "llc" }, - "source_of_funds_doc_type": { + "business_description": { + "type": [ + "string", + "null" + ], + "maxLength": 1000, + "example": "Software development company" + }, + "business_industry": { + "type": [ + "string", + "null" + ], "enum": [ - "business_income", - "gambling_proceeds", - "gifts", - "government_benefits", - "inheritance", - "investment_loans", - "pension_retirement", - "salary", - "sale_of_assets_real_estate", - "savings", - "esops", - "investment_proceeds", - "someone_else_funds" + "111998", + "112120", + "113310", + "115114", + "541211", + "541810", + "541430", + "541715", + "541930", + "561422", + "561311", + "561612", + "561740", + "561730", + "236115", + "236220", + "237310", + "238210", + "811111", + "812111", + "812112", + "532111", + "624410", + "541922", + "811210", + "812199", + "611110", + "611310", + "611410", + "611710", + "211120", + "212114", + "221310", + "562111", + "562920", + "213112", + "522110", + "522210", + "522320", + "523150", + "523940", + "523999", + "524113", + "813110", + "813211", + "813219", + "551112", + "721110", + "722511", + "722513", + "561510", + "713110", + "713210", + "712110", + "711110", + "711211", + "621111", + "621210", + "622110", + "623110", + "621511", + "623220", + "541940", + "621399", + "621910", + "541110", + "311421", + "337121", + "322220", + "339920", + "334210", + "339930", + "312130", + "334111", + "334118", + "325412", + "339112", + "336110", + "336390", + "315990", + "313110", + "339910", + "516120", + "513130", + "512250", + "519130", + "711410", + "711510", + "531110", + "531120", + "531130", + "531190", + "531210", + "531311", + "531312", + "531320", + "531390", + "454110", + "445110", + "455110", + "457110", + "449210", + "444110", + "459210", + "459120", + "445320", + "458110", + "458210", + "458310", + "455219", + "424210", + "456110", + "446120", + "541511", + "541512", + "541519", + "518210", + "511210", + "517111", + "517112", + "517410", + "481111", + "483111", + "485210", + "488510", + "484121", + "493110", + "423430", + "423690", + "423110", + "423830", + "423840", + "423510", + "424690", + "424990", + "424410", + "424480", + "423940", + "541611", + "541618", + "541330", + "541990", + "541214", + "561499" ], - "example": "business_income", + "example": "541511" + }, + "estimated_annual_revenue": { "type": [ "string", "null" - ] + ], + "enum": [ + "0_99999", + "100000_999999", + "1000000_9999999", + "10000000_49999999", + "50000000_249999999", + "250000000_plus" + ], + "example": "1000000_9999999" }, "source_of_wealth": { + "type": [ + "string", + "null" + ], "enum": [ "business_dividends_or_profits", "investments", @@ -34376,19133 +34500,19009 @@ "inheritance", "affiliate_or_royalty_income" ], - "example": "affiliate_or_royalty_income", + "example": "affiliate_or_royalty_income" + }, + "publicly_traded": { "type": [ - "string", + "boolean", "null" - ] + ], + "example": false }, - "state_province_region": { - "example": "MA", + "occupation": { "type": [ "string", "null" - ] + ], + "maxLength": 255, + "example": "Software Engineer" }, - "tax_id": { - "example": "536804398", + "external_id": { "type": [ "string", "null" - ] + ], + "example": "your_company_external_id" }, "tos_id": { - "example": "to_000000000000", - "maxLength": 15, - "minLength": 15, "type": [ "string", "null" - ] + ], + "minLength": 15, + "maxLength": 15, + "example": "to_000000000000" }, - "website": { - "example": "https://example.com", - "format": "uri", + "additional_info": { "type": [ - "string", + "array", "null" + ], + "items": { + "$ref": "#/components/schemas/AdditionalInfoItem" + }, + "description": "Optional extra documents or notes for this customer. `label` is a known category, `value` is either a URL to upload or a free-text description. Any URLs are downloaded and re-hosted on Blindpay storage before being stored.", + "example": [ + { + "label": "EIN_LETTER", + "value": "https://example.com/ein.pdf" + }, + { + "label": "FLOW_OF_FUNDS", + "value": "Funds originate from US payroll deposits, forwarded weekly to customer." + } ] } }, "required": [ "email", "country" - ], - "type": "object" + ] }, - "UpdateDynamicRateOtcIn": { + "GetCustomerLimitsOut": { + "type": "object", "properties": { - "dynamic_rate_otc": { - "description": "Dynamic OTC rate markup in basis points (e.g. 5 = 0.05%)", - "example": 5, - "minimum": 0, - "type": "integer" + "limits": { + "type": "object", + "properties": { + "payin": { + "type": "object", + "properties": { + "daily": { + "type": "number" + }, + "monthly": { + "type": "number" + } + }, + "required": [ + "daily", + "monthly" + ] + }, + "payout": { + "type": "object", + "properties": { + "daily": { + "type": "number" + }, + "monthly": { + "type": "number" + } + }, + "required": [ + "daily", + "monthly" + ] + } + }, + "required": [ + "payin", + "payout" + ] } }, "required": [ - "dynamic_rate_otc" + "limits" ], - "type": "object" + "example": { + "limits": { + "payin": { + "daily": 500000, + "monthly": 2000000 + }, + "payout": { + "daily": 300000, + "monthly": 1000000 + } + } + } }, - "UpdateInstanceIn": { + "RfiField": { + "type": "object", "properties": { - "compliance_emails": { - "description": "When non-empty, compliance Request for Information emails are sent only to these addresses instead of all instance members", - "example": [ - "compliance@example.com" - ], + "key": { + "type": "string", + "minLength": 1, + "maxLength": 128 + }, + "label": { + "type": "string", + "minLength": 1, + "maxLength": 256 + }, + "regex": { + "type": "string", + "maxLength": 512 + }, + "required": { + "type": "boolean" + }, + "items": { + "type": "array", "items": { - "format": "email", - "type": "string" + "type": "object", + "properties": { + "label": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "required": [ + "label", + "value" + ] + } + }, + "multiple": { + "type": "boolean" + }, + "aiprise_document_type": { + "type": "string", + "enum": [ + "ADDRESS_PROOF_DOCUMENT", + "SOURCE_OF_FUNDS_DOCUMENT", + "BANK_STATEMENT_DOCUMENT", + "USER_SELFIE", + "TAX_CERTIFICATE", + "VISA_DOCUMENT", + "OTHER" + ] + } + }, + "required": [ + "key", + "label", + "required" + ] + }, + "RfiSection": { + "type": "object", + "properties": { + "title": { + "type": "string", + "minLength": 1, + "maxLength": 256 + }, + "description": { + "type": "string", + "maxLength": 4096 + }, + "supporting_document": { + "type": "string", + "format": "uri" + }, + "fields": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RfiField" }, - "maxItems": 20, + "minItems": 1, + "maxItems": 20 + } + }, + "required": [ + "title", + "description", + "fields" + ] + }, + "Rfi": { + "type": [ + "object", + "null" + ], + "properties": { + "id": { + "type": "string" + }, + "customer_id": { + "type": "string" + }, + "instance_id": { + "type": "string" + }, + "status": { + "type": "string", + "enum": [ + "pending", + "submitted", + "expired", + "cancelled" + ] + }, + "request": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RfiSection" + }, + "minItems": 1, + "maxItems": 20 + }, + "response": { + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "string", + "maxLength": 4096 + }, + { + "type": "array", + "items": { + "type": "string", + "format": "uri" + }, + "maxItems": 20 + } + ] + } + }, + "expires_at": { + "type": "string", + "format": "date-time" + }, + "submitted_at": { "type": [ - "array", + "string", "null" + ], + "format": "date-time" + }, + "created_at": { + "type": "string", + "format": "date-time" + }, + "customer_type": { + "type": "string", + "enum": [ + "individual", + "business" ] }, - "customer_invite_redirect_url": { - "example": "https://blindpay.com", - "format": "uri", + "customer_aiprise_session_id": { "type": [ "string", "null" ] }, - "customer_rfi_emails_enabled": { - "description": "Whether customer (customer) Request for Information notification emails are sent for this instance. Omit to leave unchanged.", - "example": true, - "type": "boolean" - }, - "email_notifications": { - "default": true, - "description": "Whether email notifications are enabled for this instance", - "example": true, - "type": "boolean" + "customer_aiprise_user_profile_id": { + "type": [ + "string", + "null" + ] }, - "name": { - "example": "My Instance", - "maxLength": 100, - "minLength": 3, + "customer_kyc_status": { "type": "string" - }, - "require_passkey": { - "default": false, - "description": "Whether passkey verification is required for protected actions", - "example": false, - "type": "boolean" } }, "required": [ - "name" - ], - "type": "object" + "id", + "customer_id", + "instance_id", + "status", + "request", + "response", + "expires_at", + "submitted_at", + "created_at" + ] }, - "UpdateInstanceMemberIn": { + "InstanceRfi": { + "type": [ + "object", + "null" + ], "properties": { - "user_role": { + "id": { + "type": "string" + }, + "instance_id": { + "type": "string" + }, + "status": { + "type": "string", "enum": [ - "owner", - "admin", - "finance", - "checker", - "operations", - "developer", - "viewer" + "pending", + "submitted", + "expired", + "cancelled" + ] + }, + "request": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RfiSection" + }, + "minItems": 1, + "maxItems": 20 + }, + "response": { + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "string", + "maxLength": 4096 + }, + { + "type": "array", + "items": { + "type": "string", + "format": "uri" + }, + "maxItems": 20 + } + ] + } + }, + "expires_at": { + "type": "string", + "format": "date-time" + }, + "submitted_at": { + "type": [ + "string", + "null" ], - "example": "admin", - "type": "string" + "format": "date-time" + }, + "created_at": { + "type": "string", + "format": "date-time" } }, "required": [ - "user_role" - ], - "type": "object" + "id", + "instance_id", + "status", + "request", + "response", + "expires_at", + "submitted_at", + "created_at" + ] }, - "UpdateRecurringItemSchemaIn": { + "RecurringItem": { + "type": "object", "properties": { - "amount": { - "minimum": 0, - "type": "integer" + "id": { + "type": "string", + "example": "rc_000000000000" + }, + "instance_id": { + "type": "string", + "example": "in_000000000000" }, "description": { - "minLength": 1, - "type": "string" + "type": "string", + "example": "Premium Support" }, - "first_invoice_sequence": { - "exclusiveMinimum": 0, - "type": "integer" + "amount": { + "type": "integer", + "description": "Amount in cents for fixed billing", + "example": 5000 }, "frequency_months": { + "type": "integer", + "exclusiveMinimum": 0, + "description": "Billing frequency in months (1=monthly, 3=quarterly, etc)", + "example": 1 + }, + "first_invoice_sequence": { + "type": "integer", "exclusiveMinimum": 0, - "type": "integer" + "description": "Invoice sequence number when this item first becomes due", + "example": 1 + }, + "billing_scheme": { + "type": "string", + "enum": [ + "fixed", + "metered" + ], + "example": "fixed" + }, + "metric_id": { + "type": [ + "string", + "null" + ], + "example": "approved_individual_customers" + }, + "per_unit_amount": { + "type": [ + "integer", + "null" + ], + "description": "Override default rate in cents for metered billing", + "example": 20 }, "product_id": { "type": [ "string", "null" - ] + ], + "example": "pr_000000000000" + }, + "product_name": { + "type": [ + "string", + "null" + ], + "description": "Product name when product_id is set (from stripe product catalog)", + "example": "Swift Addon" + }, + "created_at": { + "type": "string", + "format": "date-time" + }, + "updated_at": { + "type": "string", + "format": "date-time" } }, - "type": "object" + "required": [ + "id", + "instance_id", + "description", + "amount", + "frequency_months", + "first_invoice_sequence", + "billing_scheme", + "metric_id", + "per_unit_amount", + "product_id" + ] }, - "UpdateVirtualAccountIn": { + "CreateRecurringItemSchemaIn": { + "type": "object", "properties": { - "blockchain_wallet_id": { - "maxLength": 15, - "minLength": 15, - "type": "string" + "description": { + "type": "string", + "minLength": 1, + "example": "Swift Addon" }, - "token": { - "enum": [ - "USDC", - "USDT", - "USDB" - ], - "example": "USDC", - "type": "string" + "amount": { + "type": "integer", + "minimum": 0, + "description": "Amount in cents", + "example": 5000 + }, + "frequency_months": { + "type": "integer", + "exclusiveMinimum": 0, + "example": 1 + }, + "first_invoice_sequence": { + "type": "integer", + "exclusiveMinimum": 0, + "example": 1 + }, + "product_id": { + "type": [ + "string", + "null" + ] } }, "required": [ - "token", - "blockchain_wallet_id" - ], - "type": "object" + "description", + "amount", + "frequency_months", + "first_invoice_sequence" + ] }, - "UploadAnalyzeIn": { + "UpdateRecurringItemSchemaIn": { + "type": "object", "properties": { - "file": { - "description": "The document to analyze (PDF, JPG, or PNG).", - "example": {} + "description": { + "type": "string", + "minLength": 1 }, - "metadata": { - "description": "Optional JSON object of expected values to verify against the document (e.g. {\"full_name\":\"Jane Doe\",\"date_of_birth\":\"1990-01-01\"}). When provided, a clear mismatch caps the rating at low.", - "example": "{\"full_name\":\"Jane Doe\"}", - "type": "string" + "amount": { + "type": "integer", + "minimum": 0 }, - "type": { - "description": "The kind of document being analyzed. Selects the rule set used for the analysis.", - "enum": [ - "proof_of_address", - "identity_document", - "incorporation_document", - "proof_of_ownership", - "source_of_funds", - "selfie", - "bank_statement", - "tax_return", - "proof_of_income", - "financial_statement", - "invoice", - "transaction_document", - "passport", - "pay_stub", - "employment_letter", - "investment", - "crypto_exchange", - "blockchain_wallet", - "contract", - "accounts_receivable", - "merchant_processor", - "shareholder_loan" - ], - "example": "proof_of_address", - "type": "string" + "frequency_months": { + "type": "integer", + "exclusiveMinimum": 0 + }, + "first_invoice_sequence": { + "type": "integer", + "exclusiveMinimum": 0 + }, + "product_id": { + "type": [ + "string", + "null" + ] + } + } + }, + "CreateComplaintIn": { + "type": "object", + "properties": { + "first_name": { + "type": "string", + "minLength": 1 + }, + "last_name": { + "type": "string", + "minLength": 1 + }, + "email": { + "type": "string", + "format": "email" + }, + "complaint_type": { + "type": "string", + "minLength": 1 + }, + "description": { + "type": "string", + "minLength": 20, + "maxLength": 5000 } }, "required": [ - "file", - "type" - ], - "type": "object" + "first_name", + "last_name", + "email", + "complaint_type", + "description" + ] }, - "UploadAnalyzeOut": { + "FeedbackActor": { + "type": [ + "object", + "null" + ], "properties": { - "approval_rate": { - "description": "Confidence that the document should be approved.", - "enum": [ - "low", - "medium", - "high" - ], - "example": "high", + "id": { "type": "string" }, - "description": { - "description": "Short explanation of why the document should or should not be approved.", - "type": "string" + "name": { + "type": [ + "string", + "null" + ] + }, + "email": { + "type": [ + "string", + "null" + ] } }, "required": [ - "approval_rate", - "description" - ], - "type": "object" + "id", + "name", + "email" + ] }, - "UploadIn": { + "FeedbackWithActorOut": { + "allOf": [ + { + "$ref": "#/components/schemas/FeedbackOut" + }, + { + "type": "object", + "properties": { + "actor": { + "$ref": "#/components/schemas/FeedbackActor" + } + }, + "required": [ + "actor" + ] + } + ] + }, + "CreateRfiBody": { + "type": "object", "properties": { - "bucket": { + "created_by_email": { + "type": "string", + "format": "email" + }, + "request": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RfiSection" + }, + "minItems": 1, + "maxItems": 20 + }, + "keep_customer_approved": { + "type": "boolean", + "default": false, + "description": "When true, sets the customer to approved_rfi (keeps full access while the RFI is open) instead of compliance_request (blocked).", + "example": false + } + }, + "required": [ + "created_by_email", + "request" + ] + }, + "KycDecisionBody": { + "type": "object", + "properties": { + "decision": { + "type": "string", "enum": [ - "avatar", - "onboarding", - "limit_increase" - ], - "type": "string" + "approved", + "rejected" + ] }, - "file": {} + "reviewed_by": { + "type": "string", + "format": "email" + }, + "reason": { + "type": "string", + "maxLength": 2048 + } }, "required": [ - "file", - "bucket" - ], - "type": "object" + "decision", + "reviewed_by" + ] }, - "UploadOut": { + "UpdateDynamicRateOtcIn": { + "type": "object", "properties": { - "file_url": { - "type": "string" + "dynamic_rate_otc": { + "type": "integer", + "minimum": 0, + "description": "Dynamic OTC rate markup in basis points (e.g. 5 = 0.05%)", + "example": 5 } }, "required": [ - "file_url" - ], - "type": "object" + "dynamic_rate_otc" + ] }, - "VirtualAccountOut": { + "LedgerOperation": { + "type": "object", "properties": { - "banking_partner": { + "kind": { + "type": "string", "enum": [ - "jpmorgan", - "citi", - "hsbc", - "cfsb", - "portage" - ], - "example": "jpmorgan", + "payin", + "payout" + ] + }, + "id": { + "type": "string" + }, + "instance_id": { "type": [ "string", "null" ] }, - "blockchain_wallet": { - "properties": { - "address": { - "example": "0xDD6a3aD0949396e57C7738ba8FC1A46A5a1C372C", - "type": [ - "string", - "null" - ] - }, - "network": { - "enum": [ - "base", - "sepolia", - "arbitrum_sepolia", - "base_sepolia", - "arbitrum", - "polygon", - "polygon_amoy", - "ethereum", - "stellar", - "stellar_testnet", - "tron", - "solana", - "solana_devnet" - ], - "example": "polygon", - "type": "string" - } - }, - "required": [ - "network" - ], + "status": { "type": [ - "object", + "string", "null" ] }, - "blockchain_wallet_id": { - "example": "bw_000000000000", - "maxLength": 15, - "minLength": 15, + "provider": { "type": [ "string", "null" ] }, - "customer_id": { - "example": "re_000000000000", - "maxLength": 15, - "minLength": 15, + "currency": { "type": [ "string", "null" ] }, - "id": { - "example": "va_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - }, - "kyc_status": { - "enum": [ - "verifying", - "approved", - "rejected", - "deprecated", - "pending_review", - "awaiting_contract", - "compliance_request", - "approved_rfi" - ], - "example": "approved", + "sender_amount": { "type": [ "string", "null" ] }, - "token": { - "enum": [ - "USDC", - "USDT", - "USDB" - ], - "example": "USDC", - "type": "string" - }, - "us": { - "properties": { - "account_type": { - "default": "Business checking", - "enum": [ - "Personal checking", - "Business checking" - ], - "example": "Business checking", - "type": [ - "string", - "null" - ] - }, - "ach": { - "properties": { - "account_number": { - "example": "123456789", - "type": "string" - }, - "routing_number": { - "example": "123456789", - "type": "string" - } - }, - "required": [ - "routing_number", - "account_number" - ], - "type": [ - "object", - "null" - ] - }, - "beneficiary": { - "properties": { - "address_line_1": { - "example": "8 The Green, #19364", - "type": "string" - }, - "address_line_2": { - "example": "Dover, DE 19901", - "type": "string" - }, - "name": { - "example": "Customer Name", - "type": "string" - } - }, - "required": [ - "name", - "address_line_1", - "address_line_2" - ], - "type": [ - "object", - "null" - ] - }, - "receiving_bank": { - "properties": { - "address_line_1": { - "example": "270 Park Ave", - "type": "string" - }, - "address_line_2": { - "example": "New York, NY, 10017-2070", - "type": [ - "string", - "null" - ] - }, - "name": { - "example": "JPMorgan Chase", - "type": "string" - } - }, - "required": [ - "name", - "address_line_1" - ], - "type": [ - "object", - "null" - ] - }, - "rtp": { - "properties": { - "account_number": { - "example": "123456789", - "type": "string" - }, - "routing_number": { - "example": "123456789", - "type": "string" - } - }, - "required": [ - "routing_number", - "account_number" - ], - "type": [ - "object", - "null" - ] - }, - "swift_account_number": { - "example": "GB50TCCL04140449730892", - "type": [ - "string", - "null" - ] - }, - "swift_bic_code": { - "example": "TCCLGB3L", - "type": [ - "string", - "null" - ] - }, - "swift_intermediary_bank": { - "properties": { - "address_line_1": { - "example": "270 Park Ave", - "type": [ - "string", - "null" - ] - }, - "address_line_2": { - "example": "New York, NY, 10017-2070", - "type": [ - "string", - "null" - ] - }, - "name": { - "example": "JP Morgan Chase NA", - "type": [ - "string", - "null" - ] - }, - "routing_number": { - "example": "021000021", - "type": [ - "string", - "null" - ] - }, - "swift_code_bic": { - "example": "CHASUS33", - "type": [ - "string", - "null" - ] - } - }, - "type": [ - "object", - "null" - ] - }, - "swift_receiving_bank": { - "properties": { - "address_line_1": { - "example": "270 Park Ave", - "type": [ - "string", - "null" - ] - }, - "address_line_2": { - "example": "New York, NY, 10017-2070", - "type": [ - "string", - "null" - ] - }, - "name": { - "example": "JPMorgan Chase", - "type": [ - "string", - "null" - ] - } - }, - "type": [ - "object", - "null" - ] - }, - "wire": { - "properties": { - "account_number": { - "example": "123456789", - "type": "string" - }, - "routing_number": { - "example": "123456789", - "type": "string" - } - }, - "required": [ - "routing_number", - "account_number" - ], - "type": "object" - } - }, - "required": [ - "wire" - ], - "type": "object" - } - }, - "required": [ - "id", - "banking_partner", - "kyc_status", - "us", - "token" - ], - "type": "object" - }, - "VirtualAccountsUsage": { - "properties": { - "count": { - "description": "Number of active virtual accounts", - "example": 100, - "type": "integer" + "receiver_amount": { + "type": [ + "string", + "null" + ] }, - "total": { - "description": "Total virtual account fees in cents", - "example": 150000, - "type": "integer" + "network": { + "type": [ + "string", + "null" + ] }, - "unit_cost": { - "description": "Cost per virtual account in cents", - "example": 1500, - "type": "integer" - } - }, - "required": [ - "count", - "unit_cost", - "total" - ], - "type": "object" - }, - "WalletBalanceOut": { - "properties": { - "USDB": { - "$ref": "#/components/schemas/WalletTokenOut" + "counterparty_address": { + "type": [ + "string", + "null" + ] }, - "USDC": { - "$ref": "#/components/schemas/WalletTokenOut" + "tx_hashes": { + "type": "array", + "items": { + "type": "string" + } }, - "USDT": { - "$ref": "#/components/schemas/WalletTokenOut" - } - }, - "required": [ - "USDC", - "USDT", - "USDB" - ], - "type": "object" - }, - "WalletInboundSchemaOut": { - "properties": { - "address": { - "type": "string" + "provider_transaction_ids": { + "type": "array", + "items": { + "type": "string" + } }, - "id": { - "type": "string" + "external_id": { + "type": [ + "string", + "null" + ] }, - "network": { - "enum": [ - "base", - "sepolia", - "arbitrum_sepolia", - "base_sepolia", - "arbitrum", - "polygon", - "polygon_amoy", - "ethereum", - "stellar", - "stellar_testnet", - "tron", - "solana", - "solana_devnet" - ], - "type": "string" + "bank_external_id": { + "type": [ + "string", + "null" + ] }, - "token": { - "$ref": "#/components/schemas/WalletTokenOut" - } - }, - "required": [ - "id", - "address", - "network", - "token" - ], - "type": "object" - }, - "WalletOut": { - "properties": { - "address": { - "example": "0xDD6a3aD0949396e57C7738ba8FC1A46A5a1C372C", - "maxLength": 64, + "memo_code": { + "type": [ + "string", + "null" + ] + }, + "recipient_tax_id": { "type": [ "string", "null" ] }, - "created_at": { - "example": "2021-01-01T00:00:00Z", - "format": "date-time", + "veem_customer_id": { "type": [ "string", "null" ] }, - "external_id": { - "example": "your-database-id", - "maxLength": 255, + "funding_end_to_end_id": { "type": [ "string", "null" ] }, - "id": { - "example": "bl_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" + "payer_tax_id": { + "type": [ + "string", + "null" + ] }, - "name": { - "example": "Blindpay Wallet", - "maxLength": 255, - "type": "string" + "is_otc": { + "type": "boolean" }, - "network": { - "enum": [ - "base", - "sepolia", - "arbitrum_sepolia", - "base_sepolia", - "arbitrum", - "polygon", - "polygon_amoy", - "ethereum", - "stellar", - "stellar_testnet", - "tron", - "solana", - "solana_devnet" - ], - "example": "polygon", - "type": "string" + "created_at": { + "type": [ + "string", + "null" + ] + }, + "updated_at": { + "type": [ + "string", + "null" + ] } }, "required": [ + "kind", "id", - "name", - "network" - ], - "type": "object" + "instance_id", + "status", + "provider", + "currency", + "sender_amount", + "receiver_amount", + "network", + "counterparty_address", + "tx_hashes", + "provider_transaction_ids", + "external_id", + "bank_external_id", + "memo_code", + "recipient_tax_id", + "veem_customer_id", + "funding_end_to_end_id", + "payer_tax_id", + "is_otc", + "created_at", + "updated_at" + ] }, - "WalletTokenOut": { + "MonitoredWallet": { + "type": "object", "properties": { - "address": { + "network": { "type": "string" }, - "amount": { - "type": "number" - }, - "id": { + "address": { "type": "string" }, - "symbol": { + "label": { + "type": "string", + "description": "treasury: for the shared treasury wallet, instance: for a `wallet` row, instance::offramp for an `offramp_wallet` row.", + "example": "instance:inst_abc123" + }, + "source": { + "type": "string", "enum": [ - "USDC", - "USDT", - "USDB" - ], - "type": "string" - } - }, - "required": [ - "address", - "id", - "symbol", - "amount" - ], - "type": "object" - }, - "WebhookEndpoint": { - "properties": { - "created_at": { - "example": "2021-01-01T00:00:00Z", - "format": "date-time", - "type": [ - "string", - "null" + "treasury", + "wallet", + "offramp_wallet" ] }, - "events": { - "example": [ - "customer.new" - ], - "items": { - "enum": [ - "customer.new", - "customer.update", - "customer.delete", - "bankAccount.new", - "payout.new", - "payout.update", - "payout.complete", - "payout.partnerFee", - "blockchainWallet.new", - "payin.new", - "payin.update", - "payin.complete", - "payin.partnerFee", - "tos.accept", - "limitIncrease.new", - "limitIncrease.update", - "virtualAccount.new", - "virtualAccount.complete", - "transfer.new", - "transfer.update", - "transfer.complete", - "wallet.new", - "wallet.inbound" - ], - "type": "string" - }, - "type": "array" - }, - "id": { - "example": "we_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - }, "instance_id": { - "example": "in_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - }, - "last_event_at": { - "anyOf": [ - { - "format": "date-time", - "type": "string" - }, - { - "type": "string" - }, - { - "type": "null" - } - ], - "example": "2024-01-01T00:00:00.000Z" - }, - "updated_at": { - "example": "2021-01-01T00:00:00Z", - "format": "date-time", "type": [ "string", "null" ] - }, - "url": { - "example": "https://example.com/webhook", - "format": "uri", - "type": "string" } }, "required": [ - "id", - "url", - "events", + "network", + "address", + "label", + "source", "instance_id" - ], - "type": "object" + ] }, - "WebhookEndpointIn": { + "CreateInstanceRfiBody": { + "type": "object", "properties": { - "events": { - "example": [ - "customer.new" - ], + "created_by_email": { + "type": "string", + "format": "email" + }, + "request": { + "type": "array", "items": { - "enum": [ - "customer.new", - "customer.update", - "customer.delete", - "bankAccount.new", - "payout.new", - "payout.update", - "payout.complete", - "payout.partnerFee", - "blockchainWallet.new", - "payin.new", - "payin.update", - "payin.complete", - "payin.partnerFee", - "tos.accept", - "limitIncrease.new", - "limitIncrease.update", - "virtualAccount.new", - "virtualAccount.complete", - "transfer.new", - "transfer.update", - "transfer.complete", - "wallet.new", - "wallet.inbound" - ], - "type": "string" + "$ref": "#/components/schemas/RfiSection" }, - "type": "array" - }, - "url": { - "example": "https://example.com/webhook", - "format": "uri", - "type": "string" - } - }, - "required": [ - "url", - "events" - ], - "type": "object" - }, - "WebhookEndpointOut": { - "properties": { - "id": { - "example": "we_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" + "minItems": 1, + "maxItems": 20 } }, "required": [ - "id" - ], - "type": "object" + "created_by_email", + "request" + ] } }, - "securitySchemes": { - "Bearer": { - "bearerFormat": "JWT", - "scheme": "bearer", - "type": "http" - } - } + "parameters": {} }, - "info": { - "title": "BlindPay API", - "version": "1.0.0" - }, - "openapi": "3.1.0", "paths": { - "/v1/available/bank-details": { - "get": { + "/v1/instances/{id}": { + "put": { + "x-sdk": true, + "tags": [ + "Instances" + ], + "summary": "Update Instance", "parameters": [ { - "in": "query", - "name": "rail", + "schema": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "in_000000000000" + }, "required": true, + "name": "id", + "in": "path" + }, + { "schema": { - "enum": [ - "wire", - "ach", - "pix", - "pix_safe", - "ted", - "spei_bitso", - "transfers_bitso", - "ach_cop_bitso", - "international_swift", - "rtp", - "sepa" - ], - "type": "string" - } + "type": "string", + "maxLength": 255, + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, + "required": false, + "name": "Idempotency-Key", + "in": "header" } ], + "requestBody": { + "description": "Update instance", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateInstanceIn" + } + } + } + }, "responses": { "200": { + "description": "Instance updated", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AvailableBankDetails" + "$ref": "#/components/schemas/Success" } } - }, - "description": "Retrieve bank details by rail" + } }, "400": { + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "security": [], - "summary": "Bank Details", + } + }, + "delete": { + "x-sdk": true, "tags": [ - "Available" + "Instances" ], - "x-sdk": true - } - }, - "/v1/available/naics": { - "get": { - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AvailableNaicsList" - } - } - }, - "description": "Retrieve NAICS (business industry) list" - }, - "400": { - "content": { - "application/json": { - "examples": { - "VALIDATION_FAILED": { - "summary": "VALIDATION_FAILED", - "value": { - "code": "VALIDATION_FAILED", - "description": "The request contains invalid fields. Check the errors list for details.", - "errors": [], - "message": "validation_failed", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } - }, - "schema": { - "$ref": "#/components/schemas/Error" - } - } - }, - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." - }, - "401": { - "content": { - "application/json": { - "examples": { - "AUTH_UNAUTHORIZED": { - "summary": "AUTH_UNAUTHORIZED", - "value": { - "code": "AUTH_UNAUTHORIZED", - "description": "Authentication failed. Check your API key or session and try again.", - "errors": [], - "message": "unauthorized", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } - }, - "schema": { - "$ref": "#/components/schemas/Error" - } - } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." - }, - "403": { - "content": { - "application/json": { - "examples": { - "AUTH_FORBIDDEN": { - "summary": "AUTH_FORBIDDEN", - "value": { - "code": "AUTH_FORBIDDEN", - "description": "You do not have permission to perform this action.", - "errors": [], - "message": "user_not_allowed", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } - }, - "schema": { - "$ref": "#/components/schemas/Error" - } - } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." - }, - "429": { - "content": { - "application/json": { - "examples": { - "AUTH_RATE_LIMITED": { - "summary": "AUTH_RATE_LIMITED", - "value": { - "code": "AUTH_RATE_LIMITED", - "description": "Too many requests. Wait a moment and try again.", - "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } - }, - "schema": { - "$ref": "#/components/schemas/Error" - } - } + "summary": "Delete Instance", + "parameters": [ + { + "schema": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "in_000000000000" }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + "required": true, + "name": "id", + "in": "path" }, - "500": { - "content": { - "application/json": { - "examples": { - "INTERNAL_ERROR": { - "summary": "INTERNAL_ERROR", - "value": { - "code": "INTERNAL_ERROR", - "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", - "errors": [], - "message": "internal_error", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } - }, - "schema": { - "$ref": "#/components/schemas/Error" - } - } + { + "schema": { + "type": "string", + "maxLength": 255, + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + "required": false, + "name": "Idempotency-Key", + "in": "header" } - }, - "security": [], - "summary": "NAICS list", - "tags": [ - "Available" - ], - "x-sdk": true - } - }, - "/v1/available/rails": { - "get": { + ], "responses": { "200": { + "description": "Instance deleted", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AvailableRails" + "$ref": "#/components/schemas/Success" } } - }, - "description": "Retrieve available rails" + } }, "400": { + "description": "Possible error codes: `AUTH_FORBIDDEN`, `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { + "AUTH_FORBIDDEN": { + "summary": "AUTH_FORBIDDEN", + "value": { + "success": false, + "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", + "description": "You do not have permission to perform this action.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "security": [], - "summary": "Rails", - "tags": [ - "Available" - ], - "x-sdk": true + } } }, - "/v1/available/swift/{swift}": { + "/v1/instances/{id}/members": { "get": { + "x-sdk": true, + "tags": [ + "Instances" + ], + "summary": "Retrieve Instance Members", "parameters": [ { - "in": "path", - "name": "swift", - "required": true, "schema": { - "anyOf": [ - { - "maxLength": 8, - "minLength": 8, - "pattern": "^[A-Z0-9]+$", - "type": "string" - }, - { - "maxLength": 11, - "minLength": 11, - "pattern": "^[A-Z0-9]+$", - "type": "string" - } - ], - "example": "BOFAUS3NLMA" - } + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "in_000000000000" + }, + "required": true, + "name": "id", + "in": "path" } ], "responses": { "200": { + "description": "Retrieve instance members", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SwiftCodeResponse" + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "us_000000000000" + }, + "email": { + "type": "string", + "format": "email", + "example": "email@example.com" + }, + "first_name": { + "type": "string", + "minLength": 1, + "maxLength": 100, + "example": "Harry" + }, + "middle_name": { + "type": [ + "string", + "null" + ], + "minLength": 1, + "maxLength": 100, + "example": "James" + }, + "last_name": { + "type": "string", + "minLength": 1, + "maxLength": 100, + "example": "Potter" + }, + "image_url": { + "type": "string", + "format": "uri", + "example": "https://example.com/image.png" + }, + "created_at": { + "type": [ + "string", + "null" + ], + "format": "date-time", + "example": "2021-01-01T00:00:00Z" + }, + "has_passkey": { + "type": [ + "boolean", + "null" + ], + "example": true + }, + "role": { + "type": "string", + "enum": [ + "owner", + "admin", + "finance", + "checker", + "operations", + "developer", + "viewer" + ], + "example": "admin" + } + }, + "required": [ + "id", + "email", + "first_name", + "last_name", + "image_url", + "role" + ] + } } } - }, - "description": "Swift code bank details" + } }, "400": { + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Swift code bank details", - "tags": [ - "Available" - ], - "x-sdk": true + } } }, - "/v1/e/instances/{instance_id}/tos": { - "post": { + "/v1/instances/{id}/members/{user_id}": { + "delete": { + "x-sdk": true, + "tags": [ + "Instances" + ], + "summary": "Delete Member from Instance", "parameters": [ { - "in": "path", - "name": "instance_id", + "schema": { + "type": "string" + }, "required": true, + "name": "id", + "in": "path" + }, + { "schema": { - "example": "in_000000000000", - "maxLength": 15, - "minLength": 15, "type": "string" - } + }, + "required": true, + "name": "user_id", + "in": "path" + }, + { + "schema": { + "type": "string", + "maxLength": 255, + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, + "required": false, + "name": "Idempotency-Key", + "in": "header" } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/InitiateTosIn" - } - } - }, - "description": "Initiate a new terms of service" - }, "responses": { "200": { + "description": "Member deleted from instance successfully", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/InitiateTosOut" + "$ref": "#/components/schemas/Success" } } - }, - "description": "Initiate terms of service" + } }, "400": { + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Initiate Terms of Service", + } + }, + "put": { + "x-sdk": true, "tags": [ - "Terms Of Service" + "Instances" ], - "x-sdk": true - } - }, - "/v1/e/payins/{id}": { - "get": { + "summary": "Update Instance Member Role", "parameters": [ { - "in": "path", - "name": "id", + "schema": { + "type": "string" + }, "required": true, + "name": "id", + "in": "path" + }, + { "schema": { - "example": "pi_000000000000", - "maxLength": 15, - "minLength": 15, "type": "string" - } + }, + "required": true, + "name": "user_id", + "in": "path" + }, + { + "schema": { + "type": "string", + "maxLength": 255, + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, + "required": false, + "name": "Idempotency-Key", + "in": "header" } ], + "requestBody": { + "description": "Update instance member role", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateInstanceMemberIn" + } + } + } + }, "responses": { "200": { + "description": "Member role updated successfully", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PayinOut" + "$ref": "#/components/schemas/Success" } } - }, - "description": "List payins" + } }, "400": { + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, - "404": { + "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "examples": { - "PAYINS_NOT_FOUND": { - "summary": "PAYINS_NOT_FOUND", - "value": { - "code": "PAYINS_NOT_FOUND", - "description": "The requested payin was not found.", - "errors": [], - "message": "payin_not_found", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } - }, "schema": { "$ref": "#/components/schemas/Error" - } - } - }, - "description": "Possible error codes: `PAYINS_NOT_FOUND`. See the Error responses section for retry semantics." - }, - "429": { - "content": { - "application/json": { + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Retrieve Payin Track", - "tags": [ - "Payins" - ], - "x-sdk": true + } } }, - "/v1/e/payouts/{id}": { - "get": { + "/v1/instances/{id}/ownership": { + "post": { + "x-sdk": true, + "tags": [ + "Instances" + ], + "summary": "Migrate Instance Ownership", "parameters": [ { - "in": "path", - "name": "id", - "required": true, "schema": { - "example": "pa_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } + "maxLength": 15, + "example": "in_000000000000" + }, + "required": true, + "name": "id", + "in": "path" + }, + { + "schema": { + "type": "string", + "maxLength": 255, + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, + "required": false, + "name": "Idempotency-Key", + "in": "header" } ], + "requestBody": { + "description": "Transfer instance ownership to another current member", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MigrateInstanceOwnershipIn" + } + } + } + }, "responses": { "200": { + "description": "Ownership transferred", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PayoutOut" + "$ref": "#/components/schemas/Success" } } - }, - "description": "List payouts" + } }, "400": { + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, - "404": { + "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "examples": { - "PAYOUTS_NOT_FOUND": { - "summary": "PAYOUTS_NOT_FOUND", - "value": { - "code": "PAYOUTS_NOT_FOUND", - "description": "The requested payout was not found.", - "errors": [], - "message": "payout_not_found", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } - }, "schema": { "$ref": "#/components/schemas/Error" - } - } - }, - "description": "Possible error codes: `PAYOUTS_NOT_FOUND`. See the Error responses section for retry semantics." - }, - "429": { - "content": { - "application/json": { + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Retrieve Payout Track", - "tags": [ - "Payouts" - ], - "x-sdk": true + } } }, - "/v1/e/transfers/{id}": { + "/v1/instances/{instance_id}/rfi": { "get": { + "x-sdk": true, + "tags": [ + "Instances" + ], + "summary": "Get Open RFI for Instance", + "description": "Returns the open (pending) RFI for this instance, or null if the instance has no pending RFI.", "parameters": [ { - "in": "path", - "name": "id", - "required": true, "schema": { - "example": "pa_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } + "maxLength": 15, + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" } ], "responses": { "200": { + "description": "Open instance RFI, or null if none", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TransferOut" + "$ref": "#/components/schemas/InstanceRfi" } } - }, - "description": "List transfers" + } }, "400": { + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `COMPLIANCE_RFI_INVALID`, `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { + "COMPLIANCE_RFI_INVALID": { + "summary": "COMPLIANCE_RFI_INVALID", + "value": { + "success": false, + "code": "COMPLIANCE_RFI_INVALID", + "message": "rfi_request_corrupt", + "description": "The information request could not be processed. Check the submitted fields.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Retrieve Transfer Track", + } + }, + "post": { + "x-sdk": true, "tags": [ - "Transfers" + "Instances" ], - "x-sdk": true - } - }, - "/v1/instances/{id}": { - "delete": { + "summary": "Submit Instance RFI Response", + "description": "Submit a flat response object for the open instance RFI. Standalone: submitting does not change any instance or onboarding status. Returns `{ success: false, reason }` when no pending RFI exists, callers should refetch the RFI state instead of retrying.", "parameters": [ { - "in": "path", - "name": "id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } - }, - { - "in": "header", - "name": "Idempotency-Key", - "required": false, - "schema": { - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "maxLength": 255, - "type": "string" - } + "maxLength": 15, + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": {} + } + } + } + }, "responses": { "200": { + "description": "RFI submitted (success: true) or rejected because no pending RFI exists (success: false)", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Success" + "anyOf": [ + { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "success" + ] + }, + { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "enum": [ + false + ] + }, + "reason": { + "type": "string", + "enum": [ + "no_pending_rfi", + "already_resolved" + ] + } + }, + "required": [ + "success", + "reason" + ] + } + ] } } - }, - "description": "Instance deleted" + } }, "400": { + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { - "AUTH_FORBIDDEN": { - "summary": "AUTH_FORBIDDEN", - "value": { - "code": "AUTH_FORBIDDEN", - "description": "You do not have permission to perform this action.", - "errors": [], - "message": "user_not_allowed", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`, `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `COMPLIANCE_RFI_INVALID`, `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { + "COMPLIANCE_RFI_INVALID": { + "summary": "COMPLIANCE_RFI_INVALID", + "value": { + "success": false, + "code": "COMPLIANCE_RFI_INVALID", + "message": "rfi_request_corrupt", + "description": "The information request could not be processed. Check the submitted fields.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Delete Instance", + } + } + }, + "/v1/e/instances/{instance_id}/tos": { + "post": { + "x-sdk": true, "tags": [ - "Instances" + "Terms Of Service" ], - "x-sdk": true - }, - "put": { + "summary": "Initiate Terms of Service", "parameters": [ { - "in": "path", - "name": "id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } - }, - { - "in": "header", - "name": "Idempotency-Key", - "required": false, - "schema": { - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "maxLength": 255, - "type": "string" - } + "maxLength": 15, + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" } ], "requestBody": { + "description": "Initiate a new terms of service", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UpdateInstanceIn" + "$ref": "#/components/schemas/InitiateTosIn" } } - }, - "description": "Update instance" + } }, "responses": { "200": { + "description": "Initiate terms of service", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Success" + "$ref": "#/components/schemas/InitiateTosOut" } } - }, - "description": "Instance updated" + } }, "400": { + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." - } - }, - "summary": "Update Instance", - "tags": [ - "Instances" - ], - "x-sdk": true - } - }, - "/v1/instances/{id}/members": { - "get": { - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "example": "in_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" } } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "items": { - "properties": { - "created_at": { - "example": "2021-01-01T00:00:00Z", - "format": "date-time", - "type": [ - "string", - "null" - ] - }, - "email": { - "example": "email@example.com", - "format": "email", - "type": "string" - }, - "first_name": { - "example": "Harry", - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "has_passkey": { - "example": true, - "type": [ - "boolean", - "null" - ] - }, - "id": { - "example": "us_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - }, - "image_url": { - "example": "https://example.com/image.png", - "format": "uri", - "type": "string" - }, - "last_name": { - "example": "Potter", - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "middle_name": { - "example": "James", - "maxLength": 100, - "minLength": 1, - "type": [ - "string", - "null" - ] - }, - "role": { - "enum": [ - "owner", - "admin", - "finance", - "checker", - "operations", - "developer", - "viewer" - ], - "example": "admin", - "type": "string" - } - }, - "required": [ - "id", - "email", - "first_name", - "last_name", - "image_url", - "role" - ], - "type": "object" - }, - "type": "array" + } + } + }, + "/v1/instances/{instance_id}/customers/{customer_id}/limit-increase": { + "post": { + "x-sdk": true, + "tags": [ + "Customers" + ], + "summary": "Request Limit Increase", + "parameters": [ + { + "schema": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" + }, + { + "schema": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "description": "Customer ID", + "example": "re_000000000000" + }, + "required": true, + "name": "customer_id", + "in": "path" + }, + { + "schema": { + "type": "string", + "maxLength": 255, + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, + "required": false, + "name": "Idempotency-Key", + "in": "header" + } + ], + "requestBody": { + "description": "Request new limit increase", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomerLimitIncreaseIn" + } + } + } + }, + "responses": { + "200": { + "description": "Create customer limit increase", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomerLimitIncreaseOut" } } - }, - "description": "Retrieve instance members" + } }, "400": { + "description": "Possible error codes: `CUSTOMERS_KYC_NOT_APPROVED`, `FILES_TOO_LARGE`, `FILES_TYPE_NOT_ALLOWED`, `FILES_UNREADABLE`, `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { + "CUSTOMERS_KYC_NOT_APPROVED": { + "summary": "CUSTOMERS_KYC_NOT_APPROVED", + "value": { + "success": false, + "code": "CUSTOMERS_KYC_NOT_APPROVED", + "message": "kyc_not_approved", + "description": "This customer has not completed verification yet. Complete the verification before continuing.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "FILES_TOO_LARGE": { + "summary": "FILES_TOO_LARGE", + "value": { + "success": false, + "code": "FILES_TOO_LARGE", + "message": "file_size_exceeded", + "description": "The file is too large. Upload a smaller file.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "FILES_TYPE_NOT_ALLOWED": { + "summary": "FILES_TYPE_NOT_ALLOWED", + "value": { + "success": false, + "code": "FILES_TYPE_NOT_ALLOWED", + "message": "file_type_not_allowed", + "description": "This file type is not allowed. Upload a supported file type.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "FILES_UNREADABLE": { + "summary": "FILES_UNREADABLE", + "value": { + "success": false, + "code": "FILES_UNREADABLE", + "message": "file_download_failed", + "description": "We could not read the uploaded file. Check the file and try again.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, + } + } + } + }, + "404": { + "description": "Possible error codes: `CUSTOMERS_NOT_FOUND`. See the Error responses section for retry semantics.", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/Error" + }, + "examples": { + "CUSTOMERS_NOT_FOUND": { + "summary": "CUSTOMERS_NOT_FOUND", + "value": { + "success": false, + "code": "CUSTOMERS_NOT_FOUND", + "message": "customer_not_found", + "description": "The requested customer was not found.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `FILES_UNREADABLE`, `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { + "FILES_UNREADABLE": { + "summary": "FILES_UNREADABLE", + "value": { + "success": false, + "code": "FILES_UNREADABLE", + "message": "file_download_failed", + "description": "We could not read the uploaded file. Check the file and try again.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Retrieve Instance Members", + } + }, + "get": { + "x-sdk": true, "tags": [ - "Instances" + "Customers" ], - "x-sdk": true - } - }, - "/v1/instances/{id}/members/{user_id}": { - "delete": { + "summary": "Retrieve Limit Increase Requests", "parameters": [ { - "in": "path", - "name": "id", - "required": true, "schema": { - "type": "string" - } - }, - { - "in": "path", - "name": "user_id", + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "in_000000000000" + }, "required": true, - "schema": { - "type": "string" - } + "name": "instance_id", + "in": "path" }, { - "in": "header", - "name": "Idempotency-Key", - "required": false, "schema": { - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "maxLength": 255, - "type": "string" - } + "type": "string", + "minLength": 15, + "maxLength": 15, + "description": "Customer ID", + "example": "re_000000000000" + }, + "required": true, + "name": "customer_id", + "in": "path" } ], "responses": { "200": { + "description": "List customer limit increase requests", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Success" + "type": "array", + "items": { + "$ref": "#/components/schemas/GetCustomerLimitIncreaseOut" + } } } - }, - "description": "Member deleted from instance successfully" + } }, "400": { + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Delete Member from Instance", + } + } + }, + "/v1/instances/{instance_id}/customers": { + "post": { + "x-sdk": true, "tags": [ - "Instances" + "Customers" ], - "x-sdk": true - }, - "put": { + "summary": "Create Customer", "parameters": [ { - "in": "path", - "name": "id", - "required": true, "schema": { - "type": "string" - } - }, - { - "in": "path", - "name": "user_id", + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "in_000000000000" + }, "required": true, - "schema": { - "type": "string" - } + "name": "instance_id", + "in": "path" }, { - "in": "header", - "name": "Idempotency-Key", - "required": false, "schema": { - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "type": "string", "maxLength": 255, - "type": "string" - } + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, + "required": false, + "name": "Idempotency-Key", + "in": "header" } ], "requestBody": { + "description": "Create a new customer", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UpdateInstanceMemberIn" + "$ref": "#/components/schemas/CreateCustomerIn" } } - }, - "description": "Update instance member role" + } }, "responses": { "200": { + "description": "Create customer", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Success" + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "customer_id": { + "type": "string" + } + }, + "required": [ + "id", + "customer_id" + ] } } - }, - "description": "Member role updated successfully" + } }, "400": { + "description": "Possible error codes: `CUSTOMERS_ALREADY_APPROVED`, `CUSTOMERS_BUSINESS_ENHANCED_NOT_AVAILABLE`, `CUSTOMERS_ENHANCED_KYC_REQUIRED`, `CUSTOMERS_INVALID_PHONE`, `CUSTOMERS_INVALID_TAX_ID`, `FILES_TOO_LARGE`, `FILES_TYPE_NOT_ALLOWED`, `FILES_UNREADABLE`, `TOS_ALREADY_ACCEPTED`, `TOS_NOT_ACCEPTED`, `TOS_NOT_FOUND`, `VALIDATION_FAILED`, `VALIDATION_MISSING_REQUIRED_FIELDS`, `VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { + "CUSTOMERS_ALREADY_APPROVED": { + "summary": "CUSTOMERS_ALREADY_APPROVED", + "value": { + "success": false, + "code": "CUSTOMERS_ALREADY_APPROVED", + "message": "customer_already_approved", + "description": "This customer is already approved.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "CUSTOMERS_BUSINESS_ENHANCED_NOT_AVAILABLE": { + "summary": "CUSTOMERS_BUSINESS_ENHANCED_NOT_AVAILABLE", + "value": { + "success": false, + "code": "CUSTOMERS_BUSINESS_ENHANCED_NOT_AVAILABLE", + "message": "business_enhanced_not_available", + "description": "Enhanced verification is not available for business customers. Use standard verification (kyc_type: standard) for businesses.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "CUSTOMERS_ENHANCED_KYC_REQUIRED": { + "summary": "CUSTOMERS_ENHANCED_KYC_REQUIRED", + "value": { + "success": false, + "code": "CUSTOMERS_ENHANCED_KYC_REQUIRED", + "message": "only_enhanced_kyc_allowed_for_high_risk_countries", + "description": "Individuals from high-risk countries must use enhanced verification (kyc_type: enhanced); standard verification is not available for them. See https://www.blindpay.com/docs/kb/supported-countries for country tiers.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "CUSTOMERS_INVALID_PHONE": { + "summary": "CUSTOMERS_INVALID_PHONE", + "value": { + "success": false, + "code": "CUSTOMERS_INVALID_PHONE", + "message": "invalid_phone_number", + "description": "The phone number provided is not valid. Check the number and try again.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "CUSTOMERS_INVALID_TAX_ID": { + "summary": "CUSTOMERS_INVALID_TAX_ID", + "value": { + "success": false, + "code": "CUSTOMERS_INVALID_TAX_ID", + "message": "invalid_cpf_or_rg_tax_id", + "description": "The tax ID provided is not valid. Check the value and try again.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "FILES_TOO_LARGE": { + "summary": "FILES_TOO_LARGE", + "value": { + "success": false, + "code": "FILES_TOO_LARGE", + "message": "file_size_exceeded", + "description": "The file is too large. Upload a smaller file.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "FILES_TYPE_NOT_ALLOWED": { + "summary": "FILES_TYPE_NOT_ALLOWED", + "value": { + "success": false, + "code": "FILES_TYPE_NOT_ALLOWED", + "message": "file_type_not_allowed", + "description": "This file type is not allowed. Upload a supported file type.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "FILES_UNREADABLE": { + "summary": "FILES_UNREADABLE", + "value": { + "success": false, + "code": "FILES_UNREADABLE", + "message": "file_download_failed", + "description": "We could not read the uploaded file. Check the file and try again.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "TOS_ALREADY_ACCEPTED": { + "summary": "TOS_ALREADY_ACCEPTED", + "value": { + "success": false, + "code": "TOS_ALREADY_ACCEPTED", + "message": "tos_id_already_accepted", + "description": "These terms of service were already accepted.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "TOS_NOT_ACCEPTED": { + "summary": "TOS_NOT_ACCEPTED", + "value": { + "success": false, + "code": "TOS_NOT_ACCEPTED", + "message": "please_accept_terms_of_service", + "description": "The terms of service must be accepted before continuing.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "TOS_NOT_FOUND": { + "summary": "TOS_NOT_FOUND", + "value": { + "success": false, + "code": "TOS_NOT_FOUND", + "message": "tos_not_found", + "description": "The requested terms of service record was not found.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VALIDATION_MISSING_REQUIRED_FIELDS": { + "summary": "VALIDATION_MISSING_REQUIRED_FIELDS", + "value": { + "success": false, + "code": "VALIDATION_MISSING_REQUIRED_FIELDS", + "message": "missing_required_fields", + "description": "Required fields are missing. Provide the missing fields and try again.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED": { + "summary": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", + "value": { "success": false, + "code": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", + "message": "id_doc_front_file_required", + "description": "Additional documents are required to create this virtual account. Upload the requested documents.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `FILES_UNREADABLE`, `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { + "FILES_UNREADABLE": { + "summary": "FILES_UNREADABLE", + "value": { + "success": false, + "code": "FILES_UNREADABLE", + "message": "file_download_failed", + "description": "We could not read the uploaded file. Check the file and try again.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Update Instance Member Role", + } + }, + "get": { + "x-sdk": true, "tags": [ - "Instances" + "Customers" ], - "x-sdk": true - } - }, - "/v1/instances/{id}/ownership": { - "post": { + "summary": "Retrieve Customers", "parameters": [ { - "in": "path", - "name": "id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, + "maxLength": 15, + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" + }, + { + "schema": { + "type": "string", + "enum": [ + "10", + "50", + "100", + "200", + "500", + "1000" + ], + "description": "Number of items to return", + "example": "50" + }, + "required": false, + "name": "limit", + "in": "query" + }, + { + "schema": { + "type": "string", + "enum": [ + "0", + "10", + "50", + "100", + "200", + "500", + "1000" + ], + "description": "Number of items to skip", + "example": "0" + }, + "required": false, + "name": "offset", + "in": "query" + }, + { + "schema": { + "type": "string", + "description": "A cursor for use in pagination. starting_after is an object ID that defines your place in the list.", + "example": "pi_123" + }, + "required": false, + "name": "starting_after", + "in": "query" + }, + { + "schema": { + "type": "string", + "description": "A cursor for use in pagination. ending_before is an object ID that defines your place in the list.", + "example": "pi_123" + }, + "required": false, + "name": "ending_before", + "in": "query" + }, + { + "schema": { "type": "string" - } + }, + "required": false, + "name": "full_name", + "in": "query" }, { - "in": "header", - "name": "Idempotency-Key", + "schema": { + "type": "string" + }, "required": false, + "name": "customer_name", + "in": "query" + }, + { + "schema": { + "type": "string", + "enum": [ + "verifying", + "approved", + "rejected", + "deprecated", + "pending_review", + "awaiting_contract", + "compliance_request", + "approved_rfi" + ] + }, + "required": false, + "name": "status", + "in": "query" + }, + { "schema": { - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "maxLength": 255, "type": "string" - } + }, + "required": false, + "name": "customer_id", + "in": "query" + }, + { + "schema": { + "type": "string" + }, + "required": false, + "name": "bank_account_id", + "in": "query" + }, + { + "schema": { + "type": "string" + }, + "required": false, + "name": "country", + "in": "query" } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/MigrateInstanceOwnershipIn" - } - } - }, - "description": "Transfer instance ownership to another current member" - }, "responses": { "200": { + "description": "List customers with pagination", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Success" + "anyOf": [ + { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomerOut" + } + }, + "pagination": { + "$ref": "#/components/schemas/PaginationMetadata" + } + }, + "required": [ + "data", + "pagination" + ] + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomerOut" + } + } + ] } } - }, - "description": "Ownership transferred" + } }, "400": { + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Migrate Instance Ownership", - "tags": [ - "Instances" - ], - "x-sdk": true + } } }, - "/v1/instances/{instance_id}/billing/fees": { + "/v1/instances/{instance_id}/customers/{id}": { "get": { - "description": "Get all fees for an instance, sorted by payment method (fiat first, then blockchain)", + "x-sdk": true, + "tags": [ + "Customers" + ], + "summary": "Retrieve Customer", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "description": "Instance id", - "example": "in_000000000000", + "type": "string", + "minLength": 15, "maxLength": 15, + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" + }, + { + "schema": { + "type": "string", "minLength": 15, - "type": "string" - } + "maxLength": 15, + "example": "re_000000000000" + }, + "required": true, + "name": "id", + "in": "path" } ], "responses": { "200": { + "description": "Get customer", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/GetFeesOut" + "$ref": "#/components/schemas/CustomerOut" } } - }, - "description": "Instance fees retrieved and sorted" + } }, "400": { + "description": "Possible error codes: `CUSTOMERS_NOT_FOUND`, `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { + "CUSTOMERS_NOT_FOUND": { + "summary": "CUSTOMERS_NOT_FOUND", + "value": { + "success": false, + "code": "CUSTOMERS_NOT_FOUND", + "message": "customer_not_found", + "description": "The requested customer was not found.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { "schema": { - "properties": { - "message": { - "type": "string" + "$ref": "#/components/schemas/Error" + }, + "examples": { + "AUTH_FORBIDDEN": { + "summary": "AUTH_FORBIDDEN", + "value": { + "success": false, + "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", + "description": "You do not have permission to perform this action.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" } - }, - "required": [ - "message" - ], - "type": "object" + } } } - }, - "description": "User not allowed" + } }, - "404": { + "422": { + "description": "Possible error codes: `DATA_INTEGRITY_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { "schema": { - "properties": { - "message": { - "type": "string" + "$ref": "#/components/schemas/Error" + }, + "examples": { + "DATA_INTEGRITY_ERROR": { + "summary": "DATA_INTEGRITY_ERROR", + "value": { + "success": false, + "code": "DATA_INTEGRITY_ERROR", + "message": "data_integrity_error", + "description": "This record could not be loaded because it contains invalid stored data. Contact support with the ID below.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" } - }, - "required": [ - "message" - ], - "type": "object" + } } } - }, - "description": "Instance not found" + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Get Instance Fees", + } + }, + "put": { + "x-sdk": true, "tags": [ - "Fees" + "Customers" ], - "x-sdk": true - } - }, - "/v1/instances/{instance_id}/create-asset-trustline": { - "post": { + "summary": "Update Customer", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", + "type": "string", + "minLength": 15, "maxLength": 15, + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" + }, + { + "schema": { + "type": "string", "minLength": 15, - "type": "string" - } + "maxLength": 15, + "example": "re_000000000000" + }, + "required": true, + "name": "id", + "in": "path" }, { - "in": "header", - "name": "Idempotency-Key", - "required": false, "schema": { - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "type": "string", "maxLength": 255, - "type": "string" - } + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, + "required": false, + "name": "Idempotency-Key", + "in": "header" } ], "requestBody": { + "description": "Update a customer", "content": { "application/json": { "schema": { - "properties": { - "address": { - "type": "string" - } - }, - "required": [ - "address" - ], - "type": "object" + "$ref": "#/components/schemas/UpdateCustomerIn" } } } }, "responses": { "200": { + "description": "Customer updated", "content": { "application/json": { "schema": { - "properties": { - "xdr": { - "type": "string" + "$ref": "#/components/schemas/Success" + } + } + } + }, + "400": { + "description": "Possible error codes: `CUSTOMERS_INVALID_PHONE`, `CUSTOMERS_INVALID_TAX_ID`, `CUSTOMERS_NOT_FOUND`, `FILES_TOO_LARGE`, `FILES_TYPE_NOT_ALLOWED`, `FILES_UNREADABLE`, `VALIDATION_FAILED`. See the Error responses section for retry semantics.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, + "examples": { + "CUSTOMERS_INVALID_PHONE": { + "summary": "CUSTOMERS_INVALID_PHONE", + "value": { + "success": false, + "code": "CUSTOMERS_INVALID_PHONE", + "message": "invalid_phone_number", + "description": "The phone number provided is not valid. Check the number and try again.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "CUSTOMERS_INVALID_TAX_ID": { + "summary": "CUSTOMERS_INVALID_TAX_ID", + "value": { + "success": false, + "code": "CUSTOMERS_INVALID_TAX_ID", + "message": "invalid_cpf_or_rg_tax_id", + "description": "The tax ID provided is not valid. Check the value and try again.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "CUSTOMERS_NOT_FOUND": { + "summary": "CUSTOMERS_NOT_FOUND", + "value": { + "success": false, + "code": "CUSTOMERS_NOT_FOUND", + "message": "customer_not_found", + "description": "The requested customer was not found.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "FILES_TOO_LARGE": { + "summary": "FILES_TOO_LARGE", + "value": { + "success": false, + "code": "FILES_TOO_LARGE", + "message": "file_size_exceeded", + "description": "The file is too large. Upload a smaller file.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "FILES_TYPE_NOT_ALLOWED": { + "summary": "FILES_TYPE_NOT_ALLOWED", + "value": { + "success": false, + "code": "FILES_TYPE_NOT_ALLOWED", + "message": "file_type_not_allowed", + "description": "This file type is not allowed. Upload a supported file type.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "FILES_UNREADABLE": { + "summary": "FILES_UNREADABLE", + "value": { + "success": false, + "code": "FILES_UNREADABLE", + "message": "file_download_failed", + "description": "We could not read the uploaded file. Check the file and try again.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "required": [ - "xdr" - ], - "type": "object" - } - } - }, - "description": "Create asset trustline" - }, - "400": { - "content": { - "application/json": { - "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `FILES_UNREADABLE`, `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { + "FILES_UNREADABLE": { + "summary": "FILES_UNREADABLE", + "value": { + "success": false, + "code": "FILES_UNREADABLE", + "message": "file_download_failed", + "description": "We could not read the uploaded file. Check the file and try again.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Create Asset Trustline", + } + }, + "delete": { + "x-sdk": true, "tags": [ - "Stellar" + "Customers" ], - "x-sdk": true - } - }, - "/v1/instances/{instance_id}/customers": { - "get": { + "summary": "Delete Customer", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } - }, - { - "in": "query", - "name": "limit", - "required": false, - "schema": { - "description": "Number of items to return", - "enum": [ - "10", - "50", - "100", - "200", - "500", - "1000" - ], - "example": "50", - "type": "string" - } - }, - { - "in": "query", - "name": "offset", - "required": false, - "schema": { - "description": "Number of items to skip", - "enum": [ - "0", - "10", - "50", - "100", - "200", - "500", - "1000" - ], - "example": "0", - "type": "string" - } - }, - { - "in": "query", - "name": "starting_after", - "required": false, - "schema": { - "description": "A cursor for use in pagination. starting_after is an object ID that defines your place in the list.", - "example": "pi_123", - "type": "string" - } - }, - { - "in": "query", - "name": "ending_before", - "required": false, - "schema": { - "description": "A cursor for use in pagination. ending_before is an object ID that defines your place in the list.", - "example": "pi_123", - "type": "string" - } - }, - { - "in": "query", - "name": "full_name", - "required": false, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "customer_name", - "required": false, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "status", - "required": false, - "schema": { - "enum": [ - "verifying", - "approved", - "rejected", - "deprecated", - "pending_review", - "awaiting_contract", - "compliance_request", - "approved_rfi" - ], - "type": "string" - } + "maxLength": 15, + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" }, { - "in": "query", - "name": "customer_id", - "required": false, "schema": { - "type": "string" - } + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "re_000000000000" + }, + "required": true, + "name": "id", + "in": "path" }, { - "in": "query", - "name": "bank_account_id", - "required": false, "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "country", + "type": "string", + "maxLength": 255, + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, "required": false, - "schema": { - "type": "string" - } + "name": "Idempotency-Key", + "in": "header" } ], "responses": { "200": { + "description": "Customer deleted", "content": { "application/json": { "schema": { - "anyOf": [ - { - "properties": { - "data": { - "items": { - "$ref": "#/components/schemas/CustomerOut" - }, - "type": "array" - }, - "pagination": { - "$ref": "#/components/schemas/PaginationMetadata" - } - }, - "required": [ - "data", - "pagination" - ], - "type": "object" - }, - { - "items": { - "$ref": "#/components/schemas/CustomerOut" - }, - "type": "array" - } - ] + "$ref": "#/components/schemas/Success" } } - }, - "description": "List customers with pagination" + } }, "400": { + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Retrieve Customers", + } + } + }, + "/v1/instances/{instance_id}/limits/customers/{id}": { + "get": { + "x-sdk": true, "tags": [ "Customers" ], - "x-sdk": true - }, - "post": { + "summary": "Retrieve Customer Limits", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } + "maxLength": 15, + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" }, { - "in": "header", - "name": "Idempotency-Key", - "required": false, "schema": { - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "maxLength": 255, - "type": "string" - } + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "re_000000000000" + }, + "required": true, + "name": "id", + "in": "path" } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateCustomerIn" - } - } - }, - "description": "Create a new customer" - }, "responses": { "200": { + "description": "Get customer limits", "content": { "application/json": { "schema": { - "properties": { - "customer_id": { - "type": "string" - }, - "id": { - "type": "string" - } - }, - "required": [ - "id", - "customer_id" - ], - "type": "object" + "$ref": "#/components/schemas/GetCustomerLimitsOut" } } - }, - "description": "Create customer" + } }, "400": { + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { - "CUSTOMERS_ALREADY_APPROVED": { - "summary": "CUSTOMERS_ALREADY_APPROVED", + "VALIDATION_FAILED": { + "summary": "VALIDATION_FAILED", "value": { - "code": "CUSTOMERS_ALREADY_APPROVED", - "description": "This customer is already approved.", - "errors": [], - "message": "customer_already_approved", "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "CUSTOMERS_BUSINESS_ENHANCED_NOT_AVAILABLE": { - "summary": "CUSTOMERS_BUSINESS_ENHANCED_NOT_AVAILABLE", - "value": { - "code": "CUSTOMERS_BUSINESS_ENHANCED_NOT_AVAILABLE", - "description": "Enhanced verification is not available for business customers. Use standard verification (kyc_type: standard) for businesses.", + "code": "VALIDATION_FAILED", + "message": "validation_failed", + "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "business_enhanced_not_available", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } - }, - "CUSTOMERS_ENHANCED_KYC_REQUIRED": { - "summary": "CUSTOMERS_ENHANCED_KYC_REQUIRED", + } + } + } + } + }, + "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, + "examples": { + "AUTH_UNAUTHORIZED": { + "summary": "AUTH_UNAUTHORIZED", "value": { - "code": "CUSTOMERS_ENHANCED_KYC_REQUIRED", - "description": "Individuals from high-risk countries must use enhanced verification (kyc_type: enhanced); standard verification is not available for them. See https://www.blindpay.com/docs/kb/supported-countries for country tiers.", - "errors": [], - "message": "only_enhanced_kyc_allowed_for_high_risk_countries", "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "CUSTOMERS_INVALID_PHONE": { - "summary": "CUSTOMERS_INVALID_PHONE", - "value": { - "code": "CUSTOMERS_INVALID_PHONE", - "description": "The phone number provided is not valid. Check the number and try again.", + "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", + "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "invalid_phone_number", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } - }, - "CUSTOMERS_INVALID_TAX_ID": { - "summary": "CUSTOMERS_INVALID_TAX_ID", + } + } + } + } + }, + "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, + "examples": { + "AUTH_FORBIDDEN": { + "summary": "AUTH_FORBIDDEN", "value": { - "code": "CUSTOMERS_INVALID_TAX_ID", - "description": "The tax ID provided is not valid. Check the value and try again.", - "errors": [], - "message": "invalid_cpf_or_rg_tax_id", "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "FILES_TOO_LARGE": { - "summary": "FILES_TOO_LARGE", - "value": { - "code": "FILES_TOO_LARGE", - "description": "The file is too large. Upload a smaller file.", + "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", + "description": "You do not have permission to perform this action.", "errors": [], - "message": "file_size_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } - }, - "FILES_TYPE_NOT_ALLOWED": { - "summary": "FILES_TYPE_NOT_ALLOWED", + } + } + } + } + }, + "404": { + "description": "Possible error codes: `CUSTOMERS_NOT_FOUND`. See the Error responses section for retry semantics.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, + "examples": { + "CUSTOMERS_NOT_FOUND": { + "summary": "CUSTOMERS_NOT_FOUND", "value": { - "code": "FILES_TYPE_NOT_ALLOWED", - "description": "This file type is not allowed. Upload a supported file type.", - "errors": [], - "message": "file_type_not_allowed", "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "FILES_UNREADABLE": { - "summary": "FILES_UNREADABLE", - "value": { - "code": "FILES_UNREADABLE", - "description": "We could not read the uploaded file. Check the file and try again.", + "code": "CUSTOMERS_NOT_FOUND", + "message": "customer_not_found", + "description": "The requested customer was not found.", "errors": [], - "message": "file_download_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } - }, - "TOS_ALREADY_ACCEPTED": { - "summary": "TOS_ALREADY_ACCEPTED", + } + } + } + } + }, + "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, + "examples": { + "AUTH_RATE_LIMITED": { + "summary": "AUTH_RATE_LIMITED", "value": { - "code": "TOS_ALREADY_ACCEPTED", - "description": "These terms of service were already accepted.", - "errors": [], - "message": "tos_id_already_accepted", "success": false, + "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", + "description": "Too many requests. Wait a moment and try again.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } - }, - "TOS_NOT_ACCEPTED": { - "summary": "TOS_NOT_ACCEPTED", + } + } + } + } + }, + "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, + "examples": { + "INTERNAL_ERROR": { + "summary": "INTERNAL_ERROR", "value": { - "code": "TOS_NOT_ACCEPTED", - "description": "The terms of service must be accepted before continuing.", - "errors": [], - "message": "please_accept_terms_of_service", "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "TOS_NOT_FOUND": { - "summary": "TOS_NOT_FOUND", - "value": { - "code": "TOS_NOT_FOUND", - "description": "The requested terms of service record was not found.", + "code": "INTERNAL_ERROR", + "message": "internal_error", + "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "tos_not_found", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } - }, + } + } + } + } + } + } + } + }, + "/v1/instances/{instance_id}/customers/{customer_id}/rfi": { + "get": { + "x-sdk": true, + "tags": [ + "Customers" + ], + "summary": "Get Open RFI for Customer", + "description": "Returns the open (pending) RFI for this customer, or null if the customer has no pending RFI.", + "parameters": [ + { + "schema": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" + }, + { + "schema": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "description": "Customer ID", + "example": "re_000000000000" + }, + "required": true, + "name": "customer_id", + "in": "path" + } + ], + "responses": { + "200": { + "description": "Open RFI, or null if none", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Rfi" + } + } + } + }, + "400": { + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, + "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", - "description": "The request contains invalid fields. Check the errors list for details.", - "errors": [], "message": "validation_failed", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VALIDATION_MISSING_REQUIRED_FIELDS": { - "summary": "VALIDATION_MISSING_REQUIRED_FIELDS", - "value": { - "code": "VALIDATION_MISSING_REQUIRED_FIELDS", - "description": "Required fields are missing. Provide the missing fields and try again.", - "errors": [], - "message": "missing_required_fields", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED": { - "summary": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", - "value": { - "code": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", - "description": "Additional documents are required to create this virtual account. Upload the requested documents.", + "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "id_doc_front_file_required", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `CUSTOMERS_ALREADY_APPROVED`, `CUSTOMERS_BUSINESS_ENHANCED_NOT_AVAILABLE`, `CUSTOMERS_ENHANCED_KYC_REQUIRED`, `CUSTOMERS_INVALID_PHONE`, `CUSTOMERS_INVALID_TAX_ID`, `FILES_TOO_LARGE`, `FILES_TYPE_NOT_ALLOWED`, `FILES_UNREADABLE`, `TOS_ALREADY_ACCEPTED`, `TOS_NOT_ACCEPTED`, `TOS_NOT_FOUND`, `VALIDATION_FAILED`, `VALIDATION_MISSING_REQUIRED_FIELDS`, `VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { - "FILES_UNREADABLE": { - "summary": "FILES_UNREADABLE", - "value": { - "code": "FILES_UNREADABLE", - "description": "We could not read the uploaded file. Check the file and try again.", - "errors": [], - "message": "file_download_failed", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `FILES_UNREADABLE`, `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Create Customer", + } + }, + "post": { + "x-sdk": true, "tags": [ "Customers" ], - "x-sdk": true - } - }, - "/v1/instances/{instance_id}/customers/{customer_id}/bank-accounts": { - "get": { + "summary": "Submit RFI Response", + "description": "Submit a flat response object for the open RFI. On success flips kyc_status back to verifying. Returns `{ success: false, reason }` when no pending RFI exists, callers should refetch the RFI state instead of retrying.", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } - }, - { - "in": "path", - "name": "customer_id", - "required": true, - "schema": { - "description": "Customer ID", - "example": "re_000000000000", "maxLength": 15, - "minLength": 15, - "type": "string" - } - }, - { - "in": "query", - "name": "status", - "required": false, - "schema": { - "enum": [ - "verifying", - "approved", - "rejected", - "deprecated" - ], - "type": "string" - } - }, - { - "in": "query", - "name": "type", - "required": false, - "schema": { - "enum": [ - "wire", - "ach", - "pix", - "pix_safe", - "ted", - "spei_bitso", - "transfers_bitso", - "ach_cop_bitso", - "international_swift", - "rtp", - "sepa" - ], - "type": "string" - } + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" }, { - "in": "query", - "name": "name", - "required": false, "schema": { - "type": "string" - } + "type": "string", + "minLength": 15, + "maxLength": 15, + "description": "Customer ID", + "example": "re_000000000000" + }, + "required": true, + "name": "customer_id", + "in": "path" }, { - "in": "query", - "name": "bank_account_id", - "required": false, "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "country", + "type": "string", + "maxLength": 255, + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, "required": false, - "schema": { - "type": "string" - } + "name": "Idempotency-Key", + "in": "header" } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": {} + } + } + } + }, "responses": { "200": { + "description": "RFI submitted (success: true) or rejected because no pending RFI exists (success: false)", "content": { "application/json": { "schema": { - "items": { - "$ref": "#/components/schemas/BankAccountOut" - }, - "type": "array" + "anyOf": [ + { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "required": [ + "success" + ] + }, + { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "enum": [ + false + ] + }, + "reason": { + "type": "string", + "enum": [ + "no_pending_rfi", + "already_resolved" + ] + } + }, + "required": [ + "success", + "reason" + ] + } + ] } } - }, - "description": "Get bank accounts" + } }, "400": { + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `COMPLIANCE_RFI_INVALID`, `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { + "COMPLIANCE_RFI_INVALID": { + "summary": "COMPLIANCE_RFI_INVALID", + "value": { + "success": false, + "code": "COMPLIANCE_RFI_INVALID", + "message": "rfi_request_corrupt", + "description": "The information request could not be processed. Check the submitted fields.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Retrieve Bank Accounts", + } + } + }, + "/v1/instances/{instance_id}/customers/{customer_id}/bank-accounts": { + "post": { + "x-sdk": true, "tags": [ "Bank Accounts" ], - "x-sdk": true - }, - "post": { + "summary": "Add Bank Account", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } + "maxLength": 15, + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" }, { - "in": "path", - "name": "customer_id", - "required": true, "schema": { - "description": "Customer ID", - "example": "re_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } + "maxLength": 15, + "description": "Customer ID", + "example": "re_000000000000" + }, + "required": true, + "name": "customer_id", + "in": "path" }, { - "in": "header", - "name": "Idempotency-Key", - "required": false, "schema": { - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "type": "string", "maxLength": 255, - "type": "string" - } + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, + "required": false, + "name": "Idempotency-Key", + "in": "header" } ], "requestBody": { + "description": "Create a new bank account", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateBankAccountIn" } } - }, - "description": "Create a new bank account" + } }, "responses": { "200": { + "description": "Add bank account", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BankAccountOut" } } - }, - "description": "Add bank account" + } }, "400": { + "description": "Possible error codes: `BANK_ACCOUNTS_INVALID_BANK_CODE`, `BANK_ACCOUNTS_INVALID_ROUTING`, `BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED`, `BANK_ACCOUNTS_RTP_NOT_SUPPORTED`, `CUSTOMERS_COUNTRY_NOT_SUPPORTED`, `CUSTOMERS_INVALID_PHONE`, `CUSTOMERS_INVALID_TAX_ID`, `FILES_UNREADABLE`, `VALIDATION_FAILED`, `VALIDATION_INVALID_REQUEST`, `VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED`, `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "BANK_ACCOUNTS_INVALID_BANK_CODE": { "summary": "BANK_ACCOUNTS_INVALID_BANK_CODE", "value": { + "success": false, "code": "BANK_ACCOUNTS_INVALID_BANK_CODE", + "message": "bank_accounts_invalid_bank_code", "description": "The bank code provided is not valid for this payment rail. The message lists where to fetch the valid codes.", "errors": [], - "message": "bank_accounts_invalid_bank_code", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "BANK_ACCOUNTS_INVALID_ROUTING": { "summary": "BANK_ACCOUNTS_INVALID_ROUTING", "value": { + "success": false, "code": "BANK_ACCOUNTS_INVALID_ROUTING", + "message": "The routing number must be a valid 9-digit ABA routing number.", "description": "The routing number provided is not valid. Check the number and try again.", "errors": [], - "message": "The routing number must be a valid 9-digit ABA routing number.", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED": { "summary": "BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED", "value": { + "success": false, "code": "BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED", + "message": "unsupported_banking_partner", "description": "This banking option is not supported for this operation.", "errors": [], - "message": "unsupported_banking_partner", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "BANK_ACCOUNTS_RTP_NOT_SUPPORTED": { "summary": "BANK_ACCOUNTS_RTP_NOT_SUPPORTED", "value": { + "success": false, "code": "BANK_ACCOUNTS_RTP_NOT_SUPPORTED", + "message": "The provided routing number does not support RTP transactions.", "description": "The provided routing number does not support instant payments.", "errors": [], - "message": "The provided routing number does not support RTP transactions.", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "CUSTOMERS_COUNTRY_NOT_SUPPORTED": { "summary": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", "value": { + "success": false, "code": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", + "message": "country_not_supported", "description": "This country is not supported for this operation.", "errors": [], - "message": "country_not_supported", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "CUSTOMERS_INVALID_PHONE": { "summary": "CUSTOMERS_INVALID_PHONE", "value": { + "success": false, "code": "CUSTOMERS_INVALID_PHONE", + "message": "invalid_phone_number", "description": "The phone number provided is not valid. Check the number and try again.", "errors": [], - "message": "invalid_phone_number", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "CUSTOMERS_INVALID_TAX_ID": { "summary": "CUSTOMERS_INVALID_TAX_ID", "value": { + "success": false, "code": "CUSTOMERS_INVALID_TAX_ID", + "message": "invalid_cpf_or_rg_tax_id", "description": "The tax ID provided is not valid. Check the value and try again.", "errors": [], - "message": "invalid_cpf_or_rg_tax_id", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "FILES_UNREADABLE": { "summary": "FILES_UNREADABLE", "value": { + "success": false, "code": "FILES_UNREADABLE", + "message": "file_download_failed", "description": "We could not read the uploaded file. Check the file and try again.", "errors": [], - "message": "file_download_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "VALIDATION_INVALID_REQUEST": { "summary": "VALIDATION_INVALID_REQUEST", "value": { + "success": false, "code": "VALIDATION_INVALID_REQUEST", + "message": "invalid_body", "description": "The request is not valid for this operation. Check the parameters and try again.", "errors": [], - "message": "invalid_body", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED": { "summary": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", "value": { + "success": false, "code": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", + "message": "id_doc_front_file_required", "description": "Additional documents are required to create this virtual account. Upload the requested documents.", "errors": [], - "message": "id_doc_front_file_required", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", "value": { + "success": false, "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "message": "virtual_account_provision_failed", "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", "errors": [], - "message": "virtual_account_provision_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `BANK_ACCOUNTS_INVALID_BANK_CODE`, `BANK_ACCOUNTS_INVALID_ROUTING`, `BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED`, `BANK_ACCOUNTS_RTP_NOT_SUPPORTED`, `CUSTOMERS_COUNTRY_NOT_SUPPORTED`, `CUSTOMERS_INVALID_PHONE`, `CUSTOMERS_INVALID_TAX_ID`, `FILES_UNREADABLE`, `VALIDATION_FAILED`, `VALIDATION_INVALID_REQUEST`, `VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED`, `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "422": { + "description": "Possible error codes: `CUSTOMERS_INVALID_DATA`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "CUSTOMERS_INVALID_DATA": { "summary": "CUSTOMERS_INVALID_DATA", "value": { + "success": false, "code": "CUSTOMERS_INVALID_DATA", + "message": "invalid_customer_data", "description": "The customer data was rejected by the banking provider. Check the highlighted fields and try again.", "errors": [], - "message": "invalid_customer_data", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `CUSTOMERS_INVALID_DATA`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `FILES_UNREADABLE`, `INTERNAL_ERROR`, `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "FILES_UNREADABLE": { "summary": "FILES_UNREADABLE", "value": { + "success": false, "code": "FILES_UNREADABLE", + "message": "file_download_failed", "description": "We could not read the uploaded file. Check the file and try again.", "errors": [], - "message": "file_download_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", "value": { + "success": false, "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "message": "virtual_account_provision_failed", "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", "errors": [], - "message": "virtual_account_provision_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `FILES_UNREADABLE`, `INTERNAL_ERROR`, `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics." + } }, "502": { + "description": "Possible error codes: `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", "value": { + "success": false, "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "message": "virtual_account_provision_failed", "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", "errors": [], - "message": "virtual_account_provision_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics." + } } - }, - "summary": "Add Bank Account", + } + }, + "get": { + "x-sdk": true, "tags": [ "Bank Accounts" ], - "x-sdk": true - } - }, - "/v1/instances/{instance_id}/customers/{customer_id}/bank-accounts/{bank_account_id}/offramp-wallets": { - "get": { + "summary": "Retrieve Bank Accounts", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } + "maxLength": 15, + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" }, { - "in": "path", - "name": "customer_id", - "required": true, "schema": { - "description": "Customer ID", - "example": "re_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, + "maxLength": 15, + "description": "Customer ID", + "example": "re_000000000000" + }, + "required": true, + "name": "customer_id", + "in": "path" + }, + { + "schema": { + "type": "string", + "enum": [ + "verifying", + "approved", + "rejected", + "deprecated" + ] + }, + "required": false, + "name": "status", + "in": "query" + }, + { + "schema": { + "type": "string", + "enum": [ + "wire", + "ach", + "pix", + "pix_safe", + "ted", + "spei_bitso", + "transfers_bitso", + "ach_cop_bitso", + "international_swift", + "rtp", + "sepa" + ] + }, + "required": false, + "name": "type", + "in": "query" + }, + { + "schema": { "type": "string" - } + }, + "required": false, + "name": "name", + "in": "query" }, { - "in": "path", + "schema": { + "type": "string" + }, + "required": false, "name": "bank_account_id", - "required": true, + "in": "query" + }, + { "schema": { - "example": "ba_000000000000", - "maxLength": 15, - "minLength": 15, "type": "string" - } + }, + "required": false, + "name": "country", + "in": "query" } ], "responses": { "200": { + "description": "Get bank accounts", "content": { "application/json": { "schema": { + "type": "array", "items": { - "$ref": "#/components/schemas/OfframpWallet" - }, - "type": "array" + "$ref": "#/components/schemas/BankAccountOut" + } } } - }, - "description": "Get offramp wallets" + } }, "400": { + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, - "404": { + "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "examples": { - "WALLETS_NOT_FOUND": { - "summary": "WALLETS_NOT_FOUND", - "value": { - "code": "WALLETS_NOT_FOUND", - "description": "The requested wallet was not found.", - "errors": [], - "message": "wallet_not_found", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } - }, "schema": { "$ref": "#/components/schemas/Error" - } - } - }, - "description": "Possible error codes: `WALLETS_NOT_FOUND`. See the Error responses section for retry semantics." - }, - "429": { - "content": { - "application/json": { + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Get Offramp Wallets", + } + } + }, + "/v1/instances/{instance_id}/customers/{customer_id}/bank-accounts/{id}": { + "get": { + "x-sdk": true, "tags": [ - "Offramp Wallets" + "Bank Accounts" ], - "x-sdk": true - }, - "post": { + "summary": "Retrieve Bank Account", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } - }, - { - "in": "path", - "name": "customer_id", - "required": true, - "schema": { - "description": "Customer ID", - "example": "re_000000000000", "maxLength": 15, - "minLength": 15, - "type": "string" - } + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" }, { - "in": "path", - "name": "bank_account_id", - "required": true, "schema": { - "example": "ba_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } + "maxLength": 15, + "description": "Customer ID", + "example": "re_000000000000" + }, + "required": true, + "name": "customer_id", + "in": "path" }, { - "in": "header", - "name": "Idempotency-Key", - "required": false, "schema": { - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "maxLength": 255, - "type": "string" - } + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "bk_000000000000" + }, + "required": true, + "name": "id", + "in": "path" } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "external_id": { - "example": "your_external_id", - "type": [ - "string", - "null" - ] - }, - "network": { - "enum": [ - "tron", - "solana", - "solana_devnet", - "arbitrum", - "base", - "ethereum", - "polygon", - "sepolia", - "arbitrum_sepolia", - "base_sepolia", - "polygon_amoy" - ], - "example": "tron", - "type": "string" - } - }, - "required": [ - "network" - ], - "type": "object" - } - } - }, - "description": "Create a new offramp wallet" - }, "responses": { "200": { + "description": "Get bank account", "content": { "application/json": { "schema": { - "properties": { - "address": { - "example": "TALJN9zTTEL9TVBb4WuTt6wLvPqJZr3hvb", - "type": "string" - }, - "circle_wallet_id": { - "example": "01234567-abcd-efgh-ijkl-012345678901", - "type": [ - "string", - "null" - ] - }, - "external_id": { - "example": "your_external_id", - "type": [ - "string", - "null" - ] - }, - "id": { - "example": "ow_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - }, - "network": { - "enum": [ - "tron", - "solana", - "solana_devnet", - "arbitrum", - "base", - "ethereum", - "polygon", - "sepolia", - "arbitrum_sepolia", - "base_sepolia", - "polygon_amoy" - ], - "example": "tron", - "type": "string" - } - }, - "required": [ - "id", - "network", - "address" - ], - "type": "object" + "$ref": "#/components/schemas/BankAccountOut" } } - }, - "description": "Create offramp wallet" + } }, "400": { + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { - "BANK_ACCOUNTS_INCOMPLETE": { - "summary": "BANK_ACCOUNTS_INCOMPLETE", - "value": { - "code": "BANK_ACCOUNTS_INCOMPLETE", - "description": "The bank account details are incomplete for this payment method. Provide the missing fields.", - "errors": [], - "message": "sepa_bank_account_incomplete", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "BLOCKCHAIN_NETWORK_NOT_SUPPORTED": { - "summary": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", - "value": { - "code": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", - "description": "This network or token combination is not supported for this operation.", - "errors": [], - "message": "network_not_supported_on_dev_instance", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `BANK_ACCOUNTS_INCOMPLETE`, `BLOCKCHAIN_NETWORK_NOT_SUPPORTED`, `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Create Offramp Wallet", + } + }, + "delete": { + "x-sdk": true, "tags": [ - "Offramp Wallets" + "Bank Accounts" ], - "x-sdk": true - } - }, - "/v1/instances/{instance_id}/customers/{customer_id}/bank-accounts/{bank_account_id}/offramp-wallets/{id}": { - "get": { + "summary": "Remove Bank Account", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } + "maxLength": 15, + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" }, { - "in": "path", - "name": "customer_id", - "required": true, "schema": { - "description": "Customer ID", - "example": "re_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } + "maxLength": 15, + "description": "Customer ID", + "example": "re_000000000000" + }, + "required": true, + "name": "customer_id", + "in": "path" }, { - "in": "path", - "name": "bank_account_id", - "required": true, "schema": { - "example": "ba_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } + "maxLength": 15, + "example": "bk_000000000000" + }, + "required": true, + "name": "id", + "in": "path" }, { - "in": "path", - "name": "id", - "required": true, "schema": { - "example": "ow_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - } + "type": "string", + "maxLength": 255, + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, + "required": false, + "name": "Idempotency-Key", + "in": "header" } ], "responses": { "200": { + "description": "Delete bank account", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OfframpWallet" + "$ref": "#/components/schemas/Success" } } - }, - "description": "Get offramp wallet" + } }, "400": { + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Get Offramp Wallet", - "tags": [ - "Offramp Wallets" - ], - "x-sdk": true + } } }, - "/v1/instances/{instance_id}/customers/{customer_id}/bank-accounts/{id}": { - "delete": { + "/v1/instances/{instance_id}/customers/{customer_id}/virtual-accounts": { + "post": { + "x-sdk": true, + "tags": [ + "Virtual Accounts" + ], + "summary": "Create Virtual Account", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } - }, - { - "in": "path", - "name": "customer_id", - "required": true, - "schema": { - "description": "Customer ID", - "example": "re_000000000000", "maxLength": 15, - "minLength": 15, - "type": "string" - } + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" }, { - "in": "path", - "name": "id", - "required": true, "schema": { - "example": "bk_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } + "maxLength": 15, + "description": "Customer ID", + "example": "re_000000000000" + }, + "required": true, + "name": "customer_id", + "in": "path" }, { - "in": "header", - "name": "Idempotency-Key", - "required": false, "schema": { - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "type": "string", "maxLength": 255, - "type": "string" - } + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, + "required": false, + "name": "Idempotency-Key", + "in": "header" } ], + "requestBody": { + "description": "Create a new virtual account", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateVirtualAccountIn" + } + } + } + }, "responses": { "200": { + "description": "Create virtual account", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Success" + "$ref": "#/components/schemas/VirtualAccountOut" } } - }, - "description": "Delete bank account" + } }, "400": { + "description": "Possible error codes: `BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED`, `BLOCKCHAIN_NETWORK_NOT_SUPPORTED`, `CUSTOMERS_COUNTRY_NOT_SUPPORTED`, `CUSTOMERS_ENHANCED_KYC_REQUIRED`, `CUSTOMERS_ID_DOCUMENT_INVALID`, `CUSTOMERS_KYC_NOT_APPROVED`, `FILES_UNREADABLE`, `VALIDATION_FAILED`, `VALIDATION_MISSING_REQUIRED_FIELDS`, `VIRTUAL_ACCOUNTS_DISABLED`, `VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED`, `VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { + "BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED": { + "summary": "BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED", + "value": { + "success": false, + "code": "BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED", + "message": "unsupported_banking_partner", + "description": "This banking option is not supported for this operation.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "BLOCKCHAIN_NETWORK_NOT_SUPPORTED": { + "summary": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", + "value": { + "success": false, + "code": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", + "message": "network_not_supported_on_dev_instance", + "description": "This network or token combination is not supported for this operation.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "CUSTOMERS_COUNTRY_NOT_SUPPORTED": { + "summary": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", + "value": { + "success": false, + "code": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", + "message": "country_not_supported", + "description": "This country is not supported for this operation.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "CUSTOMERS_ENHANCED_KYC_REQUIRED": { + "summary": "CUSTOMERS_ENHANCED_KYC_REQUIRED", + "value": { + "success": false, + "code": "CUSTOMERS_ENHANCED_KYC_REQUIRED", + "message": "only_enhanced_kyc_allowed_for_high_risk_countries", + "description": "Individuals from high-risk countries must use enhanced verification (kyc_type: enhanced); standard verification is not available for them. See https://www.blindpay.com/docs/kb/supported-countries for country tiers.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "CUSTOMERS_ID_DOCUMENT_INVALID": { + "summary": "CUSTOMERS_ID_DOCUMENT_INVALID", + "value": { + "success": false, + "code": "CUSTOMERS_ID_DOCUMENT_INVALID", + "message": "id_doc_is_not_valid_passport_or_national_id", + "description": "The identity document is not an accepted passport or national ID. Provide a valid passport or national ID for this customer (a driver license is not accepted for high-risk countries).", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "CUSTOMERS_KYC_NOT_APPROVED": { + "summary": "CUSTOMERS_KYC_NOT_APPROVED", + "value": { + "success": false, + "code": "CUSTOMERS_KYC_NOT_APPROVED", + "message": "kyc_not_approved", + "description": "This customer has not completed verification yet. Complete the verification before continuing.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "FILES_UNREADABLE": { + "summary": "FILES_UNREADABLE", + "value": { + "success": false, + "code": "FILES_UNREADABLE", + "message": "file_download_failed", + "description": "We could not read the uploaded file. Check the file and try again.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VALIDATION_MISSING_REQUIRED_FIELDS": { + "summary": "VALIDATION_MISSING_REQUIRED_FIELDS", + "value": { + "success": false, + "code": "VALIDATION_MISSING_REQUIRED_FIELDS", + "message": "missing_required_fields", + "description": "Required fields are missing. Provide the missing fields and try again.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VIRTUAL_ACCOUNTS_DISABLED": { + "summary": "VIRTUAL_ACCOUNTS_DISABLED", + "value": { + "success": false, + "code": "VIRTUAL_ACCOUNTS_DISABLED", + "message": "virtual_accounts_not_enabled", + "description": "Virtual accounts are not enabled for this account. Contact support to enable them.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED": { + "summary": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", + "value": { + "success": false, + "code": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", + "message": "id_doc_front_file_required", + "description": "Additional documents are required to create this virtual account. Upload the requested documents.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED": { + "summary": "VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED", + "value": { "success": false, + "code": "VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED", + "message": "us_state_not_supported", + "description": "Virtual accounts are not available for this country or region.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, + } + } + } + }, + "404": { + "description": "Possible error codes: `CUSTOMERS_NOT_FOUND`, `INSTANCES_NOT_FOUND`, `WALLETS_NOT_FOUND`. See the Error responses section for retry semantics.", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/Error" + }, + "examples": { + "CUSTOMERS_NOT_FOUND": { + "summary": "CUSTOMERS_NOT_FOUND", + "value": { + "success": false, + "code": "CUSTOMERS_NOT_FOUND", + "message": "customer_not_found", + "description": "The requested customer was not found.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "INSTANCES_NOT_FOUND": { + "summary": "INSTANCES_NOT_FOUND", + "value": { + "success": false, + "code": "INSTANCES_NOT_FOUND", + "message": "instance_not_found", + "description": "The requested instance was not found.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "WALLETS_NOT_FOUND": { + "summary": "WALLETS_NOT_FOUND", + "value": { + "success": false, + "code": "WALLETS_NOT_FOUND", + "message": "wallet_not_found", + "description": "The requested wallet was not found.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `FILES_UNREADABLE`, `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { + "FILES_UNREADABLE": { + "summary": "FILES_UNREADABLE", + "value": { + "success": false, + "code": "FILES_UNREADABLE", + "message": "file_download_failed", + "description": "We could not read the uploaded file. Check the file and try again.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Remove Bank Account", - "tags": [ - "Bank Accounts" - ], - "x-sdk": true + } }, "get": { + "x-sdk": true, + "tags": [ + "Virtual Accounts" + ], + "summary": "Retrieve Virtual Accounts", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } - }, - { - "in": "path", - "name": "customer_id", - "required": true, - "schema": { - "description": "Customer ID", - "example": "re_000000000000", "maxLength": 15, - "minLength": 15, - "type": "string" - } + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" }, { - "in": "path", - "name": "id", - "required": true, "schema": { - "example": "bk_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } + "maxLength": 15, + "description": "Customer ID", + "example": "re_000000000000" + }, + "required": true, + "name": "customer_id", + "in": "path" } ], "responses": { "200": { + "description": "Get virtual accounts", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/BankAccountOut" + "type": "array", + "items": { + "$ref": "#/components/schemas/VirtualAccountOut" + } } } - }, - "description": "Get bank account" + } }, "400": { + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Retrieve Bank Account", - "tags": [ - "Bank Accounts" - ], - "x-sdk": true + } } }, - "/v1/instances/{instance_id}/customers/{customer_id}/blockchain-wallets": { + "/v1/instances/{instance_id}/customers/{customer_id}/virtual-accounts/{id}": { "get": { + "x-sdk": true, + "tags": [ + "Virtual Accounts" + ], + "summary": "Retrieve Virtual Account", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } + "maxLength": 15, + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" }, { - "in": "path", - "name": "customer_id", - "required": true, "schema": { - "description": "Customer ID", - "example": "re_000000000000", + "type": "string", + "minLength": 15, "maxLength": 15, + "description": "Customer ID", + "example": "re_000000000000" + }, + "required": true, + "name": "customer_id", + "in": "path" + }, + { + "schema": { + "type": "string", "minLength": 15, - "type": "string" - } + "maxLength": 15, + "example": "bk_000000000000" + }, + "required": true, + "name": "id", + "in": "path" } ], "responses": { "200": { + "description": "Get virtual account", "content": { "application/json": { "schema": { - "items": { - "$ref": "#/components/schemas/BlockchainWalletOut" - }, - "type": "array" + "allOf": [ + { + "$ref": "#/components/schemas/VirtualAccountOut" + }, + { + "type": [ + "object", + "null" + ] + } + ] } } - }, - "description": "Get blockchain wallets" + } }, "400": { + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, + } + } + } + }, + "422": { + "description": "Possible error codes: `DATA_INTEGRITY_ERROR`. See the Error responses section for retry semantics.", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/Error" + }, + "examples": { + "DATA_INTEGRITY_ERROR": { + "summary": "DATA_INTEGRITY_ERROR", + "value": { + "success": false, + "code": "DATA_INTEGRITY_ERROR", + "message": "data_integrity_error", + "description": "This record could not be loaded because it contains invalid stored data. Contact support with the ID below.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Retrieve Blockchain Wallets", + } + }, + "put": { + "x-sdk": true, "tags": [ - "Blockchain Wallets" + "Virtual Accounts" ], - "x-sdk": true - }, - "post": { + "summary": "Update Virtual Account", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } + "maxLength": 15, + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" }, { - "in": "path", - "name": "customer_id", - "required": true, "schema": { - "description": "Customer ID", - "example": "re_000000000000", + "type": "string", + "minLength": 15, "maxLength": 15, + "description": "Customer ID", + "example": "re_000000000000" + }, + "required": true, + "name": "customer_id", + "in": "path" + }, + { + "schema": { + "type": "string", "minLength": 15, - "type": "string" - } + "maxLength": 15, + "example": "bk_000000000000" + }, + "required": true, + "name": "id", + "in": "path" }, { - "in": "header", - "name": "Idempotency-Key", - "required": false, "schema": { - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "type": "string", "maxLength": 255, - "type": "string" - } + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, + "required": false, + "name": "Idempotency-Key", + "in": "header" } ], "requestBody": { + "description": "Update a virtual account", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateBlockchainWalletIn" + "$ref": "#/components/schemas/UpdateVirtualAccountIn" } } - }, - "description": "Create a new blockchain wallet" + } }, "responses": { "200": { + "description": "Update virtual account", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/BlockchainWalletOut" + "$ref": "#/components/schemas/Success" } } - }, - "description": "Add blockchain wallet" + } }, "400": { + "description": "Possible error codes: `BLOCKCHAIN_NETWORK_NOT_SUPPORTED`, `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "BLOCKCHAIN_NETWORK_NOT_SUPPORTED": { "summary": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", "value": { + "success": false, "code": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", + "message": "network_not_supported_on_dev_instance", "description": "This network or token combination is not supported for this operation.", "errors": [], - "message": "network_not_supported_on_dev_instance", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", - "description": "The request contains invalid fields. Check the errors list for details.", - "errors": [], "message": "validation_failed", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "WEBHOOKS_SIGNATURE_INVALID": { - "summary": "WEBHOOKS_SIGNATURE_INVALID", - "value": { - "code": "WEBHOOKS_SIGNATURE_INVALID", - "description": "The webhook signature is missing or invalid.", + "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "invalid_signature", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `BLOCKCHAIN_NETWORK_NOT_SUPPORTED`, `VALIDATION_FAILED`, `WEBHOOKS_SIGNATURE_INVALID`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, + } + } + } + }, + "404": { + "description": "Possible error codes: `VIRTUAL_ACCOUNTS_NOT_FOUND`. See the Error responses section for retry semantics.", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/Error" + }, + "examples": { + "VIRTUAL_ACCOUNTS_NOT_FOUND": { + "summary": "VIRTUAL_ACCOUNTS_NOT_FOUND", + "value": { + "success": false, + "code": "VIRTUAL_ACCOUNTS_NOT_FOUND", + "message": "virtual_account_not_found", + "description": "The requested virtual account was not found.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Add Blockchain Wallet", - "tags": [ - "Blockchain Wallets" - ], - "x-sdk": true + } } }, "/v1/instances/{instance_id}/customers/{customer_id}/blockchain-wallets/sign-message": { "get": { + "x-sdk": true, + "tags": [ + "Blockchain Wallets" + ], + "summary": "Retrieve Blockchain Wallet Message", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } + "maxLength": 15, + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" }, { - "in": "path", - "name": "customer_id", - "required": true, "schema": { - "description": "Customer ID", - "example": "re_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } + "maxLength": 15, + "description": "Customer ID", + "example": "re_000000000000" + }, + "required": true, + "name": "customer_id", + "in": "path" } ], "responses": { "200": { + "description": "Get blockchain wallet sign message", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BlockchainWalletMessageOut" } } - }, - "description": "Get blockchain wallet sign message" + } }, "400": { + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Retrieve Blockchain Wallet Message", + } + } + }, + "/v1/instances/{instance_id}/customers/{customer_id}/blockchain-wallets": { + "post": { + "x-sdk": true, "tags": [ "Blockchain Wallets" ], - "x-sdk": true - } - }, - "/v1/instances/{instance_id}/customers/{customer_id}/blockchain-wallets/{id}": { - "delete": { + "summary": "Add Blockchain Wallet", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } - }, - { - "in": "path", - "name": "customer_id", - "required": true, - "schema": { - "description": "Customer ID", - "example": "re_000000000000", "maxLength": 15, - "minLength": 15, - "type": "string" - } + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" }, { - "in": "path", - "name": "id", - "required": true, "schema": { - "example": "bk_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } + "maxLength": 15, + "description": "Customer ID", + "example": "re_000000000000" + }, + "required": true, + "name": "customer_id", + "in": "path" }, { - "in": "header", - "name": "Idempotency-Key", - "required": false, "schema": { - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "type": "string", "maxLength": 255, - "type": "string" - } + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, + "required": false, + "name": "Idempotency-Key", + "in": "header" } ], + "requestBody": { + "description": "Create a new blockchain wallet", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateBlockchainWalletIn" + } + } + } + }, "responses": { "200": { + "description": "Add blockchain wallet", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Success" + "$ref": "#/components/schemas/BlockchainWalletOut" } } - }, - "description": "Delete blockchain wallet" + } }, "400": { + "description": "Possible error codes: `BLOCKCHAIN_NETWORK_NOT_SUPPORTED`, `VALIDATION_FAILED`, `WEBHOOKS_SIGNATURE_INVALID`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { + "BLOCKCHAIN_NETWORK_NOT_SUPPORTED": { + "summary": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", + "value": { + "success": false, + "code": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", + "message": "network_not_supported_on_dev_instance", + "description": "This network or token combination is not supported for this operation.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "WALLETS_ATTACHED_TO_VIRTUAL_ACCOUNT": { - "summary": "WALLETS_ATTACHED_TO_VIRTUAL_ACCOUNT", + "WEBHOOKS_SIGNATURE_INVALID": { + "summary": "WEBHOOKS_SIGNATURE_INVALID", "value": { - "code": "WALLETS_ATTACHED_TO_VIRTUAL_ACCOUNT", - "description": "This wallet is attached to a virtual account and cannot be deleted. Delete the virtual account first.", - "errors": [], - "message": "wallet_attached_to_virtual_account", "success": false, + "code": "WEBHOOKS_SIGNATURE_INVALID", + "message": "invalid_signature", + "description": "The webhook signature is missing or invalid.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `VALIDATION_FAILED`, `WALLETS_ATTACHED_TO_VIRTUAL_ACCOUNT`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, - "404": { + "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "examples": { - "WALLETS_NOT_FOUND": { - "summary": "WALLETS_NOT_FOUND", - "value": { - "code": "WALLETS_NOT_FOUND", - "description": "The requested wallet was not found.", - "errors": [], - "message": "wallet_not_found", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } - }, "schema": { "$ref": "#/components/schemas/Error" - } - } - }, - "description": "Possible error codes: `WALLETS_NOT_FOUND`. See the Error responses section for retry semantics." - }, - "429": { - "content": { - "application/json": { + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Remove Blockchain Wallet", + } + }, + "get": { + "x-sdk": true, "tags": [ "Blockchain Wallets" ], - "x-sdk": true - }, - "get": { + "summary": "Retrieve Blockchain Wallets", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } - }, - { - "in": "path", - "name": "customer_id", - "required": true, - "schema": { - "description": "Customer ID", - "example": "re_000000000000", "maxLength": 15, - "minLength": 15, - "type": "string" - } + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" }, { - "in": "path", - "name": "id", - "required": true, "schema": { - "example": "bk_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } + "maxLength": 15, + "description": "Customer ID", + "example": "re_000000000000" + }, + "required": true, + "name": "customer_id", + "in": "path" } ], "responses": { "200": { + "description": "Get blockchain wallets", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/BlockchainWalletOut" + "type": "array", + "items": { + "$ref": "#/components/schemas/BlockchainWalletOut" + } } } - }, - "description": "Get blockchain wallet" + } }, "400": { + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { - "AUTH_FORBIDDEN": { - "summary": "AUTH_FORBIDDEN", - "value": { - "code": "AUTH_FORBIDDEN", - "description": "You do not have permission to perform this action.", - "errors": [], - "message": "user_not_allowed", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } - }, - "schema": { - "$ref": "#/components/schemas/Error" - } - } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." - }, - "422": { - "content": { - "application/json": { - "examples": { - "DATA_INTEGRITY_ERROR": { - "summary": "DATA_INTEGRITY_ERROR", + "AUTH_FORBIDDEN": { + "summary": "AUTH_FORBIDDEN", "value": { - "code": "DATA_INTEGRITY_ERROR", - "description": "This record could not be loaded because it contains invalid stored data. Contact support with the ID below.", - "errors": [], - "message": "data_integrity_error", "success": false, + "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", + "description": "You do not have permission to perform this action.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `DATA_INTEGRITY_ERROR`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Retrieve Blockchain Wallet", - "tags": [ - "Blockchain Wallets" - ], - "x-sdk": true + } } }, - "/v1/instances/{instance_id}/customers/{customer_id}/limit-increase": { + "/v1/instances/{instance_id}/customers/{customer_id}/blockchain-wallets/{id}": { "get": { + "x-sdk": true, + "tags": [ + "Blockchain Wallets" + ], + "summary": "Retrieve Blockchain Wallet", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } + "maxLength": 15, + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" }, { - "in": "path", - "name": "customer_id", - "required": true, "schema": { - "description": "Customer ID", - "example": "re_000000000000", + "type": "string", + "minLength": 15, "maxLength": 15, + "description": "Customer ID", + "example": "re_000000000000" + }, + "required": true, + "name": "customer_id", + "in": "path" + }, + { + "schema": { + "type": "string", "minLength": 15, - "type": "string" - } + "maxLength": 15, + "example": "bk_000000000000" + }, + "required": true, + "name": "id", + "in": "path" } ], "responses": { "200": { + "description": "Get blockchain wallet", "content": { "application/json": { "schema": { - "items": { - "$ref": "#/components/schemas/GetCustomerLimitIncreaseOut" - }, - "type": "array" + "$ref": "#/components/schemas/BlockchainWalletOut" } } - }, - "description": "List customer limit increase requests" + } }, "400": { + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, + } + } + } + }, + "422": { + "description": "Possible error codes: `DATA_INTEGRITY_ERROR`. See the Error responses section for retry semantics.", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/Error" + }, + "examples": { + "DATA_INTEGRITY_ERROR": { + "summary": "DATA_INTEGRITY_ERROR", + "value": { + "success": false, + "code": "DATA_INTEGRITY_ERROR", + "message": "data_integrity_error", + "description": "This record could not be loaded because it contains invalid stored data. Contact support with the ID below.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Retrieve Limit Increase Requests", + } + }, + "delete": { + "x-sdk": true, "tags": [ - "Customers" + "Blockchain Wallets" ], - "x-sdk": true - }, - "post": { + "summary": "Remove Blockchain Wallet", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } + "maxLength": 15, + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" }, { - "in": "path", - "name": "customer_id", - "required": true, "schema": { - "description": "Customer ID", - "example": "re_000000000000", + "type": "string", + "minLength": 15, "maxLength": 15, + "description": "Customer ID", + "example": "re_000000000000" + }, + "required": true, + "name": "customer_id", + "in": "path" + }, + { + "schema": { + "type": "string", "minLength": 15, - "type": "string" - } + "maxLength": 15, + "example": "bk_000000000000" + }, + "required": true, + "name": "id", + "in": "path" }, { - "in": "header", - "name": "Idempotency-Key", - "required": false, "schema": { - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "type": "string", "maxLength": 255, - "type": "string" - } + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, + "required": false, + "name": "Idempotency-Key", + "in": "header" } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CustomerLimitIncreaseIn" - } - } - }, - "description": "Request new limit increase" - }, "responses": { "200": { + "description": "Delete blockchain wallet", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomerLimitIncreaseOut" + "$ref": "#/components/schemas/Success" } } - }, - "description": "Create customer limit increase" + } }, "400": { + "description": "Possible error codes: `VALIDATION_FAILED`, `WALLETS_ATTACHED_TO_VIRTUAL_ACCOUNT`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { - "CUSTOMERS_KYC_NOT_APPROVED": { - "summary": "CUSTOMERS_KYC_NOT_APPROVED", - "value": { - "code": "CUSTOMERS_KYC_NOT_APPROVED", - "description": "This customer has not completed verification yet. Complete the verification before continuing.", - "errors": [], - "message": "kyc_not_approved", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "FILES_TOO_LARGE": { - "summary": "FILES_TOO_LARGE", + "VALIDATION_FAILED": { + "summary": "VALIDATION_FAILED", "value": { - "code": "FILES_TOO_LARGE", - "description": "The file is too large. Upload a smaller file.", - "errors": [], - "message": "file_size_exceeded", "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "FILES_TYPE_NOT_ALLOWED": { - "summary": "FILES_TYPE_NOT_ALLOWED", - "value": { - "code": "FILES_TYPE_NOT_ALLOWED", - "description": "This file type is not allowed. Upload a supported file type.", + "code": "VALIDATION_FAILED", + "message": "validation_failed", + "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "file_type_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "FILES_UNREADABLE": { - "summary": "FILES_UNREADABLE", + "WALLETS_ATTACHED_TO_VIRTUAL_ACCOUNT": { + "summary": "WALLETS_ATTACHED_TO_VIRTUAL_ACCOUNT", "value": { - "code": "FILES_UNREADABLE", - "description": "We could not read the uploaded file. Check the file and try again.", - "errors": [], - "message": "file_download_failed", "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VALIDATION_FAILED": { - "summary": "VALIDATION_FAILED", - "value": { - "code": "VALIDATION_FAILED", - "description": "The request contains invalid fields. Check the errors list for details.", + "code": "WALLETS_ATTACHED_TO_VIRTUAL_ACCOUNT", + "message": "wallet_attached_to_virtual_account", + "description": "This wallet is attached to a virtual account and cannot be deleted. Delete the virtual account first.", "errors": [], - "message": "validation_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `CUSTOMERS_KYC_NOT_APPROVED`, `FILES_TOO_LARGE`, `FILES_TYPE_NOT_ALLOWED`, `FILES_UNREADABLE`, `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "404": { + "description": "Possible error codes: `WALLETS_NOT_FOUND`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { - "CUSTOMERS_NOT_FOUND": { - "summary": "CUSTOMERS_NOT_FOUND", + "WALLETS_NOT_FOUND": { + "summary": "WALLETS_NOT_FOUND", "value": { - "code": "CUSTOMERS_NOT_FOUND", - "description": "The requested customer was not found.", - "errors": [], - "message": "customer_not_found", "success": false, + "code": "WALLETS_NOT_FOUND", + "message": "wallet_not_found", + "description": "The requested wallet was not found.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `CUSTOMERS_NOT_FOUND`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { - "FILES_UNREADABLE": { - "summary": "FILES_UNREADABLE", - "value": { - "code": "FILES_UNREADABLE", - "description": "We could not read the uploaded file. Check the file and try again.", - "errors": [], - "message": "file_download_failed", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `FILES_UNREADABLE`, `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Request Limit Increase", - "tags": [ - "Customers" - ], - "x-sdk": true + } } }, - "/v1/instances/{instance_id}/customers/{customer_id}/rfi": { - "get": { - "description": "Returns the open (pending) RFI for this customer, or null if the customer has no pending RFI.", + "/v1/instances/{instance_id}/customers/{customer_id}/bank-accounts/{bank_account_id}/offramp-wallets": { + "post": { + "x-sdk": true, + "tags": [ + "Offramp Wallets" + ], + "summary": "Create Offramp Wallet", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } + "maxLength": 15, + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" }, { - "in": "path", - "name": "customer_id", - "required": true, "schema": { - "description": "Customer ID", - "example": "re_000000000000", + "type": "string", + "minLength": 15, "maxLength": 15, + "description": "Customer ID", + "example": "re_000000000000" + }, + "required": true, + "name": "customer_id", + "in": "path" + }, + { + "schema": { + "type": "string", "minLength": 15, - "type": "string" - } + "maxLength": 15, + "example": "ba_000000000000" + }, + "required": true, + "name": "bank_account_id", + "in": "path" + }, + { + "schema": { + "type": "string", + "maxLength": 255, + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, + "required": false, + "name": "Idempotency-Key", + "in": "header" } ], + "requestBody": { + "description": "Create a new offramp wallet", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "external_id": { + "type": [ + "string", + "null" + ], + "example": "your_external_id" + }, + "network": { + "type": "string", + "enum": [ + "tron", + "solana", + "solana_devnet", + "arbitrum", + "base", + "ethereum", + "polygon", + "sepolia", + "arbitrum_sepolia", + "base_sepolia", + "polygon_amoy" + ], + "example": "tron" + } + }, + "required": [ + "network" + ] + } + } + } + }, "responses": { "200": { + "description": "Create offramp wallet", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Rfi" + "type": "object", + "properties": { + "id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "ow_000000000000" + }, + "external_id": { + "type": [ + "string", + "null" + ], + "example": "your_external_id" + }, + "circle_wallet_id": { + "type": [ + "string", + "null" + ], + "example": "01234567-abcd-efgh-ijkl-012345678901" + }, + "network": { + "type": "string", + "enum": [ + "tron", + "solana", + "solana_devnet", + "arbitrum", + "base", + "ethereum", + "polygon", + "sepolia", + "arbitrum_sepolia", + "base_sepolia", + "polygon_amoy" + ], + "example": "tron" + }, + "address": { + "type": "string", + "example": "TALJN9zTTEL9TVBb4WuTt6wLvPqJZr3hvb" + } + }, + "required": [ + "id", + "network", + "address" + ] } } - }, - "description": "Open RFI, or null if none" + } }, "400": { + "description": "Possible error codes: `BANK_ACCOUNTS_INCOMPLETE`, `BLOCKCHAIN_NETWORK_NOT_SUPPORTED`, `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { + "BANK_ACCOUNTS_INCOMPLETE": { + "summary": "BANK_ACCOUNTS_INCOMPLETE", + "value": { + "success": false, + "code": "BANK_ACCOUNTS_INCOMPLETE", + "message": "sepa_bank_account_incomplete", + "description": "The bank account details are incomplete for this payment method. Provide the missing fields.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "BLOCKCHAIN_NETWORK_NOT_SUPPORTED": { + "summary": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", + "value": { + "success": false, + "code": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", + "message": "network_not_supported_on_dev_instance", + "description": "This network or token combination is not supported for this operation.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Get Open RFI for Customer", + } + }, + "get": { + "x-sdk": true, "tags": [ - "Customers" + "Offramp Wallets" ], - "x-sdk": true - }, - "post": { - "description": "Submit a flat response object for the open RFI. On success flips kyc_status back to verifying. Returns `{ success: false, reason }` when no pending RFI exists, callers should refetch the RFI state instead of retrying.", + "summary": "Get Offramp Wallets", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } + "maxLength": 15, + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" }, { - "in": "path", - "name": "customer_id", - "required": true, "schema": { - "description": "Customer ID", - "example": "re_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } + "maxLength": 15, + "description": "Customer ID", + "example": "re_000000000000" + }, + "required": true, + "name": "customer_id", + "in": "path" }, { - "in": "header", - "name": "Idempotency-Key", - "required": false, "schema": { - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "maxLength": 255, - "type": "string" - } + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "ba_000000000000" + }, + "required": true, + "name": "bank_account_id", + "in": "path" } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "additionalProperties": {}, - "type": "object" - } - } - } - }, "responses": { "200": { + "description": "Get offramp wallets", "content": { "application/json": { "schema": { - "anyOf": [ - { - "properties": { - "success": { - "enum": [ - true - ], - "type": "boolean" - } - }, - "required": [ - "success" - ], - "type": "object" - }, - { - "properties": { - "reason": { - "enum": [ - "no_pending_rfi", - "already_resolved" - ], - "type": "string" - }, - "success": { - "enum": [ - false - ], - "type": "boolean" - } - }, - "required": [ - "success", - "reason" - ], - "type": "object" - } - ] + "type": "array", + "items": { + "$ref": "#/components/schemas/OfframpWallet" + } } } - }, - "description": "RFI submitted (success: true) or rejected because no pending RFI exists (success: false)" + } }, "400": { + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, + } + } + } + }, + "404": { + "description": "Possible error codes: `WALLETS_NOT_FOUND`. See the Error responses section for retry semantics.", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/Error" + }, + "examples": { + "WALLETS_NOT_FOUND": { + "summary": "WALLETS_NOT_FOUND", + "value": { + "success": false, + "code": "WALLETS_NOT_FOUND", + "message": "wallet_not_found", + "description": "The requested wallet was not found.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { - "COMPLIANCE_RFI_INVALID": { - "summary": "COMPLIANCE_RFI_INVALID", - "value": { - "code": "COMPLIANCE_RFI_INVALID", - "description": "The information request could not be processed. Check the submitted fields.", - "errors": [], - "message": "rfi_request_corrupt", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `COMPLIANCE_RFI_INVALID`, `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Submit RFI Response", - "tags": [ - "Customers" - ], - "x-sdk": true + } } }, - "/v1/instances/{instance_id}/customers/{customer_id}/virtual-accounts": { + "/v1/instances/{instance_id}/customers/{customer_id}/bank-accounts/{bank_account_id}/offramp-wallets/{id}": { "get": { + "x-sdk": true, + "tags": [ + "Offramp Wallets" + ], + "summary": "Get Offramp Wallet", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } + "maxLength": 15, + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" }, { - "in": "path", - "name": "customer_id", - "required": true, "schema": { + "type": "string", + "minLength": 15, + "maxLength": 15, "description": "Customer ID", - "example": "re_000000000000", + "example": "re_000000000000" + }, + "required": true, + "name": "customer_id", + "in": "path" + }, + { + "schema": { + "type": "string", + "minLength": 15, "maxLength": 15, + "example": "ba_000000000000" + }, + "required": true, + "name": "bank_account_id", + "in": "path" + }, + { + "schema": { + "type": "string", "minLength": 15, - "type": "string" - } + "maxLength": 15, + "example": "ow_000000000000" + }, + "required": true, + "name": "id", + "in": "path" } ], "responses": { "200": { + "description": "Get offramp wallet", "content": { "application/json": { "schema": { - "items": { - "$ref": "#/components/schemas/VirtualAccountOut" - }, - "type": "array" + "$ref": "#/components/schemas/OfframpWallet" } } - }, - "description": "Get virtual accounts" + } }, "400": { + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Retrieve Virtual Accounts", + } + } + }, + "/v1/instances/{instance_id}/quotes": { + "post": { + "x-sdk": true, "tags": [ - "Virtual Accounts" + "Payouts Quotes" ], - "x-sdk": true - }, - "post": { + "summary": "Create Quote", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } - }, - { - "in": "path", - "name": "customer_id", - "required": true, - "schema": { - "description": "Customer ID", - "example": "re_000000000000", "maxLength": 15, - "minLength": 15, - "type": "string" - } + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" }, { - "in": "header", - "name": "Idempotency-Key", - "required": false, "schema": { - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "type": "string", "maxLength": 255, - "type": "string" - } + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, + "required": false, + "name": "Idempotency-Key", + "in": "header" } ], "requestBody": { + "description": "Create a new quote", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateVirtualAccountIn" + "$ref": "#/components/schemas/QuoteIn" } } - }, - "description": "Create a new virtual account" + } }, "responses": { "200": { + "description": "Quote creation details", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/VirtualAccountOut" + "$ref": "#/components/schemas/QuoteOut" } } - }, - "description": "Create virtual account" + } }, "400": { + "description": "Possible error codes: `BANK_ACCOUNTS_INCOMPLETE`, `BANK_ACCOUNTS_NOT_APPROVED`, `BLOCKCHAIN_NETWORK_NOT_SUPPORTED`, `CUSTOMERS_COUNTRY_NOT_SUPPORTED`, `CUSTOMERS_KYC_NOT_APPROVED`, `FEES_PARTNER_FEE_EXCEEDED`, `FILES_UNREADABLE`, `LIMITS_AMOUNT_OUT_OF_RANGE`, `LIMITS_VOLUME_EXCEEDED`, `PAYOUTS_AMOUNT_BELOW_MINIMUM`, `QUOTES_RATE_UNAVAILABLE`, `TOS_NOT_ACCEPTED`, `VALIDATION_FAILED`, `VIRTUAL_ACCOUNTS_NOT_APPROVED`, `VIRTUAL_ACCOUNTS_NOT_FOUND`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { - "BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED": { - "summary": "BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED", + "BANK_ACCOUNTS_INCOMPLETE": { + "summary": "BANK_ACCOUNTS_INCOMPLETE", "value": { - "code": "BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED", - "description": "This banking option is not supported for this operation.", + "success": false, + "code": "BANK_ACCOUNTS_INCOMPLETE", + "message": "sepa_bank_account_incomplete", + "description": "The bank account details are incomplete for this payment method. Provide the missing fields.", "errors": [], - "message": "unsupported_banking_partner", + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "BANK_ACCOUNTS_NOT_APPROVED": { + "summary": "BANK_ACCOUNTS_NOT_APPROVED", + "value": { "success": false, + "code": "BANK_ACCOUNTS_NOT_APPROVED", + "message": "bank_account_not_approved", + "description": "This bank account is not approved yet.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "BLOCKCHAIN_NETWORK_NOT_SUPPORTED": { "summary": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", "value": { + "success": false, "code": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", + "message": "network_not_supported_on_dev_instance", "description": "This network or token combination is not supported for this operation.", "errors": [], - "message": "network_not_supported_on_dev_instance", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "CUSTOMERS_COUNTRY_NOT_SUPPORTED": { "summary": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", "value": { + "success": false, "code": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", + "message": "country_not_supported", "description": "This country is not supported for this operation.", "errors": [], - "message": "country_not_supported", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "CUSTOMERS_ENHANCED_KYC_REQUIRED": { - "summary": "CUSTOMERS_ENHANCED_KYC_REQUIRED", + "CUSTOMERS_KYC_NOT_APPROVED": { + "summary": "CUSTOMERS_KYC_NOT_APPROVED", "value": { - "code": "CUSTOMERS_ENHANCED_KYC_REQUIRED", - "description": "Individuals from high-risk countries must use enhanced verification (kyc_type: enhanced); standard verification is not available for them. See https://www.blindpay.com/docs/kb/supported-countries for country tiers.", - "errors": [], - "message": "only_enhanced_kyc_allowed_for_high_risk_countries", "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "CUSTOMERS_ID_DOCUMENT_INVALID": { - "summary": "CUSTOMERS_ID_DOCUMENT_INVALID", - "value": { - "code": "CUSTOMERS_ID_DOCUMENT_INVALID", - "description": "The identity document is not an accepted passport or national ID. Provide a valid passport or national ID for this customer (a driver license is not accepted for high-risk countries).", + "code": "CUSTOMERS_KYC_NOT_APPROVED", + "message": "kyc_not_approved", + "description": "This customer has not completed verification yet. Complete the verification before continuing.", "errors": [], - "message": "id_doc_is_not_valid_passport_or_national_id", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "CUSTOMERS_KYC_NOT_APPROVED": { - "summary": "CUSTOMERS_KYC_NOT_APPROVED", + "FEES_PARTNER_FEE_EXCEEDED": { + "summary": "FEES_PARTNER_FEE_EXCEEDED", "value": { - "code": "CUSTOMERS_KYC_NOT_APPROVED", - "description": "This customer has not completed verification yet. Complete the verification before continuing.", - "errors": [], - "message": "kyc_not_approved", "success": false, + "code": "FEES_PARTNER_FEE_EXCEEDED", + "message": "partner_fee_exceeded", + "description": "The partner fee exceeds the allowed maximum for this transaction.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "FILES_UNREADABLE": { "summary": "FILES_UNREADABLE", "value": { + "success": false, "code": "FILES_UNREADABLE", + "message": "file_download_failed", "description": "We could not read the uploaded file. Check the file and try again.", "errors": [], - "message": "file_download_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "VALIDATION_FAILED": { - "summary": "VALIDATION_FAILED", + "LIMITS_AMOUNT_OUT_OF_RANGE": { + "summary": "LIMITS_AMOUNT_OUT_OF_RANGE", "value": { - "code": "VALIDATION_FAILED", - "description": "The request contains invalid fields. Check the errors list for details.", + "success": false, + "code": "LIMITS_AMOUNT_OUT_OF_RANGE", + "message": "limits_amount_out_of_range", + "description": "The amount is outside the allowed range. The message includes the allowed range.", "errors": [], - "message": "validation_failed", + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "LIMITS_VOLUME_EXCEEDED": { + "summary": "LIMITS_VOLUME_EXCEEDED", + "value": { "success": false, + "code": "LIMITS_VOLUME_EXCEEDED", + "message": "limits_volume_exceeded", + "description": "You exceeded your transaction volume limit. The message includes the remaining amount available.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "VALIDATION_MISSING_REQUIRED_FIELDS": { - "summary": "VALIDATION_MISSING_REQUIRED_FIELDS", + "PAYOUTS_AMOUNT_BELOW_MINIMUM": { + "summary": "PAYOUTS_AMOUNT_BELOW_MINIMUM", "value": { - "code": "VALIDATION_MISSING_REQUIRED_FIELDS", - "description": "Required fields are missing. Provide the missing fields and try again.", + "success": false, + "code": "PAYOUTS_AMOUNT_BELOW_MINIMUM", + "message": "swift_minimum_is_100_usd", + "description": "The amount is below the minimum for this payment rail.", "errors": [], - "message": "missing_required_fields", + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "QUOTES_RATE_UNAVAILABLE": { + "summary": "QUOTES_RATE_UNAVAILABLE", + "value": { "success": false, + "code": "QUOTES_RATE_UNAVAILABLE", + "message": "fx_rate_unavailable", + "description": "An exchange rate is temporarily unavailable. Try again shortly.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "VIRTUAL_ACCOUNTS_DISABLED": { - "summary": "VIRTUAL_ACCOUNTS_DISABLED", + "TOS_NOT_ACCEPTED": { + "summary": "TOS_NOT_ACCEPTED", "value": { - "code": "VIRTUAL_ACCOUNTS_DISABLED", - "description": "Virtual accounts are not enabled for this account. Contact support to enable them.", + "success": false, + "code": "TOS_NOT_ACCEPTED", + "message": "please_accept_terms_of_service", + "description": "The terms of service must be accepted before continuing.", "errors": [], - "message": "virtual_accounts_not_enabled", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED": { - "summary": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", + "VALIDATION_FAILED": { + "summary": "VALIDATION_FAILED", "value": { - "code": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", - "description": "Additional documents are required to create this virtual account. Upload the requested documents.", - "errors": [], - "message": "id_doc_front_file_required", "success": false, + "code": "VALIDATION_FAILED", + "message": "validation_failed", + "description": "The request contains invalid fields. Check the errors list for details.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED": { - "summary": "VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED", + "VIRTUAL_ACCOUNTS_NOT_APPROVED": { + "summary": "VIRTUAL_ACCOUNTS_NOT_APPROVED", "value": { - "code": "VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED", - "description": "Virtual accounts are not available for this country or region.", + "success": false, + "code": "VIRTUAL_ACCOUNTS_NOT_APPROVED", + "message": "virtual_account_not_approved", + "description": "This virtual account is not approved yet.", "errors": [], - "message": "us_state_not_supported", + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VIRTUAL_ACCOUNTS_NOT_FOUND": { + "summary": "VIRTUAL_ACCOUNTS_NOT_FOUND", + "value": { "success": false, + "code": "VIRTUAL_ACCOUNTS_NOT_FOUND", + "message": "virtual_account_not_found", + "description": "The requested virtual account was not found.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED`, `BLOCKCHAIN_NETWORK_NOT_SUPPORTED`, `CUSTOMERS_COUNTRY_NOT_SUPPORTED`, `CUSTOMERS_ENHANCED_KYC_REQUIRED`, `CUSTOMERS_ID_DOCUMENT_INVALID`, `CUSTOMERS_KYC_NOT_APPROVED`, `FILES_UNREADABLE`, `VALIDATION_FAILED`, `VALIDATION_MISSING_REQUIRED_FIELDS`, `VIRTUAL_ACCOUNTS_DISABLED`, `VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED`, `VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "404": { + "description": "Possible error codes: `BANK_ACCOUNTS_NOT_FOUND`, `CUSTOMERS_NOT_FOUND`, `FEES_NOT_FOUND`, `INSTANCES_NOT_FOUND`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { + "BANK_ACCOUNTS_NOT_FOUND": { + "summary": "BANK_ACCOUNTS_NOT_FOUND", + "value": { + "success": false, + "code": "BANK_ACCOUNTS_NOT_FOUND", + "message": "bank_account_not_found", + "description": "The requested bank account was not found.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "CUSTOMERS_NOT_FOUND": { "summary": "CUSTOMERS_NOT_FOUND", "value": { + "success": false, "code": "CUSTOMERS_NOT_FOUND", + "message": "customer_not_found", "description": "The requested customer was not found.", "errors": [], - "message": "customer_not_found", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "INSTANCES_NOT_FOUND": { - "summary": "INSTANCES_NOT_FOUND", + "FEES_NOT_FOUND": { + "summary": "FEES_NOT_FOUND", "value": { - "code": "INSTANCES_NOT_FOUND", - "description": "The requested instance was not found.", - "errors": [], - "message": "instance_not_found", "success": false, + "code": "FEES_NOT_FOUND", + "message": "partner_fee_not_found", + "description": "The requested fee configuration was not found.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "WALLETS_NOT_FOUND": { - "summary": "WALLETS_NOT_FOUND", + "INSTANCES_NOT_FOUND": { + "summary": "INSTANCES_NOT_FOUND", "value": { - "code": "WALLETS_NOT_FOUND", - "description": "The requested wallet was not found.", - "errors": [], - "message": "wallet_not_found", "success": false, + "code": "INSTANCES_NOT_FOUND", + "message": "instance_not_found", + "description": "The requested instance was not found.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `CUSTOMERS_NOT_FOUND`, `INSTANCES_NOT_FOUND`, `WALLETS_NOT_FOUND`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `FILES_UNREADABLE`, `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "FILES_UNREADABLE": { "summary": "FILES_UNREADABLE", "value": { + "success": false, "code": "FILES_UNREADABLE", + "message": "file_download_failed", "description": "We could not read the uploaded file. Check the file and try again.", "errors": [], - "message": "file_download_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `FILES_UNREADABLE`, `INTERNAL_ERROR`. See the Error responses section for retry semantics." - } - }, - "summary": "Create Virtual Account", - "tags": [ - "Virtual Accounts" - ], - "x-sdk": true - } - }, - "/v1/instances/{instance_id}/customers/{customer_id}/virtual-accounts/{id}": { - "get": { - "parameters": [ - { - "in": "path", - "name": "instance_id", - "required": true, - "schema": { - "example": "in_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - } - }, - { - "in": "path", - "name": "customer_id", - "required": true, - "schema": { - "description": "Customer ID", - "example": "re_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - } - }, - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "example": "bk_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/VirtualAccountOut" - }, - { - "type": [ - "object", - "null" - ] - } - ] - } - } - }, - "description": "Get virtual account" - }, - "400": { - "content": { - "application/json": { - "examples": { - "VALIDATION_FAILED": { - "summary": "VALIDATION_FAILED", - "value": { - "code": "VALIDATION_FAILED", - "description": "The request contains invalid fields. Check the errors list for details.", - "errors": [], - "message": "validation_failed", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } - }, - "schema": { - "$ref": "#/components/schemas/Error" - } - } - }, - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." - }, - "401": { - "content": { - "application/json": { - "examples": { - "AUTH_UNAUTHORIZED": { - "summary": "AUTH_UNAUTHORIZED", - "value": { - "code": "AUTH_UNAUTHORIZED", - "description": "Authentication failed. Check your API key or session and try again.", - "errors": [], - "message": "unauthorized", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } - }, - "schema": { - "$ref": "#/components/schemas/Error" - } - } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." }, - "403": { + "503": { + "description": "Possible error codes: `QUOTES_RATE_UNAVAILABLE`. See the Error responses section for retry semantics.", "content": { "application/json": { - "examples": { - "AUTH_FORBIDDEN": { - "summary": "AUTH_FORBIDDEN", - "value": { - "code": "AUTH_FORBIDDEN", - "description": "You do not have permission to perform this action.", - "errors": [], - "message": "user_not_allowed", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } - }, "schema": { "$ref": "#/components/schemas/Error" - } - } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." - }, - "422": { - "content": { - "application/json": { - "examples": { - "DATA_INTEGRITY_ERROR": { - "summary": "DATA_INTEGRITY_ERROR", - "value": { - "code": "DATA_INTEGRITY_ERROR", - "description": "This record could not be loaded because it contains invalid stored data. Contact support with the ID below.", - "errors": [], - "message": "data_integrity_error", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } }, - "schema": { - "$ref": "#/components/schemas/Error" - } - } - }, - "description": "Possible error codes: `DATA_INTEGRITY_ERROR`. See the Error responses section for retry semantics." - }, - "429": { - "content": { - "application/json": { "examples": { - "AUTH_RATE_LIMITED": { - "summary": "AUTH_RATE_LIMITED", + "QUOTES_RATE_UNAVAILABLE": { + "summary": "QUOTES_RATE_UNAVAILABLE", "value": { - "code": "AUTH_RATE_LIMITED", - "description": "Too many requests. Wait a moment and try again.", - "errors": [], - "message": "api_key_rate_limit_exceeded", "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } - }, - "schema": { - "$ref": "#/components/schemas/Error" - } - } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." - }, - "500": { - "content": { - "application/json": { - "examples": { - "INTERNAL_ERROR": { - "summary": "INTERNAL_ERROR", - "value": { - "code": "INTERNAL_ERROR", - "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", + "code": "QUOTES_RATE_UNAVAILABLE", + "message": "fx_rate_unavailable", + "description": "An exchange rate is temporarily unavailable. Try again shortly.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Retrieve Virtual Account", + } + } + }, + "/v1/instances/{instance_id}/quotes/fx": { + "post": { + "x-sdk": true, "tags": [ - "Virtual Accounts" + "Payouts Quotes" ], - "x-sdk": true - }, - "put": { + "summary": "Get FX Rate", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } - }, - { - "in": "path", - "name": "customer_id", - "required": true, - "schema": { - "description": "Customer ID", - "example": "re_000000000000", "maxLength": 15, - "minLength": 15, - "type": "string" - } - }, - { - "in": "path", - "name": "id", + "example": "in_000000000000" + }, "required": true, - "schema": { - "example": "bk_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - } + "name": "instance_id", + "in": "path" }, { - "in": "header", - "name": "Idempotency-Key", - "required": false, "schema": { - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "type": "string", "maxLength": 255, - "type": "string" - } + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, + "required": false, + "name": "Idempotency-Key", + "in": "header" } ], "requestBody": { + "description": "Check FX rate", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UpdateVirtualAccountIn" + "type": "object", + "properties": { + "from": { + "type": "string", + "enum": [ + "USDC", + "USDT", + "USDB" + ], + "example": "USDC" + }, + "to": { + "type": "string", + "enum": [ + "BRL", + "USD", + "MXN", + "COP", + "ARS", + "EUR" + ], + "example": "BRL" + }, + "request_amount": { + "type": "integer", + "minimum": 500, + "description": "1000 represents 10.00, 2050 represents 20.50", + "example": 1000 + }, + "currency_type": { + "type": "string", + "enum": [ + "sender", + "receiver" + ], + "description": "", + "example": "sender" + } + }, + "required": [ + "from", + "to", + "request_amount", + "currency_type" + ] } } - }, - "description": "Update a virtual account" + } }, "responses": { "200": { + "description": "Check FX rate response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Success" + "type": "object", + "properties": { + "commercial_quotation": { + "type": [ + "number", + "null" + ], + "description": "1 USD = 4.95 BRL", + "example": 495 + }, + "blindpay_quotation": { + "type": [ + "number", + "null" + ], + "description": "1 USD = 4.85 BRL (commercial quotation - (blindpay taxes))", + "example": 485 + }, + "result_amount": { + "type": "number", + "minimum": 1 + }, + "instance_flat_fee": { + "type": [ + "number", + "null" + ], + "description": "0.5 USDC", + "example": 50 + }, + "instance_percentage_fee": { + "type": "number", + "minimum": 0, + "maximum": 10000 + } + }, + "required": [ + "commercial_quotation", + "blindpay_quotation", + "result_amount", + "instance_percentage_fee" + ] } } - }, - "description": "Update virtual account" + } }, "400": { + "description": "Possible error codes: `BANK_ACCOUNTS_INCOMPLETE`, `QUOTES_RATE_UNAVAILABLE`, `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { - "BLOCKCHAIN_NETWORK_NOT_SUPPORTED": { - "summary": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", + "BANK_ACCOUNTS_INCOMPLETE": { + "summary": "BANK_ACCOUNTS_INCOMPLETE", "value": { - "code": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", - "description": "This network or token combination is not supported for this operation.", + "success": false, + "code": "BANK_ACCOUNTS_INCOMPLETE", + "message": "sepa_bank_account_incomplete", + "description": "The bank account details are incomplete for this payment method. Provide the missing fields.", "errors": [], - "message": "network_not_supported_on_dev_instance", + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "QUOTES_RATE_UNAVAILABLE": { + "summary": "QUOTES_RATE_UNAVAILABLE", + "value": { "success": false, + "code": "QUOTES_RATE_UNAVAILABLE", + "message": "fx_rate_unavailable", + "description": "An exchange rate is temporarily unavailable. Try again shortly.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `BLOCKCHAIN_NETWORK_NOT_SUPPORTED`, `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", - "description": "You do not have permission to perform this action.", - "errors": [], "message": "user_not_allowed", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } - }, - "schema": { - "$ref": "#/components/schemas/Error" - } - } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." - }, - "404": { - "content": { - "application/json": { - "examples": { - "VIRTUAL_ACCOUNTS_NOT_FOUND": { - "summary": "VIRTUAL_ACCOUNTS_NOT_FOUND", - "value": { - "code": "VIRTUAL_ACCOUNTS_NOT_FOUND", - "description": "The requested virtual account was not found.", + "description": "You do not have permission to perform this action.", "errors": [], - "message": "virtual_account_not_found", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `VIRTUAL_ACCOUNTS_NOT_FOUND`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, + } + } + } + }, + "503": { + "description": "Possible error codes: `QUOTES_RATE_UNAVAILABLE`. See the Error responses section for retry semantics.", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/Error" + }, + "examples": { + "QUOTES_RATE_UNAVAILABLE": { + "summary": "QUOTES_RATE_UNAVAILABLE", + "value": { + "success": false, + "code": "QUOTES_RATE_UNAVAILABLE", + "message": "fx_rate_unavailable", + "description": "An exchange rate is temporarily unavailable. Try again shortly.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Update Virtual Account", - "tags": [ - "Virtual Accounts" - ], - "x-sdk": true + } } }, - "/v1/instances/{instance_id}/customers/{customer_id}/wallets": { + "/v1/instances/{instance_id}/payouts/{id}": { "get": { + "x-sdk": true, + "tags": [ + "Payouts" + ], + "summary": "Retrieve Payout", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } + "maxLength": 15, + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" }, { - "in": "path", - "name": "customer_id", - "required": true, "schema": { - "description": "Customer ID", - "example": "re_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } + "maxLength": 15, + "example": "pa_000000000000" + }, + "required": true, + "name": "id", + "in": "path" } ], "responses": { "200": { + "description": "List payouts", "content": { "application/json": { "schema": { - "items": { - "$ref": "#/components/schemas/WalletOut" - }, - "type": "array" + "$ref": "#/components/schemas/PayoutOut" } } - }, - "description": "Get wallets" + } }, "400": { + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { - "TRANSFERS_NOT_ENABLED": { - "summary": "TRANSFERS_NOT_ENABLED", - "value": { - "code": "TRANSFERS_NOT_ENABLED", - "description": "Wallets and transfers are not enabled for this account. Contact support to enable them.", - "errors": [], - "message": "wallets_and_transfers_not_enabled", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `TRANSFERS_NOT_ENABLED`, `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, + } + } + } + }, + "404": { + "description": "Possible error codes: `PAYOUTS_NOT_FOUND`. See the Error responses section for retry semantics.", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/Error" + }, + "examples": { + "PAYOUTS_NOT_FOUND": { + "summary": "PAYOUTS_NOT_FOUND", + "value": { + "success": false, + "code": "PAYOUTS_NOT_FOUND", + "message": "payout_not_found", + "description": "The requested payout was not found.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Retrieve Wallets", + } + } + }, + "/v1/e/payouts/{id}": { + "get": { + "x-sdk": true, "tags": [ - "Wallets" + "Payouts" ], - "x-sdk": true - }, - "post": { + "summary": "Retrieve Payout Track", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } - }, - { - "in": "path", - "name": "customer_id", - "required": true, - "schema": { - "description": "Customer ID", - "example": "re_000000000000", "maxLength": 15, - "minLength": 15, - "type": "string" - } - }, - { - "in": "header", - "name": "Idempotency-Key", - "required": false, - "schema": { - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "maxLength": 255, - "type": "string" - } + "example": "pa_000000000000" + }, + "required": true, + "name": "id", + "in": "path" } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateWalletIn" - } - } - }, - "description": "Create a new wallet" - }, "responses": { "200": { + "description": "List payouts", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WalletOut" + "$ref": "#/components/schemas/PayoutOut" } } - }, - "description": "Wallet created" + } }, "400": { + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { - "BLOCKCHAIN_NETWORK_NOT_SUPPORTED": { - "summary": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", - "value": { - "code": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", - "description": "This network or token combination is not supported for this operation.", - "errors": [], - "message": "network_not_supported_on_dev_instance", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "CUSTOMERS_KYC_NOT_APPROVED": { - "summary": "CUSTOMERS_KYC_NOT_APPROVED", - "value": { - "code": "CUSTOMERS_KYC_NOT_APPROVED", - "description": "This customer has not completed verification yet. Complete the verification before continuing.", - "errors": [], - "message": "kyc_not_approved", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "TRANSFERS_NOT_ENABLED": { - "summary": "TRANSFERS_NOT_ENABLED", - "value": { - "code": "TRANSFERS_NOT_ENABLED", - "description": "Wallets and transfers are not enabled for this account. Contact support to enable them.", - "errors": [], - "message": "wallets_and_transfers_not_enabled", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", - "description": "The request contains invalid fields. Check the errors list for details.", - "errors": [], "message": "validation_failed", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED": { - "summary": "VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED", - "value": { - "code": "VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED", - "description": "Virtual accounts are not available for this country or region.", + "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "us_state_not_supported", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `BLOCKCHAIN_NETWORK_NOT_SUPPORTED`, `CUSTOMERS_KYC_NOT_APPROVED`, `TRANSFERS_NOT_ENABLED`, `VALIDATION_FAILED`, `VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, + } + } + } + }, + "404": { + "description": "Possible error codes: `PAYOUTS_NOT_FOUND`. See the Error responses section for retry semantics.", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/Error" + }, + "examples": { + "PAYOUTS_NOT_FOUND": { + "summary": "PAYOUTS_NOT_FOUND", + "value": { + "success": false, + "code": "PAYOUTS_NOT_FOUND", + "message": "payout_not_found", + "description": "The requested payout was not found.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Create Wallet", - "tags": [ - "Wallets" - ], - "x-sdk": true + } } }, - "/v1/instances/{instance_id}/customers/{customer_id}/wallets/{id}": { - "delete": { + "/v1/instances/{instance_id}/payouts": { + "get": { + "x-sdk": true, + "tags": [ + "Payouts" + ], + "summary": "Retrieve Payouts", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", + "type": "string", + "minLength": 15, "maxLength": 15, + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" + }, + { + "schema": { + "type": "string", + "enum": [ + "10", + "50", + "100", + "200", + "500", + "1000" + ], + "description": "Number of items to return", + "example": "50" + }, + "required": false, + "name": "limit", + "in": "query" + }, + { + "schema": { + "type": "string", + "enum": [ + "0", + "10", + "50", + "100", + "200", + "500", + "1000" + ], + "description": "Number of items to skip", + "example": "0" + }, + "required": false, + "name": "offset", + "in": "query" + }, + { + "schema": { + "type": "string", + "description": "A cursor for use in pagination. starting_after is an object ID that defines your place in the list.", + "example": "pi_123" + }, + "required": false, + "name": "starting_after", + "in": "query" + }, + { + "schema": { + "type": "string", + "description": "A cursor for use in pagination. ending_before is an object ID that defines your place in the list.", + "example": "pi_123" + }, + "required": false, + "name": "ending_before", + "in": "query" + }, + { + "schema": { + "type": "string", "minLength": 15, + "maxLength": 15, + "example": "re_000000000000" + }, + "required": false, + "name": "customer_id", + "in": "query" + }, + { + "schema": { + "type": "string", + "enum": [ + "processing", + "failed", + "refunded", + "completed", + "on_hold" + ] + }, + "required": false, + "name": "status", + "in": "query" + }, + { + "schema": { "type": "string" - } + }, + "required": false, + "name": "customer_name", + "in": "query" }, { - "in": "path", - "name": "customer_id", - "required": true, "schema": { - "description": "Customer ID", - "example": "re_000000000000", - "maxLength": 15, - "minLength": 15, "type": "string" - } + }, + "required": false, + "name": "bank_account_id", + "in": "query" }, { - "in": "path", - "name": "id", - "required": true, "schema": { - "example": "bk_000000000000", - "maxLength": 15, - "minLength": 15, "type": "string" - } + }, + "required": false, + "name": "country", + "in": "query" }, { - "in": "header", - "name": "Idempotency-Key", + "schema": { + "type": "string", + "enum": [ + "wire", + "ach", + "pix", + "pix_safe", + "ted", + "spei_bitso", + "transfers_bitso", + "ach_cop_bitso", + "international_swift", + "rtp", + "sepa" + ] + }, "required": false, + "name": "payment_method", + "in": "query" + }, + { "schema": { - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "maxLength": 255, "type": "string" - } + }, + "required": false, + "name": "network", + "in": "query" + }, + { + "schema": { + "type": "string" + }, + "required": false, + "name": "token", + "in": "query" } ], "responses": { "200": { + "description": "List payouts with pagination and filtering", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Success" + "anyOf": [ + { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PayoutOut" + } + }, + "pagination": { + "$ref": "#/components/schemas/PaginationMetadata" + } + }, + "required": [ + "data", + "pagination" + ] + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/PayoutOut" + } + } + ] } } - }, - "description": "Delete wallet" + } }, "400": { + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { - "TRANSFERS_NOT_ENABLED": { - "summary": "TRANSFERS_NOT_ENABLED", - "value": { - "code": "TRANSFERS_NOT_ENABLED", - "description": "Wallets and transfers are not enabled for this account. Contact support to enable them.", - "errors": [], - "message": "wallets_and_transfers_not_enabled", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", - "description": "The request contains invalid fields. Check the errors list for details.", - "errors": [], "message": "validation_failed", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "WALLETS_ATTACHED_TO_VIRTUAL_ACCOUNT": { - "summary": "WALLETS_ATTACHED_TO_VIRTUAL_ACCOUNT", - "value": { - "code": "WALLETS_ATTACHED_TO_VIRTUAL_ACCOUNT", - "description": "This wallet is attached to a virtual account and cannot be deleted. Delete the virtual account first.", + "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "wallet_attached_to_virtual_account", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `TRANSFERS_NOT_ENABLED`, `VALIDATION_FAILED`, `WALLETS_ATTACHED_TO_VIRTUAL_ACCOUNT`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Remove Wallet", + } + } + }, + "/v1/instances/{instance_id}/payouts/stellar/authorize": { + "post": { + "x-sdk": true, "tags": [ - "Wallets" + "Payouts" ], - "x-sdk": true - }, - "get": { + "summary": "Authorize Token Stellar", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } - }, - { - "in": "path", - "name": "customer_id", - "required": true, - "schema": { - "description": "Customer ID", - "example": "re_000000000000", "maxLength": 15, - "minLength": 15, - "type": "string" - } + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" }, { - "in": "path", - "name": "id", - "required": true, "schema": { - "example": "bk_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - } + "type": "string", + "maxLength": 255, + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, + "required": false, + "name": "Idempotency-Key", + "in": "header" } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PayoutOnStellarAuthorizeIn" + } + } + } + }, "responses": { "200": { + "description": "Payout started with success", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WalletOut" + "type": "object", + "properties": { + "transaction_hash": { + "type": "string" + } + }, + "required": [ + "transaction_hash" + ] } } - }, - "description": "Get wallet" + } }, "400": { + "description": "Possible error codes: `QUOTES_INVALID_STATE`, `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { - "TRANSFERS_NOT_ENABLED": { - "summary": "TRANSFERS_NOT_ENABLED", + "QUOTES_INVALID_STATE": { + "summary": "QUOTES_INVALID_STATE", "value": { - "code": "TRANSFERS_NOT_ENABLED", - "description": "Wallets and transfers are not enabled for this account. Contact support to enable them.", - "errors": [], - "message": "wallets_and_transfers_not_enabled", "success": false, + "code": "QUOTES_INVALID_STATE", + "message": "quote_invalid_state", + "description": "This quote cannot be authorized in its current state. Request a new quote and try again.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `TRANSFERS_NOT_ENABLED`, `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Retrieve Wallet", - "tags": [ - "Wallets" - ], - "x-sdk": true + } } }, - "/v1/instances/{instance_id}/customers/{customer_id}/wallets/{id}/balance": { - "get": { + "/v1/instances/{instance_id}/payouts/stellar": { + "post": { + "x-sdk": true, + "tags": [ + "Payouts" + ], + "summary": "Create Payout on Stellar", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } - }, - { - "in": "path", - "name": "customer_id", - "required": true, - "schema": { - "description": "Customer ID", - "example": "re_000000000000", "maxLength": 15, - "minLength": 15, - "type": "string" - } + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" }, { - "in": "path", - "name": "id", - "required": true, "schema": { - "example": "bk_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - } + "type": "string", + "maxLength": 255, + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, + "required": false, + "name": "Idempotency-Key", + "in": "header" } ], + "requestBody": { + "description": "Start payout on stellar blockchain", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PayoutOnStellarIn" + } + } + } + }, "responses": { "200": { + "description": "Payout started with success", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WalletBalanceOut" + "$ref": "#/components/schemas/PayoutOnEvmOut" } } - }, - "description": "Get wallet balance" + } }, "400": { + "description": "Possible error codes: `BANK_ACCOUNTS_INCOMPLETE`, `BLOCKCHAIN_TX_FAILED`, `CUSTOMERS_COUNTRY_NOT_SUPPORTED`, `CUSTOMERS_INVALID_PHONE`, `CUSTOMERS_INVALID_TAX_ID`, `CUSTOMERS_ONBOARDING_INCOMPLETE`, `FILES_UNREADABLE`, `PAYOUTS_AMOUNT_BELOW_MINIMUM`, `QUOTES_ALREADY_USED`, `QUOTES_EXPIRED`, `VALIDATION_FAILED`, `VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED`, `VIRTUAL_ACCOUNTS_NOT_FOUND`, `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { - "TRANSFERS_NOT_ENABLED": { - "summary": "TRANSFERS_NOT_ENABLED", + "BANK_ACCOUNTS_INCOMPLETE": { + "summary": "BANK_ACCOUNTS_INCOMPLETE", "value": { - "code": "TRANSFERS_NOT_ENABLED", - "description": "Wallets and transfers are not enabled for this account. Contact support to enable them.", - "errors": [], - "message": "wallets_and_transfers_not_enabled", "success": false, + "code": "BANK_ACCOUNTS_INCOMPLETE", + "message": "sepa_bank_account_incomplete", + "description": "The bank account details are incomplete for this payment method. Provide the missing fields.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "VALIDATION_FAILED": { - "summary": "VALIDATION_FAILED", + "BLOCKCHAIN_TX_FAILED": { + "summary": "BLOCKCHAIN_TX_FAILED", "value": { - "code": "VALIDATION_FAILED", - "description": "The request contains invalid fields. Check the errors list for details.", - "errors": [], - "message": "validation_failed", "success": false, + "code": "BLOCKCHAIN_TX_FAILED", + "message": "transaction_failed", + "description": "The blockchain transaction failed. Try again, and contact support if the problem persists.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } - } - }, - "schema": { - "$ref": "#/components/schemas/Error" - } - } - }, - "description": "Possible error codes: `TRANSFERS_NOT_ENABLED`, `VALIDATION_FAILED`. See the Error responses section for retry semantics." - }, - "401": { - "content": { - "application/json": { - "examples": { - "AUTH_UNAUTHORIZED": { - "summary": "AUTH_UNAUTHORIZED", + }, + "CUSTOMERS_COUNTRY_NOT_SUPPORTED": { + "summary": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", "value": { - "code": "AUTH_UNAUTHORIZED", - "description": "Authentication failed. Check your API key or session and try again.", - "errors": [], - "message": "unauthorized", "success": false, + "code": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", + "message": "country_not_supported", + "description": "This country is not supported for this operation.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } - } - }, - "schema": { - "$ref": "#/components/schemas/Error" - } - } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." - }, - "403": { - "content": { - "application/json": { - "examples": { - "AUTH_FORBIDDEN": { - "summary": "AUTH_FORBIDDEN", + }, + "CUSTOMERS_INVALID_PHONE": { + "summary": "CUSTOMERS_INVALID_PHONE", "value": { - "code": "AUTH_FORBIDDEN", - "description": "You do not have permission to perform this action.", - "errors": [], - "message": "user_not_allowed", "success": false, + "code": "CUSTOMERS_INVALID_PHONE", + "message": "invalid_phone_number", + "description": "The phone number provided is not valid. Check the number and try again.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } - } - }, - "schema": { - "$ref": "#/components/schemas/Error" - } - } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." - }, - "429": { - "content": { - "application/json": { - "examples": { - "AUTH_RATE_LIMITED": { - "summary": "AUTH_RATE_LIMITED", + }, + "CUSTOMERS_INVALID_TAX_ID": { + "summary": "CUSTOMERS_INVALID_TAX_ID", "value": { - "code": "AUTH_RATE_LIMITED", - "description": "Too many requests. Wait a moment and try again.", - "errors": [], - "message": "api_key_rate_limit_exceeded", "success": false, + "code": "CUSTOMERS_INVALID_TAX_ID", + "message": "invalid_cpf_or_rg_tax_id", + "description": "The tax ID provided is not valid. Check the value and try again.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } - } - }, - "schema": { - "$ref": "#/components/schemas/Error" - } - } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." - }, - "500": { - "content": { - "application/json": { - "examples": { - "INTERNAL_ERROR": { - "summary": "INTERNAL_ERROR", + }, + "CUSTOMERS_ONBOARDING_INCOMPLETE": { + "summary": "CUSTOMERS_ONBOARDING_INCOMPLETE", "value": { - "code": "INTERNAL_ERROR", - "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", + "success": false, + "code": "CUSTOMERS_ONBOARDING_INCOMPLETE", + "message": "onboarding_incomplete", + "description": "Onboarding is not complete yet. Finish the remaining steps before continuing.", "errors": [], - "message": "internal_error", + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "FILES_UNREADABLE": { + "summary": "FILES_UNREADABLE", + "value": { "success": false, + "code": "FILES_UNREADABLE", + "message": "file_download_failed", + "description": "We could not read the uploaded file. Check the file and try again.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } - } - }, - "schema": { - "$ref": "#/components/schemas/Error" - } - } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." - }, - "503": { - "content": { - "application/json": { - "examples": { - "WALLETS_BALANCE_UNAVAILABLE": { - "summary": "WALLETS_BALANCE_UNAVAILABLE", + }, + "PAYOUTS_AMOUNT_BELOW_MINIMUM": { + "summary": "PAYOUTS_AMOUNT_BELOW_MINIMUM", "value": { - "code": "WALLETS_BALANCE_UNAVAILABLE", - "description": "The wallet balance is temporarily unavailable. Try again shortly.", + "success": false, + "code": "PAYOUTS_AMOUNT_BELOW_MINIMUM", + "message": "swift_minimum_is_100_usd", + "description": "The amount is below the minimum for this payment rail.", "errors": [], - "message": "balance_temporarily_unavailable", + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "QUOTES_ALREADY_USED": { + "summary": "QUOTES_ALREADY_USED", + "value": { "success": false, + "code": "QUOTES_ALREADY_USED", + "message": "quote_already_used", + "description": "This quote was already used. Request a new quote.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } - } - }, - "schema": { - "$ref": "#/components/schemas/Error" - } - } - }, - "description": "Possible error codes: `WALLETS_BALANCE_UNAVAILABLE`. See the Error responses section for retry semantics." - } - }, - "summary": "Retrieve Wallet Balance", - "tags": [ - "Wallets" - ], - "x-sdk": true - } - }, - "/v1/instances/{instance_id}/customers/{id}": { - "delete": { - "parameters": [ - { - "in": "path", - "name": "instance_id", - "required": true, - "schema": { - "example": "in_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - } - }, - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "example": "re_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - } - }, - { - "in": "header", - "name": "Idempotency-Key", - "required": false, - "schema": { - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "maxLength": 255, - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Success" - } - } - }, - "description": "Customer deleted" - }, - "400": { - "content": { - "application/json": { - "examples": { + }, + "QUOTES_EXPIRED": { + "summary": "QUOTES_EXPIRED", + "value": { + "success": false, + "code": "QUOTES_EXPIRED", + "message": "quote_expired", + "description": "This quote has expired. Request a new quote and try again.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED": { + "summary": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", + "value": { + "success": false, + "code": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", + "message": "id_doc_front_file_required", + "description": "Additional documents are required to create this virtual account. Upload the requested documents.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VIRTUAL_ACCOUNTS_NOT_FOUND": { + "summary": "VIRTUAL_ACCOUNTS_NOT_FOUND", + "value": { + "success": false, + "code": "VIRTUAL_ACCOUNTS_NOT_FOUND", + "message": "virtual_account_not_found", + "description": "The requested virtual account was not found.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { + "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "value": { "success": false, + "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "message": "virtual_account_provision_failed", + "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, + } + } + } + }, + "422": { + "description": "Possible error codes: `CUSTOMERS_INVALID_DATA`. See the Error responses section for retry semantics.", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/Error" + }, + "examples": { + "CUSTOMERS_INVALID_DATA": { + "summary": "CUSTOMERS_INVALID_DATA", + "value": { + "success": false, + "code": "CUSTOMERS_INVALID_DATA", + "message": "invalid_customer_data", + "description": "The customer data was rejected by the banking provider. Check the highlighted fields and try again.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `FILES_UNREADABLE`, `INTERNAL_ERROR`, `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { + "FILES_UNREADABLE": { + "summary": "FILES_UNREADABLE", + "value": { + "success": false, + "code": "FILES_UNREADABLE", + "message": "file_download_failed", + "description": "We could not read the uploaded file. Check the file and try again.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { + "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "value": { "success": false, + "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "message": "virtual_account_provision_failed", + "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, + } + } + } + }, + "502": { + "description": "Possible error codes: `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics.", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/Error" + }, + "examples": { + "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { + "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "value": { + "success": false, + "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "message": "virtual_account_provision_failed", + "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Delete Customer", + } + } + }, + "/v1/instances/{instance_id}/payouts/solana": { + "post": { + "x-sdk": true, "tags": [ - "Customers" + "Payouts" ], - "x-sdk": true - }, - "get": { + "summary": "Create Payout on Solana", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } + "maxLength": 15, + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" }, { - "in": "path", - "name": "id", - "required": true, "schema": { - "example": "re_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - } + "type": "string", + "maxLength": 255, + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, + "required": false, + "name": "Idempotency-Key", + "in": "header" } ], + "requestBody": { + "description": "Start payout on solana blockchain", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PayoutOnSolanaIn" + } + } + } + }, "responses": { "200": { + "description": "Payout started with success", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomerOut" + "$ref": "#/components/schemas/PayoutOnEvmOut" } } - }, - "description": "Get customer" + } }, "400": { + "description": "Possible error codes: `BANK_ACCOUNTS_INCOMPLETE`, `BLOCKCHAIN_NETWORK_NOT_SUPPORTED`, `CUSTOMERS_COUNTRY_NOT_SUPPORTED`, `CUSTOMERS_INVALID_PHONE`, `CUSTOMERS_INVALID_TAX_ID`, `CUSTOMERS_ONBOARDING_INCOMPLETE`, `FILES_UNREADABLE`, `QUOTES_ALREADY_USED`, `QUOTES_EXPIRED`, `VALIDATION_FAILED`, `VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED`, `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { - "CUSTOMERS_NOT_FOUND": { - "summary": "CUSTOMERS_NOT_FOUND", + "BANK_ACCOUNTS_INCOMPLETE": { + "summary": "BANK_ACCOUNTS_INCOMPLETE", "value": { - "code": "CUSTOMERS_NOT_FOUND", - "description": "The requested customer was not found.", + "success": false, + "code": "BANK_ACCOUNTS_INCOMPLETE", + "message": "sepa_bank_account_incomplete", + "description": "The bank account details are incomplete for this payment method. Provide the missing fields.", "errors": [], - "message": "customer_not_found", + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "BLOCKCHAIN_NETWORK_NOT_SUPPORTED": { + "summary": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", + "value": { + "success": false, + "code": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", + "message": "network_not_supported_on_dev_instance", + "description": "This network or token combination is not supported for this operation.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "CUSTOMERS_COUNTRY_NOT_SUPPORTED": { + "summary": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", + "value": { + "success": false, + "code": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", + "message": "country_not_supported", + "description": "This country is not supported for this operation.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "CUSTOMERS_INVALID_PHONE": { + "summary": "CUSTOMERS_INVALID_PHONE", + "value": { + "success": false, + "code": "CUSTOMERS_INVALID_PHONE", + "message": "invalid_phone_number", + "description": "The phone number provided is not valid. Check the number and try again.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "CUSTOMERS_INVALID_TAX_ID": { + "summary": "CUSTOMERS_INVALID_TAX_ID", + "value": { + "success": false, + "code": "CUSTOMERS_INVALID_TAX_ID", + "message": "invalid_cpf_or_rg_tax_id", + "description": "The tax ID provided is not valid. Check the value and try again.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "CUSTOMERS_ONBOARDING_INCOMPLETE": { + "summary": "CUSTOMERS_ONBOARDING_INCOMPLETE", + "value": { + "success": false, + "code": "CUSTOMERS_ONBOARDING_INCOMPLETE", + "message": "onboarding_incomplete", + "description": "Onboarding is not complete yet. Finish the remaining steps before continuing.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "FILES_UNREADABLE": { + "summary": "FILES_UNREADABLE", + "value": { + "success": false, + "code": "FILES_UNREADABLE", + "message": "file_download_failed", + "description": "We could not read the uploaded file. Check the file and try again.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "QUOTES_ALREADY_USED": { + "summary": "QUOTES_ALREADY_USED", + "value": { + "success": false, + "code": "QUOTES_ALREADY_USED", + "message": "quote_already_used", + "description": "This quote was already used. Request a new quote.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "QUOTES_EXPIRED": { + "summary": "QUOTES_EXPIRED", + "value": { "success": false, + "code": "QUOTES_EXPIRED", + "message": "quote_expired", + "description": "This quote has expired. Request a new quote and try again.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED": { + "summary": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", + "value": { + "success": false, + "code": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", + "message": "id_doc_front_file_required", + "description": "Additional documents are required to create this virtual account. Upload the requested documents.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { + "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "value": { "success": false, + "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "message": "virtual_account_provision_failed", + "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `CUSTOMERS_NOT_FOUND`, `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "422": { + "description": "Possible error codes: `CUSTOMERS_INVALID_DATA`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { - "DATA_INTEGRITY_ERROR": { - "summary": "DATA_INTEGRITY_ERROR", + "CUSTOMERS_INVALID_DATA": { + "summary": "CUSTOMERS_INVALID_DATA", "value": { - "code": "DATA_INTEGRITY_ERROR", - "description": "This record could not be loaded because it contains invalid stored data. Contact support with the ID below.", - "errors": [], - "message": "data_integrity_error", "success": false, + "code": "CUSTOMERS_INVALID_DATA", + "message": "invalid_customer_data", + "description": "The customer data was rejected by the banking provider. Check the highlighted fields and try again.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `DATA_INTEGRITY_ERROR`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `FILES_UNREADABLE`, `INTERNAL_ERROR`, `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { + "FILES_UNREADABLE": { + "summary": "FILES_UNREADABLE", + "value": { + "success": false, + "code": "FILES_UNREADABLE", + "message": "file_download_failed", + "description": "We could not read the uploaded file. Check the file and try again.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { + "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "value": { "success": false, + "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "message": "virtual_account_provision_failed", + "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, + } + } + } + }, + "502": { + "description": "Possible error codes: `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics.", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/Error" + }, + "examples": { + "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { + "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "value": { + "success": false, + "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "message": "virtual_account_provision_failed", + "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Retrieve Customer", + } + } + }, + "/v1/instances/{instance_id}/payouts/evm": { + "post": { + "x-sdk": true, "tags": [ - "Customers" + "Payouts" ], - "x-sdk": true - }, - "put": { + "summary": "Create Payout on EVM Chains", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } - }, - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "example": "re_000000000000", "maxLength": 15, - "minLength": 15, - "type": "string" - } + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" }, { - "in": "header", - "name": "Idempotency-Key", - "required": false, "schema": { - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "type": "string", "maxLength": 255, - "type": "string" - } + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, + "required": false, + "name": "Idempotency-Key", + "in": "header" } ], "requestBody": { + "description": "Start payout on evm blockchain", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UpdateCustomerIn" + "$ref": "#/components/schemas/PayoutOnEvmIn" } } - }, - "description": "Update a customer" + } }, "responses": { "200": { + "description": "Payout started with success", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Success" + "$ref": "#/components/schemas/PayoutOnEvmOut" } } - }, - "description": "Customer updated" + } }, "400": { + "description": "Possible error codes: `BANK_ACCOUNTS_INCOMPLETE`, `BLOCKCHAIN_NETWORK_NOT_SUPPORTED`, `CUSTOMERS_COUNTRY_NOT_SUPPORTED`, `CUSTOMERS_INVALID_PHONE`, `CUSTOMERS_INVALID_TAX_ID`, `CUSTOMERS_ONBOARDING_INCOMPLETE`, `FILES_UNREADABLE`, `PAYOUTS_AMOUNT_BELOW_MINIMUM`, `QUOTES_ALREADY_USED`, `QUOTES_EXPIRED`, `VALIDATION_FAILED`, `VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED`, `VIRTUAL_ACCOUNTS_NOT_FOUND`, `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { + "BANK_ACCOUNTS_INCOMPLETE": { + "summary": "BANK_ACCOUNTS_INCOMPLETE", + "value": { + "success": false, + "code": "BANK_ACCOUNTS_INCOMPLETE", + "message": "sepa_bank_account_incomplete", + "description": "The bank account details are incomplete for this payment method. Provide the missing fields.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "BLOCKCHAIN_NETWORK_NOT_SUPPORTED": { + "summary": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", + "value": { + "success": false, + "code": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", + "message": "network_not_supported_on_dev_instance", + "description": "This network or token combination is not supported for this operation.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "CUSTOMERS_COUNTRY_NOT_SUPPORTED": { + "summary": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", + "value": { + "success": false, + "code": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", + "message": "country_not_supported", + "description": "This country is not supported for this operation.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "CUSTOMERS_INVALID_PHONE": { "summary": "CUSTOMERS_INVALID_PHONE", "value": { + "success": false, "code": "CUSTOMERS_INVALID_PHONE", + "message": "invalid_phone_number", "description": "The phone number provided is not valid. Check the number and try again.", "errors": [], - "message": "invalid_phone_number", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "CUSTOMERS_INVALID_TAX_ID": { "summary": "CUSTOMERS_INVALID_TAX_ID", "value": { + "success": false, "code": "CUSTOMERS_INVALID_TAX_ID", + "message": "invalid_cpf_or_rg_tax_id", "description": "The tax ID provided is not valid. Check the value and try again.", "errors": [], - "message": "invalid_cpf_or_rg_tax_id", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "CUSTOMERS_NOT_FOUND": { - "summary": "CUSTOMERS_NOT_FOUND", + "CUSTOMERS_ONBOARDING_INCOMPLETE": { + "summary": "CUSTOMERS_ONBOARDING_INCOMPLETE", "value": { - "code": "CUSTOMERS_NOT_FOUND", - "description": "The requested customer was not found.", - "errors": [], - "message": "customer_not_found", "success": false, + "code": "CUSTOMERS_ONBOARDING_INCOMPLETE", + "message": "onboarding_incomplete", + "description": "Onboarding is not complete yet. Finish the remaining steps before continuing.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "FILES_TOO_LARGE": { - "summary": "FILES_TOO_LARGE", + "FILES_UNREADABLE": { + "summary": "FILES_UNREADABLE", "value": { - "code": "FILES_TOO_LARGE", - "description": "The file is too large. Upload a smaller file.", - "errors": [], - "message": "file_size_exceeded", "success": false, + "code": "FILES_UNREADABLE", + "message": "file_download_failed", + "description": "We could not read the uploaded file. Check the file and try again.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "FILES_TYPE_NOT_ALLOWED": { - "summary": "FILES_TYPE_NOT_ALLOWED", + "PAYOUTS_AMOUNT_BELOW_MINIMUM": { + "summary": "PAYOUTS_AMOUNT_BELOW_MINIMUM", "value": { - "code": "FILES_TYPE_NOT_ALLOWED", - "description": "This file type is not allowed. Upload a supported file type.", - "errors": [], - "message": "file_type_not_allowed", "success": false, + "code": "PAYOUTS_AMOUNT_BELOW_MINIMUM", + "message": "swift_minimum_is_100_usd", + "description": "The amount is below the minimum for this payment rail.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "FILES_UNREADABLE": { - "summary": "FILES_UNREADABLE", + "QUOTES_ALREADY_USED": { + "summary": "QUOTES_ALREADY_USED", "value": { - "code": "FILES_UNREADABLE", - "description": "We could not read the uploaded file. Check the file and try again.", + "success": false, + "code": "QUOTES_ALREADY_USED", + "message": "quote_already_used", + "description": "This quote was already used. Request a new quote.", "errors": [], - "message": "file_download_failed", + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "QUOTES_EXPIRED": { + "summary": "QUOTES_EXPIRED", + "value": { "success": false, + "code": "QUOTES_EXPIRED", + "message": "quote_expired", + "description": "This quote has expired. Request a new quote and try again.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED": { + "summary": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", + "value": { + "success": false, + "code": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", + "message": "id_doc_front_file_required", + "description": "Additional documents are required to create this virtual account. Upload the requested documents.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VIRTUAL_ACCOUNTS_NOT_FOUND": { + "summary": "VIRTUAL_ACCOUNTS_NOT_FOUND", + "value": { + "success": false, + "code": "VIRTUAL_ACCOUNTS_NOT_FOUND", + "message": "virtual_account_not_found", + "description": "The requested virtual account was not found.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { + "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "value": { "success": false, + "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "message": "virtual_account_provision_failed", + "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `CUSTOMERS_INVALID_PHONE`, `CUSTOMERS_INVALID_TAX_ID`, `CUSTOMERS_NOT_FOUND`, `FILES_TOO_LARGE`, `FILES_TYPE_NOT_ALLOWED`, `FILES_UNREADABLE`, `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, + } + } + } + }, + "422": { + "description": "Possible error codes: `CUSTOMERS_INVALID_DATA`. See the Error responses section for retry semantics.", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/Error" + }, + "examples": { + "CUSTOMERS_INVALID_DATA": { + "summary": "CUSTOMERS_INVALID_DATA", + "value": { + "success": false, + "code": "CUSTOMERS_INVALID_DATA", + "message": "invalid_customer_data", + "description": "The customer data was rejected by the banking provider. Check the highlighted fields and try again.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `FILES_UNREADABLE`, `INTERNAL_ERROR`, `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "FILES_UNREADABLE": { "summary": "FILES_UNREADABLE", "value": { + "success": false, "code": "FILES_UNREADABLE", + "message": "file_download_failed", "description": "We could not read the uploaded file. Check the file and try again.", "errors": [], - "message": "file_download_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { + "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "value": { "success": false, + "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "message": "virtual_account_provision_failed", + "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, + } + } + } + }, + "502": { + "description": "Possible error codes: `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics.", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/Error" + }, + "examples": { + "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { + "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "value": { + "success": false, + "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "message": "virtual_account_provision_failed", + "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } } } - }, - "description": "Possible error codes: `FILES_UNREADABLE`, `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Update Customer", - "tags": [ - "Customers" - ], - "x-sdk": true + } } }, - "/v1/instances/{instance_id}/limits/customers/{id}": { - "get": { + "/v1/instances/{instance_id}/payouts/{id}/documents": { + "post": { + "x-sdk": true, + "tags": [ + "Payouts" + ], + "summary": "Submit Payout Documents", + "description": "Submit compliance documents for SWIFT payouts requiring review. Includes optional payment description.", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } + "maxLength": 15, + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" }, { - "in": "path", - "name": "id", - "required": true, "schema": { - "example": "re_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } + "maxLength": 15, + "example": "pa_000000000000" + }, + "required": true, + "name": "id", + "in": "path" + }, + { + "schema": { + "type": "string", + "maxLength": 255, + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, + "required": false, + "name": "Idempotency-Key", + "in": "header" } ], + "requestBody": { + "description": "Document details and optional payment description", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SubmitPayoutDocumentsIn" + } + } + } + }, "responses": { "200": { + "description": "Documents submitted successfully", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/GetCustomerLimitsOut" + "$ref": "#/components/schemas/Success" } } - }, - "description": "Get customer limits" + } }, "400": { + "description": "Possible error codes: `FILES_UNREADABLE`, `PAYOUTS_DOCUMENTS_NOT_ACCEPTED`, `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { + "FILES_UNREADABLE": { + "summary": "FILES_UNREADABLE", + "value": { + "success": false, + "code": "FILES_UNREADABLE", + "message": "file_download_failed", + "description": "We could not read the uploaded file. Check the file and try again.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "PAYOUTS_DOCUMENTS_NOT_ACCEPTED": { + "summary": "PAYOUTS_DOCUMENTS_NOT_ACCEPTED", + "value": { + "success": false, + "code": "PAYOUTS_DOCUMENTS_NOT_ACCEPTED", + "message": "document_upload_only_for_swift_payouts", + "description": "Document upload is only available for international wire payouts.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "404": { + "description": "Possible error codes: `PAYOUTS_NOT_FOUND`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { - "CUSTOMERS_NOT_FOUND": { - "summary": "CUSTOMERS_NOT_FOUND", + "PAYOUTS_NOT_FOUND": { + "summary": "PAYOUTS_NOT_FOUND", "value": { - "code": "CUSTOMERS_NOT_FOUND", - "description": "The requested customer was not found.", - "errors": [], - "message": "customer_not_found", "success": false, + "code": "PAYOUTS_NOT_FOUND", + "message": "payout_not_found", + "description": "The requested payout was not found.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `CUSTOMERS_NOT_FOUND`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `FILES_UNREADABLE`, `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { + "FILES_UNREADABLE": { + "summary": "FILES_UNREADABLE", + "value": { + "success": false, + "code": "FILES_UNREADABLE", + "message": "file_download_failed", + "description": "We could not read the uploaded file. Check the file and try again.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Retrieve Customer Limits", - "tags": [ - "Customers" - ], - "x-sdk": true + } } }, - "/v1/instances/{instance_id}/mint-usdb-solana": { + "/v1/instances/{instance_id}/payin-quotes": { "post": { + "x-sdk": true, + "tags": [ + "Payin Quotes" + ], + "summary": "Create Payin Quote", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } + "maxLength": 15, + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" }, { - "in": "header", - "name": "Idempotency-Key", - "required": false, "schema": { - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "type": "string", "maxLength": 255, - "type": "string" - } + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, + "required": false, + "name": "Idempotency-Key", + "in": "header" } ], "requestBody": { + "description": "Create a new quote", "content": { "application/json": { "schema": { - "properties": { - "address": { - "type": "string" - }, - "amount": { - "type": "string" - } - }, - "required": [ - "address", - "amount" - ], - "type": "object" + "$ref": "#/components/schemas/CreatePayinQuoteIn" } } } }, "responses": { "200": { + "description": "Payin Quote creation details", "content": { "application/json": { "schema": { - "properties": { - "error": { - "type": "string" - }, - "signature": { - "type": "string" - }, - "success": { - "type": "boolean" + "$ref": "#/components/schemas/CreatePayinQuoteOut" + } + } + } + }, + "400": { + "description": "Possible error codes: `BLOCKCHAIN_NETWORK_NOT_SUPPORTED`, `CUSTOMERS_KYC_NOT_APPROVED`, `CUSTOMERS_NOT_FOUND`, `FEES_PARTNER_FEE_EXCEEDED`, `LIMITS_AMOUNT_OUT_OF_RANGE`, `LIMITS_VOLUME_EXCEEDED`, `PAYINS_METHOD_NOT_SUPPORTED`, `PAYINS_TAX_ID_REQUIRED`, `PAYOUTS_AMOUNT_BELOW_MINIMUM`, `QUOTES_OTC_NOT_SUPPORTED`, `TOS_NOT_ACCEPTED`, `VALIDATION_FAILED`. See the Error responses section for retry semantics.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, + "examples": { + "BLOCKCHAIN_NETWORK_NOT_SUPPORTED": { + "summary": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", + "value": { + "success": false, + "code": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", + "message": "network_not_supported_on_dev_instance", + "description": "This network or token combination is not supported for this operation.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "CUSTOMERS_KYC_NOT_APPROVED": { + "summary": "CUSTOMERS_KYC_NOT_APPROVED", + "value": { + "success": false, + "code": "CUSTOMERS_KYC_NOT_APPROVED", + "message": "kyc_not_approved", + "description": "This customer has not completed verification yet. Complete the verification before continuing.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "CUSTOMERS_NOT_FOUND": { + "summary": "CUSTOMERS_NOT_FOUND", + "value": { + "success": false, + "code": "CUSTOMERS_NOT_FOUND", + "message": "customer_not_found", + "description": "The requested customer was not found.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "FEES_PARTNER_FEE_EXCEEDED": { + "summary": "FEES_PARTNER_FEE_EXCEEDED", + "value": { + "success": false, + "code": "FEES_PARTNER_FEE_EXCEEDED", + "message": "partner_fee_exceeded", + "description": "The partner fee exceeds the allowed maximum for this transaction.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "LIMITS_AMOUNT_OUT_OF_RANGE": { + "summary": "LIMITS_AMOUNT_OUT_OF_RANGE", + "value": { + "success": false, + "code": "LIMITS_AMOUNT_OUT_OF_RANGE", + "message": "limits_amount_out_of_range", + "description": "The amount is outside the allowed range. The message includes the allowed range.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "LIMITS_VOLUME_EXCEEDED": { + "summary": "LIMITS_VOLUME_EXCEEDED", + "value": { + "success": false, + "code": "LIMITS_VOLUME_EXCEEDED", + "message": "limits_volume_exceeded", + "description": "You exceeded your transaction volume limit. The message includes the remaining amount available.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "PAYINS_METHOD_NOT_SUPPORTED": { + "summary": "PAYINS_METHOD_NOT_SUPPORTED", + "value": { + "success": false, + "code": "PAYINS_METHOD_NOT_SUPPORTED", + "message": "ted_payin_not_supported", + "description": "This payment method is not supported for this operation.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "PAYINS_TAX_ID_REQUIRED": { + "summary": "PAYINS_TAX_ID_REQUIRED", + "value": { + "success": false, + "code": "PAYINS_TAX_ID_REQUIRED", + "message": "tax_id_required", + "description": "A tax ID is required for this payment method. Provide the tax ID and try again.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "required": [ - "success" - ], - "type": "object" - } - } - }, - "description": "Mint USDB on Solana" - }, - "400": { - "content": { - "application/json": { - "examples": { - "BLOCKCHAIN_TX_FAILED": { - "summary": "BLOCKCHAIN_TX_FAILED", + "PAYOUTS_AMOUNT_BELOW_MINIMUM": { + "summary": "PAYOUTS_AMOUNT_BELOW_MINIMUM", "value": { - "code": "BLOCKCHAIN_TX_FAILED", - "description": "The blockchain transaction failed. Try again, and contact support if the problem persists.", + "success": false, + "code": "PAYOUTS_AMOUNT_BELOW_MINIMUM", + "message": "swift_minimum_is_100_usd", + "description": "The amount is below the minimum for this payment rail.", "errors": [], - "message": "transaction_failed", + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "QUOTES_OTC_NOT_SUPPORTED": { + "summary": "QUOTES_OTC_NOT_SUPPORTED", + "value": { + "success": false, + "code": "QUOTES_OTC_NOT_SUPPORTED", + "message": "otc_only_supported_for_brl", + "description": "This OTC configuration is not supported. OTC requires BRL with USDT, and either the sender amount with fees not covered, or the receiver amount with fees covered.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "TOS_NOT_ACCEPTED": { + "summary": "TOS_NOT_ACCEPTED", + "value": { "success": false, + "code": "TOS_NOT_ACCEPTED", + "message": "please_accept_terms_of_service", + "description": "The terms of service must be accepted before continuing.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `BLOCKCHAIN_TX_FAILED`, `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, + } + } + } + }, + "404": { + "description": "Possible error codes: `FEES_NOT_FOUND`, `WALLETS_NOT_FOUND`. See the Error responses section for retry semantics.", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/Error" + }, + "examples": { + "FEES_NOT_FOUND": { + "summary": "FEES_NOT_FOUND", + "value": { + "success": false, + "code": "FEES_NOT_FOUND", + "message": "partner_fee_not_found", + "description": "The requested fee configuration was not found.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "WALLETS_NOT_FOUND": { + "summary": "WALLETS_NOT_FOUND", + "value": { + "success": false, + "code": "WALLETS_NOT_FOUND", + "message": "wallet_not_found", + "description": "The requested wallet was not found.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`, `QUOTES_RATE_UNAVAILABLE`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "QUOTES_RATE_UNAVAILABLE": { + "summary": "QUOTES_RATE_UNAVAILABLE", + "value": { "success": false, + "code": "QUOTES_RATE_UNAVAILABLE", + "message": "fx_rate_unavailable", + "description": "An exchange rate is temporarily unavailable. Try again shortly.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Mint USDB on Solana", - "tags": [ - "Solana" - ], - "x-sdk": true + } } }, - "/v1/instances/{instance_id}/mint-usdb-stellar": { + "/v1/instances/{instance_id}/payin-quotes/fx": { "post": { + "x-sdk": true, + "tags": [ + "Payin Quotes" + ], + "summary": "Get FX Rate", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } + "maxLength": 15, + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" }, { - "in": "header", - "name": "Idempotency-Key", - "required": false, "schema": { - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "type": "string", "maxLength": 255, - "type": "string" - } + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, + "required": false, + "name": "Idempotency-Key", + "in": "header" } ], "requestBody": { + "description": "Check FX rate", "content": { "application/json": { "schema": { + "type": "object", "properties": { - "address": { - "type": "string" + "from": { + "type": "string", + "enum": [ + "USDC", + "USDT", + "USDB", + "BRL", + "USD", + "MXN", + "COP", + "ARS", + "EUR" + ], + "example": "BRL" }, - "amount": { - "type": "string" + "to": { + "type": "string", + "enum": [ + "USDC", + "USDT", + "USDB", + "BRL", + "USD", + "MXN", + "COP", + "ARS", + "EUR" + ], + "example": "USDC" }, - "signedXdr": { - "type": "string" + "request_amount": { + "type": "integer", + "minimum": 500, + "description": "1000 represents 10.00, 2050 represents 20.50", + "example": 1000 + }, + "currency_type": { + "type": "string", + "enum": [ + "sender", + "receiver" + ], + "description": "", + "example": "sender" } }, "required": [ - "address", - "amount" - ], - "type": "object" + "from", + "to", + "request_amount", + "currency_type" + ] } } } }, "responses": { "200": { + "description": "Check FX rate response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Success" + "type": "object", + "properties": { + "commercial_quotation": { + "type": [ + "number", + "null" + ], + "description": "1 USD = 4.95 BRL", + "example": 495 + }, + "blindpay_quotation": { + "type": [ + "number", + "null" + ], + "description": "1 USD = 5.05 BRL (commercial quotation + (blindpay taxes))", + "example": 505 + }, + "result_amount": { + "type": "number", + "minimum": 1 + }, + "instance_flat_fee": { + "type": [ + "number", + "null" + ], + "description": "0.5 USDC", + "example": 50 + }, + "instance_percentage_fee": { + "type": "number", + "minimum": 0, + "maximum": 10000 + } + }, + "required": [ + "commercial_quotation", + "blindpay_quotation", + "result_amount", + "instance_flat_fee", + "instance_percentage_fee" + ] } } - }, - "description": "Mint USDB" + } }, "400": { + "description": "Possible error codes: `BANK_ACCOUNTS_INCOMPLETE`, `PAYOUTS_AMOUNT_BELOW_MINIMUM`, `QUOTES_RATE_UNAVAILABLE`, `VALIDATION_FAILED`, `VALIDATION_INVALID_REQUEST`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { - "BLOCKCHAIN_TX_FAILED": { - "summary": "BLOCKCHAIN_TX_FAILED", + "BANK_ACCOUNTS_INCOMPLETE": { + "summary": "BANK_ACCOUNTS_INCOMPLETE", "value": { - "code": "BLOCKCHAIN_TX_FAILED", - "description": "The blockchain transaction failed. Try again, and contact support if the problem persists.", + "success": false, + "code": "BANK_ACCOUNTS_INCOMPLETE", + "message": "sepa_bank_account_incomplete", + "description": "The bank account details are incomplete for this payment method. Provide the missing fields.", "errors": [], - "message": "transaction_failed", + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "PAYOUTS_AMOUNT_BELOW_MINIMUM": { + "summary": "PAYOUTS_AMOUNT_BELOW_MINIMUM", + "value": { + "success": false, + "code": "PAYOUTS_AMOUNT_BELOW_MINIMUM", + "message": "swift_minimum_is_100_usd", + "description": "The amount is below the minimum for this payment rail.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "QUOTES_RATE_UNAVAILABLE": { + "summary": "QUOTES_RATE_UNAVAILABLE", + "value": { "success": false, + "code": "QUOTES_RATE_UNAVAILABLE", + "message": "fx_rate_unavailable", + "description": "An exchange rate is temporarily unavailable. Try again shortly.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VALIDATION_INVALID_REQUEST": { + "summary": "VALIDATION_INVALID_REQUEST", + "value": { "success": false, + "code": "VALIDATION_INVALID_REQUEST", + "message": "invalid_body", + "description": "The request is not valid for this operation. Check the parameters and try again.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `BLOCKCHAIN_TX_FAILED`, `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, - "429": { + "404": { + "description": "Possible error codes: `WALLETS_NOT_FOUND`. See the Error responses section for retry semantics.", "content": { "application/json": { - "examples": { - "AUTH_RATE_LIMITED": { - "summary": "AUTH_RATE_LIMITED", - "value": { - "code": "AUTH_RATE_LIMITED", - "description": "Too many requests. Wait a moment and try again.", - "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } - }, "schema": { "$ref": "#/components/schemas/Error" - } - } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." - }, - "500": { - "content": { - "application/json": { + }, "examples": { - "INTERNAL_ERROR": { - "summary": "INTERNAL_ERROR", + "WALLETS_NOT_FOUND": { + "summary": "WALLETS_NOT_FOUND", "value": { - "code": "INTERNAL_ERROR", - "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", - "errors": [], - "message": "internal_error", "success": false, + "code": "WALLETS_NOT_FOUND", + "message": "wallet_not_found", + "description": "The requested wallet was not found.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." - } - }, - "summary": "Mint USDB on Stellar", - "tags": [ - "Stellar" - ], - "x-sdk": true - } - }, - "/v1/instances/{instance_id}/partner-fees": { - "get": { - "parameters": [ - { - "in": "path", - "name": "instance_id", - "required": true, - "schema": { - "example": "in_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "items": { - "properties": { - "id": { - "example": "fe_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - }, - "instance_id": { - "example": "in_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - }, - "name": { - "example": "Display Name", - "type": "string" - }, - "payin_flat_fee": { - "maximum": 100000, - "minimum": 0, - "type": "number" - }, - "payin_percentage_fee": { - "maximum": 1000, - "minimum": 0, - "type": "number" - }, - "payout_flat_fee": { - "maximum": 100000, - "minimum": 0, - "type": "number" - }, - "payout_percentage_fee": { - "maximum": 1000, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "id", - "instance_id", - "name", - "payout_percentage_fee", - "payout_flat_fee", - "payin_percentage_fee", - "payin_flat_fee" - ], - "type": "object" - }, - "type": "array" - } - } - }, - "description": "Get blockchain wallets" }, - "400": { + "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "examples": { - "VALIDATION_FAILED": { - "summary": "VALIDATION_FAILED", - "value": { - "code": "VALIDATION_FAILED", - "description": "The request contains invalid fields. Check the errors list for details.", - "errors": [], - "message": "validation_failed", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } - }, "schema": { "$ref": "#/components/schemas/Error" - } - } - }, - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." - }, - "401": { - "content": { - "application/json": { + }, "examples": { - "AUTH_UNAUTHORIZED": { - "summary": "AUTH_UNAUTHORIZED", + "AUTH_RATE_LIMITED": { + "summary": "AUTH_RATE_LIMITED", "value": { - "code": "AUTH_UNAUTHORIZED", - "description": "Authentication failed. Check your API key or session and try again.", - "errors": [], - "message": "unauthorized", "success": false, + "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", + "description": "Too many requests. Wait a moment and try again.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, - "403": { + "500": { + "description": "Possible error codes: `INTERNAL_ERROR`, `QUOTES_RATE_UNAVAILABLE`. See the Error responses section for retry semantics.", "content": { "application/json": { - "examples": { - "AUTH_FORBIDDEN": { - "summary": "AUTH_FORBIDDEN", - "value": { - "code": "AUTH_FORBIDDEN", - "description": "You do not have permission to perform this action.", - "errors": [], - "message": "user_not_allowed", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } - }, "schema": { "$ref": "#/components/schemas/Error" - } - } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." - }, - "429": { - "content": { - "application/json": { + }, "examples": { - "AUTH_RATE_LIMITED": { - "summary": "AUTH_RATE_LIMITED", + "INTERNAL_ERROR": { + "summary": "INTERNAL_ERROR", "value": { - "code": "AUTH_RATE_LIMITED", - "description": "Too many requests. Wait a moment and try again.", + "success": false, + "code": "INTERNAL_ERROR", + "message": "internal_error", + "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "api_key_rate_limit_exceeded", + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "QUOTES_RATE_UNAVAILABLE": { + "summary": "QUOTES_RATE_UNAVAILABLE", + "value": { "success": false, + "code": "QUOTES_RATE_UNAVAILABLE", + "message": "fx_rate_unavailable", + "description": "An exchange rate is temporarily unavailable. Try again shortly.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, - "500": { + "503": { + "description": "Possible error codes: `QUOTES_RATE_UNAVAILABLE`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { - "INTERNAL_ERROR": { - "summary": "INTERNAL_ERROR", + "QUOTES_RATE_UNAVAILABLE": { + "summary": "QUOTES_RATE_UNAVAILABLE", "value": { - "code": "INTERNAL_ERROR", - "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", - "errors": [], - "message": "internal_error", "success": false, + "code": "QUOTES_RATE_UNAVAILABLE", + "message": "fx_rate_unavailable", + "description": "An exchange rate is temporarily unavailable. Try again shortly.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Retrieve Partner Fees", + } + } + }, + "/v1/instances/{instance_id}/payins/{id}": { + "get": { + "x-sdk": true, "tags": [ - "Partner Fees" + "Payins" ], - "x-sdk": true - }, - "post": { + "summary": "Retrieve Payin", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } + "maxLength": 15, + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" }, { - "in": "header", - "name": "Idempotency-Key", - "required": false, "schema": { - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "maxLength": 255, - "type": "string" - } + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "pi_000000000000" + }, + "required": true, + "name": "id", + "in": "path" } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "name": { - "example": "Display Name", - "type": "string" - }, - "payin_flat_fee": { - "maximum": 100000, - "minimum": 0, - "type": "number" - }, - "payin_percentage_fee": { - "maximum": 1000, - "minimum": 0, - "type": "number" - }, - "payout_flat_fee": { - "maximum": 100000, - "minimum": 0, - "type": "number" - }, - "payout_percentage_fee": { - "maximum": 1000, - "minimum": 0, - "type": "number" - }, - "virtual_account_set": { - "default": false, - "example": false, - "type": [ - "boolean", - "null" - ] - } - }, - "required": [ - "name", - "payout_percentage_fee", - "payout_flat_fee", - "payin_percentage_fee", - "payin_flat_fee" - ], - "type": "object" - } - } - }, - "description": "Create a new blockchain wallet" - }, "responses": { "200": { + "description": "List payins", "content": { "application/json": { "schema": { - "properties": { - "id": { - "example": "fe_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - }, - "instance_id": { - "example": "in_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - }, - "name": { - "example": "Display Name", - "type": "string" - }, - "payin_flat_fee": { - "maximum": 100000, - "minimum": 0, - "type": "number" - }, - "payin_percentage_fee": { - "maximum": 1000, - "minimum": 0, - "type": "number" - }, - "payout_flat_fee": { - "maximum": 100000, - "minimum": 0, - "type": "number" - }, - "payout_percentage_fee": { - "maximum": 1000, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "id", - "instance_id", - "name", - "payout_percentage_fee", - "payout_flat_fee", - "payin_percentage_fee", - "payin_flat_fee" - ], - "type": "object" + "$ref": "#/components/schemas/PayinOut" } } - }, - "description": "Add blockchain wallet" + } }, "400": { + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, + } + } + } + }, + "404": { + "description": "Possible error codes: `PAYINS_NOT_FOUND`. See the Error responses section for retry semantics.", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/Error" + }, + "examples": { + "PAYINS_NOT_FOUND": { + "summary": "PAYINS_NOT_FOUND", + "value": { + "success": false, + "code": "PAYINS_NOT_FOUND", + "message": "payin_not_found", + "description": "The requested payin was not found.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Add Partner Fee", - "tags": [ - "Partner Fees" - ], - "x-sdk": true + } } }, - "/v1/instances/{instance_id}/partner-fees/{id}": { - "delete": { + "/v1/e/payins/{id}": { + "get": { + "x-sdk": true, + "tags": [ + "Payins" + ], + "summary": "Retrieve Payin Track", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } - }, - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "example": "fe_000000000000", "maxLength": 15, - "minLength": 15, - "type": "string" - } - }, - { - "in": "header", - "name": "Idempotency-Key", - "required": false, - "schema": { - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "maxLength": 255, - "type": "string" - } + "example": "pi_000000000000" + }, + "required": true, + "name": "id", + "in": "path" } ], "responses": { "200": { + "description": "List payins", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Success" + "$ref": "#/components/schemas/PayinOut" } } - }, - "description": "Delete blockchain wallet" + } }, "400": { + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, + } + } + } + }, + "404": { + "description": "Possible error codes: `PAYINS_NOT_FOUND`. See the Error responses section for retry semantics.", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/Error" + }, + "examples": { + "PAYINS_NOT_FOUND": { + "summary": "PAYINS_NOT_FOUND", + "value": { + "success": false, + "code": "PAYINS_NOT_FOUND", + "message": "payin_not_found", + "description": "The requested payin was not found.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Remove Partner Fee", + } + } + }, + "/v1/instances/{instance_id}/payins": { + "get": { + "x-sdk": true, "tags": [ - "Partner Fees" + "Payins" ], - "x-sdk": true - }, - "get": { + "summary": "Retrieve Payins", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", + "type": "string", + "minLength": 15, "maxLength": 15, + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" + }, + { + "schema": { + "type": "string", + "enum": [ + "10", + "50", + "100", + "200", + "500", + "1000" + ], + "description": "Number of items to return", + "example": "50" + }, + "required": false, + "name": "limit", + "in": "query" + }, + { + "schema": { + "type": "string", + "enum": [ + "0", + "10", + "50", + "100", + "200", + "500", + "1000" + ], + "description": "Number of items to skip", + "example": "0" + }, + "required": false, + "name": "offset", + "in": "query" + }, + { + "schema": { + "type": "string", + "description": "A cursor for use in pagination. starting_after is an object ID that defines your place in the list.", + "example": "pi_123" + }, + "required": false, + "name": "starting_after", + "in": "query" + }, + { + "schema": { + "type": "string", + "description": "A cursor for use in pagination. ending_before is an object ID that defines your place in the list.", + "example": "pi_123" + }, + "required": false, + "name": "ending_before", + "in": "query" + }, + { + "schema": { + "type": "string", "minLength": 15, + "maxLength": 15, + "example": "re_000000000000" + }, + "required": false, + "name": "customer_id", + "in": "query" + }, + { + "schema": { + "type": "string", + "enum": [ + "processing", + "on_hold", + "failed", + "refunded", + "completed" + ] + }, + "required": false, + "name": "status", + "in": "query" + }, + { + "schema": { "type": "string" - } + }, + "required": false, + "name": "customer_name", + "in": "query" }, { - "in": "path", - "name": "id", - "required": true, "schema": { - "example": "fe_000000000000", - "maxLength": 15, - "minLength": 15, "type": "string" - } + }, + "required": false, + "name": "bank_account_id", + "in": "query" + }, + { + "schema": { + "type": "string" + }, + "required": false, + "name": "country", + "in": "query" + }, + { + "schema": { + "type": "string", + "enum": [ + "ach", + "wire", + "pix", + "ted", + "spei", + "transfers", + "pse", + "international_swift", + "rtp" + ] + }, + "required": false, + "name": "payment_method", + "in": "query" + }, + { + "schema": { + "type": "string" + }, + "required": false, + "name": "network", + "in": "query" + }, + { + "schema": { + "type": "string" + }, + "required": false, + "name": "token", + "in": "query" } ], "responses": { "200": { + "description": "List payins with pagination", "content": { "application/json": { "schema": { - "properties": { - "id": { - "example": "fe_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - }, - "instance_id": { - "example": "in_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - }, - "name": { - "example": "Display Name", - "type": "string" - }, - "payin_flat_fee": { - "maximum": 100000, - "minimum": 0, - "type": "number" - }, - "payin_percentage_fee": { - "maximum": 1000, - "minimum": 0, - "type": "number" - }, - "payout_flat_fee": { - "maximum": 100000, - "minimum": 0, - "type": "number" + "anyOf": [ + { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PayinOut" + } + }, + "pagination": { + "$ref": "#/components/schemas/PaginationMetadata" + } + }, + "required": [ + "data", + "pagination" + ] }, - "payout_percentage_fee": { - "maximum": 1000, - "minimum": 0, - "type": "number" + { + "type": "array", + "items": { + "$ref": "#/components/schemas/PayinOut" + } } - }, - "required": [ - "id", - "instance_id", - "name", - "payout_percentage_fee", - "payout_flat_fee", - "payin_percentage_fee", - "payin_flat_fee" - ], - "type": "object" + ] } } - }, - "description": "Get blockchain wallets" + } }, "400": { + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Retrieve Partner Fee", - "tags": [ - "Partner Fees" - ], - "x-sdk": true + } } }, - "/v1/instances/{instance_id}/payin-quotes": { + "/v1/instances/{instance_id}/payins/evm": { "post": { + "x-sdk": true, + "tags": [ + "Payins" + ], + "summary": "Create Payin", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } + "maxLength": 15, + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" }, { - "in": "header", - "name": "Idempotency-Key", - "required": false, "schema": { - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "type": "string", "maxLength": 255, - "type": "string" - } + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, + "required": false, + "name": "Idempotency-Key", + "in": "header" } ], "requestBody": { + "description": "Start payin", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreatePayinQuoteIn" + "$ref": "#/components/schemas/CreatePayinIn" } } - }, - "description": "Create a new quote" + } }, "responses": { "200": { + "description": "Payin started with success", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreatePayinQuoteOut" + "$ref": "#/components/schemas/CreatePayinOut" } } - }, - "description": "Payin Quote creation details" + } }, "400": { + "description": "Possible error codes: `BANK_ACCOUNTS_INCOMPLETE`, `BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED`, `BLOCKCHAIN_NETWORK_NOT_SUPPORTED`, `CUSTOMERS_COUNTRY_NOT_SUPPORTED`, `CUSTOMERS_INVALID_PHONE`, `CUSTOMERS_INVALID_TAX_ID`, `CUSTOMERS_NOT_FOUND`, `FILES_UNREADABLE`, `PAYINS_METHOD_NOT_SUPPORTED`, `PAYOUTS_AMOUNT_BELOW_MINIMUM`, `PAYOUTS_INSUFFICIENT_BALANCE`, `QUOTES_ALREADY_USED`, `QUOTES_EXPIRED`, `QUOTES_NOT_FOUND`, `QUOTES_RATE_UNAVAILABLE`, `VALIDATION_FAILED`, `VALIDATION_MISSING_REQUIRED_FIELDS`, `VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED`, `VIRTUAL_ACCOUNTS_NOT_FOUND`, `VIRTUAL_ACCOUNTS_PROVISION_FAILED`, `VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "examples": { - "BLOCKCHAIN_NETWORK_NOT_SUPPORTED": { - "summary": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", - "value": { - "code": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", - "description": "This network or token combination is not supported for this operation.", - "errors": [], - "message": "network_not_supported_on_dev_instance", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "CUSTOMERS_KYC_NOT_APPROVED": { - "summary": "CUSTOMERS_KYC_NOT_APPROVED", - "value": { - "code": "CUSTOMERS_KYC_NOT_APPROVED", - "description": "This customer has not completed verification yet. Complete the verification before continuing.", - "errors": [], - "message": "kyc_not_approved", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "CUSTOMERS_NOT_FOUND": { - "summary": "CUSTOMERS_NOT_FOUND", - "value": { - "code": "CUSTOMERS_NOT_FOUND", - "description": "The requested customer was not found.", - "errors": [], - "message": "customer_not_found", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "FEES_PARTNER_FEE_EXCEEDED": { - "summary": "FEES_PARTNER_FEE_EXCEEDED", - "value": { - "code": "FEES_PARTNER_FEE_EXCEEDED", - "description": "The partner fee exceeds the allowed maximum for this transaction.", - "errors": [], - "message": "partner_fee_exceeded", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "LIMITS_AMOUNT_OUT_OF_RANGE": { - "summary": "LIMITS_AMOUNT_OUT_OF_RANGE", - "value": { - "code": "LIMITS_AMOUNT_OUT_OF_RANGE", - "description": "The amount is outside the allowed range. The message includes the allowed range.", - "errors": [], - "message": "limits_amount_out_of_range", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "LIMITS_VOLUME_EXCEEDED": { - "summary": "LIMITS_VOLUME_EXCEEDED", - "value": { - "code": "LIMITS_VOLUME_EXCEEDED", - "description": "You exceeded your transaction volume limit. The message includes the remaining amount available.", - "errors": [], - "message": "limits_volume_exceeded", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "PAYINS_METHOD_NOT_SUPPORTED": { - "summary": "PAYINS_METHOD_NOT_SUPPORTED", - "value": { - "code": "PAYINS_METHOD_NOT_SUPPORTED", - "description": "This payment method is not supported for this operation.", - "errors": [], - "message": "ted_payin_not_supported", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "PAYINS_TAX_ID_REQUIRED": { - "summary": "PAYINS_TAX_ID_REQUIRED", - "value": { - "code": "PAYINS_TAX_ID_REQUIRED", - "description": "A tax ID is required for this payment method. Provide the tax ID and try again.", - "errors": [], - "message": "tax_id_required", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "PAYOUTS_AMOUNT_BELOW_MINIMUM": { - "summary": "PAYOUTS_AMOUNT_BELOW_MINIMUM", - "value": { - "code": "PAYOUTS_AMOUNT_BELOW_MINIMUM", - "description": "The amount is below the minimum for this payment rail.", - "errors": [], - "message": "swift_minimum_is_100_usd", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "QUOTES_OTC_NOT_SUPPORTED": { - "summary": "QUOTES_OTC_NOT_SUPPORTED", - "value": { - "code": "QUOTES_OTC_NOT_SUPPORTED", - "description": "This OTC configuration is not supported. OTC requires BRL with USDT, and either the sender amount with fees not covered, or the receiver amount with fees covered.", - "errors": [], - "message": "otc_only_supported_for_brl", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "TOS_NOT_ACCEPTED": { - "summary": "TOS_NOT_ACCEPTED", - "value": { - "code": "TOS_NOT_ACCEPTED", - "description": "The terms of service must be accepted before continuing.", - "errors": [], - "message": "please_accept_terms_of_service", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VALIDATION_FAILED": { - "summary": "VALIDATION_FAILED", - "value": { - "code": "VALIDATION_FAILED", - "description": "The request contains invalid fields. Check the errors list for details.", - "errors": [], - "message": "validation_failed", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } - }, "schema": { "$ref": "#/components/schemas/Error" - } - } - }, - "description": "Possible error codes: `BLOCKCHAIN_NETWORK_NOT_SUPPORTED`, `CUSTOMERS_KYC_NOT_APPROVED`, `CUSTOMERS_NOT_FOUND`, `FEES_PARTNER_FEE_EXCEEDED`, `LIMITS_AMOUNT_OUT_OF_RANGE`, `LIMITS_VOLUME_EXCEEDED`, `PAYINS_METHOD_NOT_SUPPORTED`, `PAYINS_TAX_ID_REQUIRED`, `PAYOUTS_AMOUNT_BELOW_MINIMUM`, `QUOTES_OTC_NOT_SUPPORTED`, `TOS_NOT_ACCEPTED`, `VALIDATION_FAILED`. See the Error responses section for retry semantics." - }, - "401": { - "content": { - "application/json": { - "examples": { - "AUTH_UNAUTHORIZED": { - "summary": "AUTH_UNAUTHORIZED", - "value": { - "code": "AUTH_UNAUTHORIZED", - "description": "Authentication failed. Check your API key or session and try again.", - "errors": [], - "message": "unauthorized", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } }, - "schema": { - "$ref": "#/components/schemas/Error" - } - } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." - }, - "403": { - "content": { - "application/json": { "examples": { - "AUTH_FORBIDDEN": { - "summary": "AUTH_FORBIDDEN", + "BANK_ACCOUNTS_INCOMPLETE": { + "summary": "BANK_ACCOUNTS_INCOMPLETE", "value": { - "code": "AUTH_FORBIDDEN", - "description": "You do not have permission to perform this action.", - "errors": [], - "message": "user_not_allowed", "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } - }, - "schema": { - "$ref": "#/components/schemas/Error" - } - } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." - }, - "404": { - "content": { - "application/json": { - "examples": { - "FEES_NOT_FOUND": { - "summary": "FEES_NOT_FOUND", - "value": { - "code": "FEES_NOT_FOUND", - "description": "The requested fee configuration was not found.", + "code": "BANK_ACCOUNTS_INCOMPLETE", + "message": "sepa_bank_account_incomplete", + "description": "The bank account details are incomplete for this payment method. Provide the missing fields.", "errors": [], - "message": "partner_fee_not_found", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "WALLETS_NOT_FOUND": { - "summary": "WALLETS_NOT_FOUND", - "value": { - "code": "WALLETS_NOT_FOUND", - "description": "The requested wallet was not found.", - "errors": [], - "message": "wallet_not_found", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } - }, - "schema": { - "$ref": "#/components/schemas/Error" - } - } - }, - "description": "Possible error codes: `FEES_NOT_FOUND`, `WALLETS_NOT_FOUND`. See the Error responses section for retry semantics." - }, - "429": { - "content": { - "application/json": { - "examples": { - "AUTH_RATE_LIMITED": { - "summary": "AUTH_RATE_LIMITED", + "BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED": { + "summary": "BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED", "value": { - "code": "AUTH_RATE_LIMITED", - "description": "Too many requests. Wait a moment and try again.", - "errors": [], - "message": "api_key_rate_limit_exceeded", "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } - }, - "schema": { - "$ref": "#/components/schemas/Error" - } - } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." - }, - "500": { - "content": { - "application/json": { - "examples": { - "INTERNAL_ERROR": { - "summary": "INTERNAL_ERROR", - "value": { - "code": "INTERNAL_ERROR", - "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", + "code": "BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED", + "message": "unsupported_banking_partner", + "description": "This banking option is not supported for this operation.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "QUOTES_RATE_UNAVAILABLE": { - "summary": "QUOTES_RATE_UNAVAILABLE", + "BLOCKCHAIN_NETWORK_NOT_SUPPORTED": { + "summary": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", "value": { - "code": "QUOTES_RATE_UNAVAILABLE", - "description": "An exchange rate is temporarily unavailable. Try again shortly.", - "errors": [], - "message": "fx_rate_unavailable", "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } - }, - "schema": { - "$ref": "#/components/schemas/Error" - } - } - }, - "description": "Possible error codes: `INTERNAL_ERROR`, `QUOTES_RATE_UNAVAILABLE`. See the Error responses section for retry semantics." - } - }, - "summary": "Create Payin Quote", - "tags": [ - "Payin Quotes" - ], - "x-sdk": true - } - }, - "/v1/instances/{instance_id}/payin-quotes/fx": { - "post": { - "parameters": [ - { - "in": "path", - "name": "instance_id", - "required": true, - "schema": { - "example": "in_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - } - }, - { - "in": "header", - "name": "Idempotency-Key", - "required": false, - "schema": { - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "maxLength": 255, - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "currency_type": { - "description": "", - "enum": [ - "sender", - "receiver" - ], - "example": "sender", - "type": "string" - }, - "from": { - "enum": [ - "USDC", - "USDT", - "USDB", - "BRL", - "USD", - "MXN", - "COP", - "ARS", - "EUR" - ], - "example": "BRL", - "type": "string" - }, - "request_amount": { - "description": "1000 represents 10.00, 2050 represents 20.50", - "example": 1000, - "minimum": 500, - "type": "integer" - }, - "to": { - "enum": [ - "USDC", - "USDT", - "USDB", - "BRL", - "USD", - "MXN", - "COP", - "ARS", - "EUR" - ], - "example": "USDC", - "type": "string" - } - }, - "required": [ - "from", - "to", - "request_amount", - "currency_type" - ], - "type": "object" - } - } - }, - "description": "Check FX rate" - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "properties": { - "blindpay_quotation": { - "description": "1 USD = 5.05 BRL (commercial quotation + (blindpay taxes))", - "example": 505, - "type": [ - "number", - "null" - ] - }, - "commercial_quotation": { - "description": "1 USD = 4.95 BRL", - "example": 495, - "type": [ - "number", - "null" - ] - }, - "instance_flat_fee": { - "description": "0.5 USDC", - "example": 50, - "type": [ - "number", - "null" - ] - }, - "instance_percentage_fee": { - "maximum": 10000, - "minimum": 0, - "type": "number" - }, - "result_amount": { - "minimum": 1, - "type": "number" + "code": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", + "message": "network_not_supported_on_dev_instance", + "description": "This network or token combination is not supported for this operation.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "required": [ - "commercial_quotation", - "blindpay_quotation", - "result_amount", - "instance_flat_fee", - "instance_percentage_fee" - ], - "type": "object" - } - } - }, - "description": "Check FX rate response" - }, - "400": { - "content": { - "application/json": { - "examples": { - "BANK_ACCOUNTS_INCOMPLETE": { - "summary": "BANK_ACCOUNTS_INCOMPLETE", + "CUSTOMERS_COUNTRY_NOT_SUPPORTED": { + "summary": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", "value": { - "code": "BANK_ACCOUNTS_INCOMPLETE", - "description": "The bank account details are incomplete for this payment method. Provide the missing fields.", + "success": false, + "code": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", + "message": "country_not_supported", + "description": "This country is not supported for this operation.", "errors": [], - "message": "sepa_bank_account_incomplete", + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "CUSTOMERS_INVALID_PHONE": { + "summary": "CUSTOMERS_INVALID_PHONE", + "value": { + "success": false, + "code": "CUSTOMERS_INVALID_PHONE", + "message": "invalid_phone_number", + "description": "The phone number provided is not valid. Check the number and try again.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "CUSTOMERS_INVALID_TAX_ID": { + "summary": "CUSTOMERS_INVALID_TAX_ID", + "value": { + "success": false, + "code": "CUSTOMERS_INVALID_TAX_ID", + "message": "invalid_cpf_or_rg_tax_id", + "description": "The tax ID provided is not valid. Check the value and try again.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "CUSTOMERS_NOT_FOUND": { + "summary": "CUSTOMERS_NOT_FOUND", + "value": { + "success": false, + "code": "CUSTOMERS_NOT_FOUND", + "message": "customer_not_found", + "description": "The requested customer was not found.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "FILES_UNREADABLE": { + "summary": "FILES_UNREADABLE", + "value": { + "success": false, + "code": "FILES_UNREADABLE", + "message": "file_download_failed", + "description": "We could not read the uploaded file. Check the file and try again.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "PAYINS_METHOD_NOT_SUPPORTED": { + "summary": "PAYINS_METHOD_NOT_SUPPORTED", + "value": { "success": false, + "code": "PAYINS_METHOD_NOT_SUPPORTED", + "message": "ted_payin_not_supported", + "description": "This payment method is not supported for this operation.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "PAYOUTS_AMOUNT_BELOW_MINIMUM": { "summary": "PAYOUTS_AMOUNT_BELOW_MINIMUM", "value": { + "success": false, "code": "PAYOUTS_AMOUNT_BELOW_MINIMUM", + "message": "swift_minimum_is_100_usd", "description": "The amount is below the minimum for this payment rail.", "errors": [], - "message": "swift_minimum_is_100_usd", + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "PAYOUTS_INSUFFICIENT_BALANCE": { + "summary": "PAYOUTS_INSUFFICIENT_BALANCE", + "value": { + "success": false, + "code": "PAYOUTS_INSUFFICIENT_BALANCE", + "message": "not_enough_balance", + "description": "There is not enough balance to complete this payout. Fund your balance and try again.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "QUOTES_ALREADY_USED": { + "summary": "QUOTES_ALREADY_USED", + "value": { + "success": false, + "code": "QUOTES_ALREADY_USED", + "message": "quote_already_used", + "description": "This quote was already used. Request a new quote.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "QUOTES_EXPIRED": { + "summary": "QUOTES_EXPIRED", + "value": { + "success": false, + "code": "QUOTES_EXPIRED", + "message": "quote_expired", + "description": "This quote has expired. Request a new quote and try again.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "QUOTES_NOT_FOUND": { + "summary": "QUOTES_NOT_FOUND", + "value": { "success": false, + "code": "QUOTES_NOT_FOUND", + "message": "quote_not_found", + "description": "The requested quote was not found.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "QUOTES_RATE_UNAVAILABLE": { "summary": "QUOTES_RATE_UNAVAILABLE", "value": { + "success": false, "code": "QUOTES_RATE_UNAVAILABLE", + "message": "fx_rate_unavailable", "description": "An exchange rate is temporarily unavailable. Try again shortly.", "errors": [], - "message": "fx_rate_unavailable", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VALIDATION_MISSING_REQUIRED_FIELDS": { + "summary": "VALIDATION_MISSING_REQUIRED_FIELDS", + "value": { "success": false, + "code": "VALIDATION_MISSING_REQUIRED_FIELDS", + "message": "missing_required_fields", + "description": "Required fields are missing. Provide the missing fields and try again.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "VALIDATION_INVALID_REQUEST": { - "summary": "VALIDATION_INVALID_REQUEST", + "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED": { + "summary": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", "value": { - "code": "VALIDATION_INVALID_REQUEST", - "description": "The request is not valid for this operation. Check the parameters and try again.", + "success": false, + "code": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", + "message": "id_doc_front_file_required", + "description": "Additional documents are required to create this virtual account. Upload the requested documents.", "errors": [], - "message": "invalid_body", + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VIRTUAL_ACCOUNTS_NOT_FOUND": { + "summary": "VIRTUAL_ACCOUNTS_NOT_FOUND", + "value": { + "success": false, + "code": "VIRTUAL_ACCOUNTS_NOT_FOUND", + "message": "virtual_account_not_found", + "description": "The requested virtual account was not found.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { + "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "value": { + "success": false, + "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "message": "virtual_account_provision_failed", + "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED": { + "summary": "VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED", + "value": { "success": false, + "code": "VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED", + "message": "us_state_not_supported", + "description": "Virtual accounts are not available for this country or region.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `BANK_ACCOUNTS_INCOMPLETE`, `PAYOUTS_AMOUNT_BELOW_MINIMUM`, `QUOTES_RATE_UNAVAILABLE`, `VALIDATION_FAILED`, `VALIDATION_INVALID_REQUEST`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "404": { + "description": "Possible error codes: `WALLETS_NOT_FOUND`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "WALLETS_NOT_FOUND": { "summary": "WALLETS_NOT_FOUND", "value": { + "success": false, "code": "WALLETS_NOT_FOUND", + "message": "wallet_not_found", "description": "The requested wallet was not found.", "errors": [], - "message": "wallet_not_found", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, + } + } + } + }, + "422": { + "description": "Possible error codes: `CUSTOMERS_INVALID_DATA`. See the Error responses section for retry semantics.", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/Error" + }, + "examples": { + "CUSTOMERS_INVALID_DATA": { + "summary": "CUSTOMERS_INVALID_DATA", + "value": { + "success": false, + "code": "CUSTOMERS_INVALID_DATA", + "message": "invalid_customer_data", + "description": "The customer data was rejected by the banking provider. Check the highlighted fields and try again.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } } } - }, - "description": "Possible error codes: `WALLETS_NOT_FOUND`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `FILES_UNREADABLE`, `INTERNAL_ERROR`, `QUOTES_RATE_UNAVAILABLE`, `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { + "FILES_UNREADABLE": { + "summary": "FILES_UNREADABLE", + "value": { + "success": false, + "code": "FILES_UNREADABLE", + "message": "file_download_failed", + "description": "We could not read the uploaded file. Check the file and try again.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "QUOTES_RATE_UNAVAILABLE": { "summary": "QUOTES_RATE_UNAVAILABLE", "value": { + "success": false, "code": "QUOTES_RATE_UNAVAILABLE", + "message": "fx_rate_unavailable", "description": "An exchange rate is temporarily unavailable. Try again shortly.", "errors": [], - "message": "fx_rate_unavailable", + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { + "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "value": { "success": false, + "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "message": "virtual_account_provision_failed", + "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, + } + } + } + }, + "502": { + "description": "Possible error codes: `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics.", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/Error" + }, + "examples": { + "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { + "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "value": { + "success": false, + "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "message": "virtual_account_provision_failed", + "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`, `QUOTES_RATE_UNAVAILABLE`. See the Error responses section for retry semantics." + } }, "503": { + "description": "Possible error codes: `QUOTES_RATE_UNAVAILABLE`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "QUOTES_RATE_UNAVAILABLE": { "summary": "QUOTES_RATE_UNAVAILABLE", "value": { + "success": false, "code": "QUOTES_RATE_UNAVAILABLE", + "message": "fx_rate_unavailable", "description": "An exchange rate is temporarily unavailable. Try again shortly.", "errors": [], - "message": "fx_rate_unavailable", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `QUOTES_RATE_UNAVAILABLE`. See the Error responses section for retry semantics." + } } - }, - "summary": "Get FX Rate", - "tags": [ - "Payin Quotes" - ], - "x-sdk": true + } } }, - "/v1/instances/{instance_id}/payins": { - "get": { + "/v1/instances/{instance_id}/customers/{customer_id}/wallets": { + "post": { + "x-sdk": true, + "tags": [ + "Wallets" + ], + "summary": "Create Wallet", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } - }, - { - "in": "query", - "name": "limit", - "required": false, - "schema": { - "description": "Number of items to return", - "enum": [ - "10", - "50", - "100", - "200", - "500", - "1000" - ], - "example": "50", - "type": "string" - } - }, - { - "in": "query", - "name": "offset", - "required": false, - "schema": { - "description": "Number of items to skip", - "enum": [ - "0", - "10", - "50", - "100", - "200", - "500", - "1000" - ], - "example": "0", - "type": "string" - } - }, - { - "in": "query", - "name": "starting_after", - "required": false, - "schema": { - "description": "A cursor for use in pagination. starting_after is an object ID that defines your place in the list.", - "example": "pi_123", - "type": "string" - } - }, - { - "in": "query", - "name": "ending_before", - "required": false, - "schema": { - "description": "A cursor for use in pagination. ending_before is an object ID that defines your place in the list.", - "example": "pi_123", - "type": "string" - } - }, - { - "in": "query", - "name": "customer_id", - "required": false, - "schema": { - "example": "re_000000000000", "maxLength": 15, - "minLength": 15, - "type": "string" - } - }, - { - "in": "query", - "name": "status", - "required": false, - "schema": { - "enum": [ - "processing", - "on_hold", - "failed", - "refunded", - "completed" - ], - "type": "string" - } - }, - { - "in": "query", - "name": "customer_name", - "required": false, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "bank_account_id", - "required": false, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "country", - "required": false, - "schema": { - "type": "string" - } + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" }, { - "in": "query", - "name": "payment_method", - "required": false, "schema": { - "enum": [ - "ach", - "wire", - "pix", - "ted", - "spei", - "transfers", - "pse", - "international_swift", - "rtp" - ], - "type": "string" - } + "type": "string", + "minLength": 15, + "maxLength": 15, + "description": "Customer ID", + "example": "re_000000000000" + }, + "required": true, + "name": "customer_id", + "in": "path" }, { - "in": "query", - "name": "network", - "required": false, "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "token", + "type": "string", + "maxLength": 255, + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, "required": false, - "schema": { - "type": "string" - } + "name": "Idempotency-Key", + "in": "header" } ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "anyOf": [ - { - "properties": { - "data": { - "items": { - "$ref": "#/components/schemas/PayinOut" - }, - "type": "array" - }, - "pagination": { - "$ref": "#/components/schemas/PaginationMetadata" - } - }, - "required": [ - "data", - "pagination" - ], - "type": "object" - }, - { - "items": { - "$ref": "#/components/schemas/PayinOut" - }, - "type": "array" - } - ] + "requestBody": { + "description": "Create a new wallet", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateWalletIn" + } + } + } + }, + "responses": { + "200": { + "description": "Wallet created", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WalletOut" } } - }, - "description": "List payins with pagination" + } }, "400": { + "description": "Possible error codes: `BLOCKCHAIN_NETWORK_NOT_SUPPORTED`, `CUSTOMERS_KYC_NOT_APPROVED`, `TRANSFERS_NOT_ENABLED`, `VALIDATION_FAILED`, `VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { + "BLOCKCHAIN_NETWORK_NOT_SUPPORTED": { + "summary": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", + "value": { + "success": false, + "code": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", + "message": "network_not_supported_on_dev_instance", + "description": "This network or token combination is not supported for this operation.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "CUSTOMERS_KYC_NOT_APPROVED": { + "summary": "CUSTOMERS_KYC_NOT_APPROVED", + "value": { + "success": false, + "code": "CUSTOMERS_KYC_NOT_APPROVED", + "message": "kyc_not_approved", + "description": "This customer has not completed verification yet. Complete the verification before continuing.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "TRANSFERS_NOT_ENABLED": { + "summary": "TRANSFERS_NOT_ENABLED", + "value": { + "success": false, + "code": "TRANSFERS_NOT_ENABLED", + "message": "wallets_and_transfers_not_enabled", + "description": "Wallets and transfers are not enabled for this account. Contact support to enable them.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED": { + "summary": "VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED", + "value": { "success": false, + "code": "VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED", + "message": "us_state_not_supported", + "description": "Virtual accounts are not available for this country or region.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Retrieve Payins", + } + }, + "get": { + "x-sdk": true, "tags": [ - "Payins" + "Wallets" ], - "x-sdk": true - } - }, - "/v1/instances/{instance_id}/payins/evm": { - "post": { + "summary": "Retrieve Wallets", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } + "maxLength": 15, + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" }, { - "in": "header", - "name": "Idempotency-Key", - "required": false, "schema": { - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "maxLength": 255, - "type": "string" - } + "type": "string", + "minLength": 15, + "maxLength": 15, + "description": "Customer ID", + "example": "re_000000000000" + }, + "required": true, + "name": "customer_id", + "in": "path" } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreatePayinIn" - } - } - }, - "description": "Start payin" - }, "responses": { "200": { + "description": "Get wallets", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreatePayinOut" + "type": "array", + "items": { + "$ref": "#/components/schemas/WalletOut" + } } } - }, - "description": "Payin started with success" + } }, "400": { + "description": "Possible error codes: `TRANSFERS_NOT_ENABLED`, `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { - "BANK_ACCOUNTS_INCOMPLETE": { - "summary": "BANK_ACCOUNTS_INCOMPLETE", - "value": { - "code": "BANK_ACCOUNTS_INCOMPLETE", - "description": "The bank account details are incomplete for this payment method. Provide the missing fields.", - "errors": [], - "message": "sepa_bank_account_incomplete", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED": { - "summary": "BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED", - "value": { - "code": "BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED", - "description": "This banking option is not supported for this operation.", - "errors": [], - "message": "unsupported_banking_partner", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "BLOCKCHAIN_NETWORK_NOT_SUPPORTED": { - "summary": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", - "value": { - "code": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", - "description": "This network or token combination is not supported for this operation.", - "errors": [], - "message": "network_not_supported_on_dev_instance", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "CUSTOMERS_COUNTRY_NOT_SUPPORTED": { - "summary": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", - "value": { - "code": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", - "description": "This country is not supported for this operation.", - "errors": [], - "message": "country_not_supported", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "CUSTOMERS_INVALID_PHONE": { - "summary": "CUSTOMERS_INVALID_PHONE", - "value": { - "code": "CUSTOMERS_INVALID_PHONE", - "description": "The phone number provided is not valid. Check the number and try again.", - "errors": [], - "message": "invalid_phone_number", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "CUSTOMERS_INVALID_TAX_ID": { - "summary": "CUSTOMERS_INVALID_TAX_ID", - "value": { - "code": "CUSTOMERS_INVALID_TAX_ID", - "description": "The tax ID provided is not valid. Check the value and try again.", - "errors": [], - "message": "invalid_cpf_or_rg_tax_id", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "CUSTOMERS_NOT_FOUND": { - "summary": "CUSTOMERS_NOT_FOUND", - "value": { - "code": "CUSTOMERS_NOT_FOUND", - "description": "The requested customer was not found.", - "errors": [], - "message": "customer_not_found", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "FILES_UNREADABLE": { - "summary": "FILES_UNREADABLE", - "value": { - "code": "FILES_UNREADABLE", - "description": "We could not read the uploaded file. Check the file and try again.", - "errors": [], - "message": "file_download_failed", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "PAYINS_METHOD_NOT_SUPPORTED": { - "summary": "PAYINS_METHOD_NOT_SUPPORTED", - "value": { - "code": "PAYINS_METHOD_NOT_SUPPORTED", - "description": "This payment method is not supported for this operation.", - "errors": [], - "message": "ted_payin_not_supported", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "PAYOUTS_AMOUNT_BELOW_MINIMUM": { - "summary": "PAYOUTS_AMOUNT_BELOW_MINIMUM", - "value": { - "code": "PAYOUTS_AMOUNT_BELOW_MINIMUM", - "description": "The amount is below the minimum for this payment rail.", - "errors": [], - "message": "swift_minimum_is_100_usd", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "PAYOUTS_INSUFFICIENT_BALANCE": { - "summary": "PAYOUTS_INSUFFICIENT_BALANCE", - "value": { - "code": "PAYOUTS_INSUFFICIENT_BALANCE", - "description": "There is not enough balance to complete this payout. Fund your balance and try again.", - "errors": [], - "message": "not_enough_balance", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "QUOTES_ALREADY_USED": { - "summary": "QUOTES_ALREADY_USED", - "value": { - "code": "QUOTES_ALREADY_USED", - "description": "This quote was already used. Request a new quote.", - "errors": [], - "message": "quote_already_used", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "QUOTES_EXPIRED": { - "summary": "QUOTES_EXPIRED", - "value": { - "code": "QUOTES_EXPIRED", - "description": "This quote has expired. Request a new quote and try again.", - "errors": [], - "message": "quote_expired", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "QUOTES_NOT_FOUND": { - "summary": "QUOTES_NOT_FOUND", + "TRANSFERS_NOT_ENABLED": { + "summary": "TRANSFERS_NOT_ENABLED", "value": { - "code": "QUOTES_NOT_FOUND", - "description": "The requested quote was not found.", - "errors": [], - "message": "quote_not_found", "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "QUOTES_RATE_UNAVAILABLE": { - "summary": "QUOTES_RATE_UNAVAILABLE", - "value": { - "code": "QUOTES_RATE_UNAVAILABLE", - "description": "An exchange rate is temporarily unavailable. Try again shortly.", + "code": "TRANSFERS_NOT_ENABLED", + "message": "wallets_and_transfers_not_enabled", + "description": "Wallets and transfers are not enabled for this account. Contact support to enable them.", "errors": [], - "message": "fx_rate_unavailable", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", - "description": "The request contains invalid fields. Check the errors list for details.", - "errors": [], "message": "validation_failed", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VALIDATION_MISSING_REQUIRED_FIELDS": { - "summary": "VALIDATION_MISSING_REQUIRED_FIELDS", - "value": { - "code": "VALIDATION_MISSING_REQUIRED_FIELDS", - "description": "Required fields are missing. Provide the missing fields and try again.", - "errors": [], - "message": "missing_required_fields", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED": { - "summary": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", - "value": { - "code": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", - "description": "Additional documents are required to create this virtual account. Upload the requested documents.", - "errors": [], - "message": "id_doc_front_file_required", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VIRTUAL_ACCOUNTS_NOT_FOUND": { - "summary": "VIRTUAL_ACCOUNTS_NOT_FOUND", - "value": { - "code": "VIRTUAL_ACCOUNTS_NOT_FOUND", - "description": "The requested virtual account was not found.", - "errors": [], - "message": "virtual_account_not_found", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { - "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "value": { - "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", - "errors": [], - "message": "virtual_account_provision_failed", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED": { - "summary": "VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED", - "value": { - "code": "VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED", - "description": "Virtual accounts are not available for this country or region.", + "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "us_state_not_supported", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `BANK_ACCOUNTS_INCOMPLETE`, `BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED`, `BLOCKCHAIN_NETWORK_NOT_SUPPORTED`, `CUSTOMERS_COUNTRY_NOT_SUPPORTED`, `CUSTOMERS_INVALID_PHONE`, `CUSTOMERS_INVALID_TAX_ID`, `CUSTOMERS_NOT_FOUND`, `FILES_UNREADABLE`, `PAYINS_METHOD_NOT_SUPPORTED`, `PAYOUTS_AMOUNT_BELOW_MINIMUM`, `PAYOUTS_INSUFFICIENT_BALANCE`, `QUOTES_ALREADY_USED`, `QUOTES_EXPIRED`, `QUOTES_NOT_FOUND`, `QUOTES_RATE_UNAVAILABLE`, `VALIDATION_FAILED`, `VALIDATION_MISSING_REQUIRED_FIELDS`, `VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED`, `VIRTUAL_ACCOUNTS_NOT_FOUND`, `VIRTUAL_ACCOUNTS_PROVISION_FAILED`, `VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, - "404": { + "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { - "WALLETS_NOT_FOUND": { - "summary": "WALLETS_NOT_FOUND", + "AUTH_RATE_LIMITED": { + "summary": "AUTH_RATE_LIMITED", "value": { - "code": "WALLETS_NOT_FOUND", - "description": "The requested wallet was not found.", - "errors": [], - "message": "wallet_not_found", "success": false, + "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", + "description": "Too many requests. Wait a moment and try again.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, + } + } + } + }, + "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/Error" + }, + "examples": { + "INTERNAL_ERROR": { + "summary": "INTERNAL_ERROR", + "value": { + "success": false, + "code": "INTERNAL_ERROR", + "message": "internal_error", + "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } } } + } + } + } + } + }, + "/v1/instances/{instance_id}/customers/{customer_id}/wallets/{id}": { + "get": { + "x-sdk": true, + "tags": [ + "Wallets" + ], + "summary": "Retrieve Wallet", + "parameters": [ + { + "schema": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "in_000000000000" }, - "description": "Possible error codes: `WALLETS_NOT_FOUND`. See the Error responses section for retry semantics." + "required": true, + "name": "instance_id", + "in": "path" }, - "422": { + { + "schema": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "description": "Customer ID", + "example": "re_000000000000" + }, + "required": true, + "name": "customer_id", + "in": "path" + }, + { + "schema": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "bk_000000000000" + }, + "required": true, + "name": "id", + "in": "path" + } + ], + "responses": { + "200": { + "description": "Get wallet", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WalletOut" + } + } + } + }, + "400": { + "description": "Possible error codes: `TRANSFERS_NOT_ENABLED`, `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { - "CUSTOMERS_INVALID_DATA": { - "summary": "CUSTOMERS_INVALID_DATA", + "TRANSFERS_NOT_ENABLED": { + "summary": "TRANSFERS_NOT_ENABLED", "value": { - "code": "CUSTOMERS_INVALID_DATA", - "description": "The customer data was rejected by the banking provider. Check the highlighted fields and try again.", + "success": false, + "code": "TRANSFERS_NOT_ENABLED", + "message": "wallets_and_transfers_not_enabled", + "description": "Wallets and transfers are not enabled for this account. Contact support to enable them.", "errors": [], - "message": "invalid_customer_data", + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VALIDATION_FAILED": { + "summary": "VALIDATION_FAILED", + "value": { "success": false, + "code": "VALIDATION_FAILED", + "message": "validation_failed", + "description": "The request contains invalid fields. Check the errors list for details.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `CUSTOMERS_INVALID_DATA`. See the Error responses section for retry semantics." + } }, - "429": { + "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { - "AUTH_RATE_LIMITED": { - "summary": "AUTH_RATE_LIMITED", + "AUTH_UNAUTHORIZED": { + "summary": "AUTH_UNAUTHORIZED", "value": { - "code": "AUTH_RATE_LIMITED", - "description": "Too many requests. Wait a moment and try again.", - "errors": [], - "message": "api_key_rate_limit_exceeded", "success": false, + "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", + "description": "Authentication failed. Check your API key or session and try again.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, - "500": { + "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { - "FILES_UNREADABLE": { - "summary": "FILES_UNREADABLE", - "value": { - "code": "FILES_UNREADABLE", - "description": "We could not read the uploaded file. Check the file and try again.", - "errors": [], - "message": "file_download_failed", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "INTERNAL_ERROR": { - "summary": "INTERNAL_ERROR", - "value": { - "code": "INTERNAL_ERROR", - "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", - "errors": [], - "message": "internal_error", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "QUOTES_RATE_UNAVAILABLE": { - "summary": "QUOTES_RATE_UNAVAILABLE", + "AUTH_FORBIDDEN": { + "summary": "AUTH_FORBIDDEN", "value": { - "code": "QUOTES_RATE_UNAVAILABLE", - "description": "An exchange rate is temporarily unavailable. Try again shortly.", - "errors": [], - "message": "fx_rate_unavailable", "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { - "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "value": { - "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", + "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", + "description": "You do not have permission to perform this action.", "errors": [], - "message": "virtual_account_provision_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `FILES_UNREADABLE`, `INTERNAL_ERROR`, `QUOTES_RATE_UNAVAILABLE`, `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics." + } }, - "502": { + "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { - "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { - "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "AUTH_RATE_LIMITED": { + "summary": "AUTH_RATE_LIMITED", "value": { - "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", - "errors": [], - "message": "virtual_account_provision_failed", "success": false, + "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", + "description": "Too many requests. Wait a moment and try again.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics." + } }, - "503": { + "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { - "QUOTES_RATE_UNAVAILABLE": { - "summary": "QUOTES_RATE_UNAVAILABLE", + "INTERNAL_ERROR": { + "summary": "INTERNAL_ERROR", "value": { - "code": "QUOTES_RATE_UNAVAILABLE", - "description": "An exchange rate is temporarily unavailable. Try again shortly.", - "errors": [], - "message": "fx_rate_unavailable", "success": false, + "code": "INTERNAL_ERROR", + "message": "internal_error", + "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `QUOTES_RATE_UNAVAILABLE`. See the Error responses section for retry semantics." + } } - }, - "summary": "Create Payin", + } + }, + "delete": { + "x-sdk": true, "tags": [ - "Payins" + "Wallets" ], - "x-sdk": true - } - }, - "/v1/instances/{instance_id}/payins/{id}": { - "get": { + "summary": "Remove Wallet", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } + "maxLength": 15, + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" }, { - "in": "path", - "name": "id", - "required": true, "schema": { - "example": "pi_000000000000", + "type": "string", + "minLength": 15, "maxLength": 15, + "description": "Customer ID", + "example": "re_000000000000" + }, + "required": true, + "name": "customer_id", + "in": "path" + }, + { + "schema": { + "type": "string", "minLength": 15, - "type": "string" - } + "maxLength": 15, + "example": "bk_000000000000" + }, + "required": true, + "name": "id", + "in": "path" + }, + { + "schema": { + "type": "string", + "maxLength": 255, + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, + "required": false, + "name": "Idempotency-Key", + "in": "header" } ], "responses": { "200": { + "description": "Delete wallet", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PayinOut" + "$ref": "#/components/schemas/Success" } } - }, - "description": "List payins" + } }, "400": { + "description": "Possible error codes: `TRANSFERS_NOT_ENABLED`, `VALIDATION_FAILED`, `WALLETS_ATTACHED_TO_VIRTUAL_ACCOUNT`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { + "TRANSFERS_NOT_ENABLED": { + "summary": "TRANSFERS_NOT_ENABLED", + "value": { + "success": false, + "code": "TRANSFERS_NOT_ENABLED", + "message": "wallets_and_transfers_not_enabled", + "description": "Wallets and transfers are not enabled for this account. Contact support to enable them.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "WALLETS_ATTACHED_TO_VIRTUAL_ACCOUNT": { + "summary": "WALLETS_ATTACHED_TO_VIRTUAL_ACCOUNT", + "value": { "success": false, + "code": "WALLETS_ATTACHED_TO_VIRTUAL_ACCOUNT", + "message": "wallet_attached_to_virtual_account", + "description": "This wallet is attached to a virtual account and cannot be deleted. Delete the virtual account first.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, - "404": { + "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "examples": { - "PAYINS_NOT_FOUND": { - "summary": "PAYINS_NOT_FOUND", - "value": { - "code": "PAYINS_NOT_FOUND", - "description": "The requested payin was not found.", - "errors": [], - "message": "payin_not_found", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } - }, "schema": { "$ref": "#/components/schemas/Error" - } - } - }, - "description": "Possible error codes: `PAYINS_NOT_FOUND`. See the Error responses section for retry semantics." - }, - "429": { - "content": { - "application/json": { + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Retrieve Payin", - "tags": [ - "Payins" - ], - "x-sdk": true + } } }, - "/v1/instances/{instance_id}/payouts": { + "/v1/instances/{instance_id}/customers/{customer_id}/wallets/{id}/balance": { "get": { + "x-sdk": true, + "tags": [ + "Wallets" + ], + "summary": "Retrieve Wallet Balance", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } - }, - { - "in": "query", - "name": "limit", - "required": false, - "schema": { - "description": "Number of items to return", - "enum": [ - "10", - "50", - "100", - "200", - "500", - "1000" - ], - "example": "50", - "type": "string" - } - }, - { - "in": "query", - "name": "offset", - "required": false, - "schema": { - "description": "Number of items to skip", - "enum": [ - "0", - "10", - "50", - "100", - "200", - "500", - "1000" - ], - "example": "0", - "type": "string" - } - }, - { - "in": "query", - "name": "starting_after", - "required": false, - "schema": { - "description": "A cursor for use in pagination. starting_after is an object ID that defines your place in the list.", - "example": "pi_123", - "type": "string" - } - }, - { - "in": "query", - "name": "ending_before", - "required": false, - "schema": { - "description": "A cursor for use in pagination. ending_before is an object ID that defines your place in the list.", - "example": "pi_123", - "type": "string" - } - }, - { - "in": "query", - "name": "customer_id", - "required": false, - "schema": { - "example": "re_000000000000", "maxLength": 15, - "minLength": 15, - "type": "string" - } - }, - { - "in": "query", - "name": "status", - "required": false, - "schema": { - "enum": [ - "processing", - "failed", - "refunded", - "completed", - "on_hold" - ], - "type": "string" - } - }, - { - "in": "query", - "name": "customer_name", - "required": false, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "bank_account_id", - "required": false, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "country", - "required": false, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "payment_method", - "required": false, - "schema": { - "enum": [ - "wire", - "ach", - "pix", - "pix_safe", - "ted", - "spei_bitso", - "transfers_bitso", - "ach_cop_bitso", - "international_swift", - "rtp", - "sepa" - ], - "type": "string" - } + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" }, { - "in": "query", - "name": "network", - "required": false, "schema": { - "type": "string" - } + "type": "string", + "minLength": 15, + "maxLength": 15, + "description": "Customer ID", + "example": "re_000000000000" + }, + "required": true, + "name": "customer_id", + "in": "path" }, { - "in": "query", - "name": "token", - "required": false, "schema": { - "type": "string" - } + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "bk_000000000000" + }, + "required": true, + "name": "id", + "in": "path" } ], "responses": { "200": { + "description": "Get wallet balance", "content": { "application/json": { "schema": { - "anyOf": [ - { - "properties": { - "data": { - "items": { - "$ref": "#/components/schemas/PayoutOut" - }, - "type": "array" - }, - "pagination": { - "$ref": "#/components/schemas/PaginationMetadata" - } - }, - "required": [ - "data", - "pagination" - ], - "type": "object" - }, - { - "items": { - "$ref": "#/components/schemas/PayoutOut" - }, - "type": "array" - } - ] + "$ref": "#/components/schemas/WalletBalanceOut" } } - }, - "description": "List payouts with pagination and filtering" + } }, "400": { + "description": "Possible error codes: `TRANSFERS_NOT_ENABLED`, `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { + "TRANSFERS_NOT_ENABLED": { + "summary": "TRANSFERS_NOT_ENABLED", + "value": { + "success": false, + "code": "TRANSFERS_NOT_ENABLED", + "message": "wallets_and_transfers_not_enabled", + "description": "Wallets and transfers are not enabled for this account. Contact support to enable them.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, + } + } + } + }, + "503": { + "description": "Possible error codes: `WALLETS_BALANCE_UNAVAILABLE`. See the Error responses section for retry semantics.", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/Error" + }, + "examples": { + "WALLETS_BALANCE_UNAVAILABLE": { + "summary": "WALLETS_BALANCE_UNAVAILABLE", + "value": { + "success": false, + "code": "WALLETS_BALANCE_UNAVAILABLE", + "message": "balance_temporarily_unavailable", + "description": "The wallet balance is temporarily unavailable. Try again shortly.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Retrieve Payouts", - "tags": [ - "Payouts" - ], - "x-sdk": true + } } }, - "/v1/instances/{instance_id}/payouts/evm": { + "/v1/instances/{instance_id}/transfer-quotes": { "post": { + "x-sdk": true, + "tags": [ + "Transfer Quotes" + ], + "summary": "Create Transfer Quote", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } + "maxLength": 15, + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" }, { - "in": "header", - "name": "Idempotency-Key", - "required": false, "schema": { - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "type": "string", "maxLength": 255, - "type": "string" - } + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, + "required": false, + "name": "Idempotency-Key", + "in": "header" } ], "requestBody": { + "description": "Create a new quote", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PayoutOnEvmIn" + "$ref": "#/components/schemas/CreateTransferQuoteIn" } } - }, - "description": "Start payout on evm blockchain" + } }, "responses": { "200": { + "description": "Transfer Quote creation details", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PayoutOnEvmOut" + "$ref": "#/components/schemas/CreateTransferQuoteOut" } } - }, - "description": "Payout started with success" + } }, "400": { + "description": "Possible error codes: `BLOCKCHAIN_NETWORK_NOT_SUPPORTED`, `CUSTOMERS_KYC_NOT_APPROVED`, `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { - "BANK_ACCOUNTS_INCOMPLETE": { - "summary": "BANK_ACCOUNTS_INCOMPLETE", - "value": { - "code": "BANK_ACCOUNTS_INCOMPLETE", - "description": "The bank account details are incomplete for this payment method. Provide the missing fields.", - "errors": [], - "message": "sepa_bank_account_incomplete", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, "BLOCKCHAIN_NETWORK_NOT_SUPPORTED": { "summary": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", "value": { + "success": false, "code": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", - "description": "This network or token combination is not supported for this operation.", - "errors": [], "message": "network_not_supported_on_dev_instance", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "CUSTOMERS_COUNTRY_NOT_SUPPORTED": { - "summary": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", - "value": { - "code": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", - "description": "This country is not supported for this operation.", - "errors": [], - "message": "country_not_supported", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "CUSTOMERS_INVALID_PHONE": { - "summary": "CUSTOMERS_INVALID_PHONE", - "value": { - "code": "CUSTOMERS_INVALID_PHONE", - "description": "The phone number provided is not valid. Check the number and try again.", - "errors": [], - "message": "invalid_phone_number", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "CUSTOMERS_INVALID_TAX_ID": { - "summary": "CUSTOMERS_INVALID_TAX_ID", - "value": { - "code": "CUSTOMERS_INVALID_TAX_ID", - "description": "The tax ID provided is not valid. Check the value and try again.", - "errors": [], - "message": "invalid_cpf_or_rg_tax_id", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "CUSTOMERS_ONBOARDING_INCOMPLETE": { - "summary": "CUSTOMERS_ONBOARDING_INCOMPLETE", - "value": { - "code": "CUSTOMERS_ONBOARDING_INCOMPLETE", - "description": "Onboarding is not complete yet. Finish the remaining steps before continuing.", - "errors": [], - "message": "onboarding_incomplete", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "FILES_UNREADABLE": { - "summary": "FILES_UNREADABLE", - "value": { - "code": "FILES_UNREADABLE", - "description": "We could not read the uploaded file. Check the file and try again.", - "errors": [], - "message": "file_download_failed", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "PAYOUTS_AMOUNT_BELOW_MINIMUM": { - "summary": "PAYOUTS_AMOUNT_BELOW_MINIMUM", - "value": { - "code": "PAYOUTS_AMOUNT_BELOW_MINIMUM", - "description": "The amount is below the minimum for this payment rail.", + "description": "This network or token combination is not supported for this operation.", "errors": [], - "message": "swift_minimum_is_100_usd", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "QUOTES_ALREADY_USED": { - "summary": "QUOTES_ALREADY_USED", + "CUSTOMERS_KYC_NOT_APPROVED": { + "summary": "CUSTOMERS_KYC_NOT_APPROVED", "value": { - "code": "QUOTES_ALREADY_USED", - "description": "This quote was already used. Request a new quote.", - "errors": [], - "message": "quote_already_used", "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "QUOTES_EXPIRED": { - "summary": "QUOTES_EXPIRED", - "value": { - "code": "QUOTES_EXPIRED", - "description": "This quote has expired. Request a new quote and try again.", + "code": "CUSTOMERS_KYC_NOT_APPROVED", + "message": "kyc_not_approved", + "description": "This customer has not completed verification yet. Complete the verification before continuing.", "errors": [], - "message": "quote_expired", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", - "description": "The request contains invalid fields. Check the errors list for details.", - "errors": [], "message": "validation_failed", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED": { - "summary": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", - "value": { - "code": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", - "description": "Additional documents are required to create this virtual account. Upload the requested documents.", - "errors": [], - "message": "id_doc_front_file_required", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VIRTUAL_ACCOUNTS_NOT_FOUND": { - "summary": "VIRTUAL_ACCOUNTS_NOT_FOUND", - "value": { - "code": "VIRTUAL_ACCOUNTS_NOT_FOUND", - "description": "The requested virtual account was not found.", - "errors": [], - "message": "virtual_account_not_found", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { - "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "value": { - "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", + "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "virtual_account_provision_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `BANK_ACCOUNTS_INCOMPLETE`, `BLOCKCHAIN_NETWORK_NOT_SUPPORTED`, `CUSTOMERS_COUNTRY_NOT_SUPPORTED`, `CUSTOMERS_INVALID_PHONE`, `CUSTOMERS_INVALID_TAX_ID`, `CUSTOMERS_ONBOARDING_INCOMPLETE`, `FILES_UNREADABLE`, `PAYOUTS_AMOUNT_BELOW_MINIMUM`, `QUOTES_ALREADY_USED`, `QUOTES_EXPIRED`, `VALIDATION_FAILED`, `VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED`, `VIRTUAL_ACCOUNTS_NOT_FOUND`, `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, - "422": { + "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "examples": { - "CUSTOMERS_INVALID_DATA": { - "summary": "CUSTOMERS_INVALID_DATA", - "value": { - "code": "CUSTOMERS_INVALID_DATA", - "description": "The customer data was rejected by the banking provider. Check the highlighted fields and try again.", - "errors": [], - "message": "invalid_customer_data", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } - }, "schema": { "$ref": "#/components/schemas/Error" - } - } - }, - "description": "Possible error codes: `CUSTOMERS_INVALID_DATA`. See the Error responses section for retry semantics." - }, - "429": { - "content": { - "application/json": { + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { - "FILES_UNREADABLE": { - "summary": "FILES_UNREADABLE", - "value": { - "code": "FILES_UNREADABLE", - "description": "We could not read the uploaded file. Check the file and try again.", - "errors": [], - "message": "file_download_failed", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", - "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", - "errors": [], "message": "internal_error", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { - "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "value": { - "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", - "errors": [], - "message": "virtual_account_provision_failed", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } - }, - "schema": { - "$ref": "#/components/schemas/Error" - } - } - }, - "description": "Possible error codes: `FILES_UNREADABLE`, `INTERNAL_ERROR`, `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics." - }, - "502": { - "content": { - "application/json": { - "examples": { - "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { - "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "value": { - "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", + "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "virtual_account_provision_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics." + } } - }, - "summary": "Create Payout on EVM Chains", - "tags": [ - "Payouts" - ], - "x-sdk": true + } } }, - "/v1/instances/{instance_id}/payouts/solana": { - "post": { + "/v1/instances/{instance_id}/transfers/{id}": { + "get": { + "x-sdk": true, + "tags": [ + "Transfers" + ], + "summary": "Retrieve Transfer", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } + "maxLength": 15, + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" }, { - "in": "header", - "name": "Idempotency-Key", - "required": false, "schema": { - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "maxLength": 255, - "type": "string" - } + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "pa_000000000000" + }, + "required": true, + "name": "id", + "in": "path" } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PayoutOnSolanaIn" - } - } - }, - "description": "Start payout on solana blockchain" - }, "responses": { "200": { + "description": "List transfers", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PayoutOnEvmOut" + "$ref": "#/components/schemas/TransferOut" } } - }, - "description": "Payout started with success" + } }, "400": { + "description": "Possible error codes: `TRANSFERS_NOT_ENABLED`, `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { - "BANK_ACCOUNTS_INCOMPLETE": { - "summary": "BANK_ACCOUNTS_INCOMPLETE", - "value": { - "code": "BANK_ACCOUNTS_INCOMPLETE", - "description": "The bank account details are incomplete for this payment method. Provide the missing fields.", - "errors": [], - "message": "sepa_bank_account_incomplete", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "BLOCKCHAIN_NETWORK_NOT_SUPPORTED": { - "summary": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", - "value": { - "code": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", - "description": "This network or token combination is not supported for this operation.", - "errors": [], - "message": "network_not_supported_on_dev_instance", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "CUSTOMERS_COUNTRY_NOT_SUPPORTED": { - "summary": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", - "value": { - "code": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", - "description": "This country is not supported for this operation.", - "errors": [], - "message": "country_not_supported", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "CUSTOMERS_INVALID_PHONE": { - "summary": "CUSTOMERS_INVALID_PHONE", - "value": { - "code": "CUSTOMERS_INVALID_PHONE", - "description": "The phone number provided is not valid. Check the number and try again.", - "errors": [], - "message": "invalid_phone_number", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "CUSTOMERS_INVALID_TAX_ID": { - "summary": "CUSTOMERS_INVALID_TAX_ID", - "value": { - "code": "CUSTOMERS_INVALID_TAX_ID", - "description": "The tax ID provided is not valid. Check the value and try again.", - "errors": [], - "message": "invalid_cpf_or_rg_tax_id", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "CUSTOMERS_ONBOARDING_INCOMPLETE": { - "summary": "CUSTOMERS_ONBOARDING_INCOMPLETE", - "value": { - "code": "CUSTOMERS_ONBOARDING_INCOMPLETE", - "description": "Onboarding is not complete yet. Finish the remaining steps before continuing.", - "errors": [], - "message": "onboarding_incomplete", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "FILES_UNREADABLE": { - "summary": "FILES_UNREADABLE", - "value": { - "code": "FILES_UNREADABLE", - "description": "We could not read the uploaded file. Check the file and try again.", - "errors": [], - "message": "file_download_failed", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "QUOTES_ALREADY_USED": { - "summary": "QUOTES_ALREADY_USED", + "TRANSFERS_NOT_ENABLED": { + "summary": "TRANSFERS_NOT_ENABLED", "value": { - "code": "QUOTES_ALREADY_USED", - "description": "This quote was already used. Request a new quote.", - "errors": [], - "message": "quote_already_used", "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "QUOTES_EXPIRED": { - "summary": "QUOTES_EXPIRED", - "value": { - "code": "QUOTES_EXPIRED", - "description": "This quote has expired. Request a new quote and try again.", + "code": "TRANSFERS_NOT_ENABLED", + "message": "wallets_and_transfers_not_enabled", + "description": "Wallets and transfers are not enabled for this account. Contact support to enable them.", "errors": [], - "message": "quote_expired", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", - "description": "The request contains invalid fields. Check the errors list for details.", - "errors": [], "message": "validation_failed", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED": { - "summary": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", - "value": { - "code": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", - "description": "Additional documents are required to create this virtual account. Upload the requested documents.", - "errors": [], - "message": "id_doc_front_file_required", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { - "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "value": { - "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", + "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "virtual_account_provision_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `BANK_ACCOUNTS_INCOMPLETE`, `BLOCKCHAIN_NETWORK_NOT_SUPPORTED`, `CUSTOMERS_COUNTRY_NOT_SUPPORTED`, `CUSTOMERS_INVALID_PHONE`, `CUSTOMERS_INVALID_TAX_ID`, `CUSTOMERS_ONBOARDING_INCOMPLETE`, `FILES_UNREADABLE`, `QUOTES_ALREADY_USED`, `QUOTES_EXPIRED`, `VALIDATION_FAILED`, `VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED`, `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, - "422": { + "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "examples": { - "CUSTOMERS_INVALID_DATA": { - "summary": "CUSTOMERS_INVALID_DATA", - "value": { - "code": "CUSTOMERS_INVALID_DATA", - "description": "The customer data was rejected by the banking provider. Check the highlighted fields and try again.", - "errors": [], - "message": "invalid_customer_data", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } - }, "schema": { "$ref": "#/components/schemas/Error" - } - } - }, - "description": "Possible error codes: `CUSTOMERS_INVALID_DATA`. See the Error responses section for retry semantics." - }, - "429": { - "content": { - "application/json": { + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { - "FILES_UNREADABLE": { - "summary": "FILES_UNREADABLE", - "value": { - "code": "FILES_UNREADABLE", - "description": "We could not read the uploaded file. Check the file and try again.", - "errors": [], - "message": "file_download_failed", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", - "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", - "errors": [], "message": "internal_error", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { - "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "value": { - "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", - "errors": [], - "message": "virtual_account_provision_failed", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } - }, - "schema": { - "$ref": "#/components/schemas/Error" - } - } - }, - "description": "Possible error codes: `FILES_UNREADABLE`, `INTERNAL_ERROR`, `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics." - }, - "502": { - "content": { - "application/json": { - "examples": { - "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { - "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "value": { - "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", + "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "virtual_account_provision_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics." + } } - }, - "summary": "Create Payout on Solana", - "tags": [ - "Payouts" - ], - "x-sdk": true + } } }, - "/v1/instances/{instance_id}/payouts/stellar": { - "post": { + "/v1/e/transfers/{id}": { + "get": { + "x-sdk": true, + "tags": [ + "Transfers" + ], + "summary": "Retrieve Transfer Track", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } - }, - { - "in": "header", - "name": "Idempotency-Key", - "required": false, - "schema": { - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "maxLength": 255, - "type": "string" - } + "maxLength": 15, + "example": "pa_000000000000" + }, + "required": true, + "name": "id", + "in": "path" } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PayoutOnStellarIn" - } - } - }, - "description": "Start payout on stellar blockchain" - }, "responses": { "200": { + "description": "List transfers", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PayoutOnEvmOut" + "$ref": "#/components/schemas/TransferOut" } } - }, - "description": "Payout started with success" + } }, "400": { + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { - "BANK_ACCOUNTS_INCOMPLETE": { - "summary": "BANK_ACCOUNTS_INCOMPLETE", - "value": { - "code": "BANK_ACCOUNTS_INCOMPLETE", - "description": "The bank account details are incomplete for this payment method. Provide the missing fields.", - "errors": [], - "message": "sepa_bank_account_incomplete", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "BLOCKCHAIN_TX_FAILED": { - "summary": "BLOCKCHAIN_TX_FAILED", - "value": { - "code": "BLOCKCHAIN_TX_FAILED", - "description": "The blockchain transaction failed. Try again, and contact support if the problem persists.", - "errors": [], - "message": "transaction_failed", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "CUSTOMERS_COUNTRY_NOT_SUPPORTED": { - "summary": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", - "value": { - "code": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", - "description": "This country is not supported for this operation.", - "errors": [], - "message": "country_not_supported", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "CUSTOMERS_INVALID_PHONE": { - "summary": "CUSTOMERS_INVALID_PHONE", - "value": { - "code": "CUSTOMERS_INVALID_PHONE", - "description": "The phone number provided is not valid. Check the number and try again.", - "errors": [], - "message": "invalid_phone_number", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "CUSTOMERS_INVALID_TAX_ID": { - "summary": "CUSTOMERS_INVALID_TAX_ID", - "value": { - "code": "CUSTOMERS_INVALID_TAX_ID", - "description": "The tax ID provided is not valid. Check the value and try again.", - "errors": [], - "message": "invalid_cpf_or_rg_tax_id", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "CUSTOMERS_ONBOARDING_INCOMPLETE": { - "summary": "CUSTOMERS_ONBOARDING_INCOMPLETE", - "value": { - "code": "CUSTOMERS_ONBOARDING_INCOMPLETE", - "description": "Onboarding is not complete yet. Finish the remaining steps before continuing.", - "errors": [], - "message": "onboarding_incomplete", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "FILES_UNREADABLE": { - "summary": "FILES_UNREADABLE", - "value": { - "code": "FILES_UNREADABLE", - "description": "We could not read the uploaded file. Check the file and try again.", - "errors": [], - "message": "file_download_failed", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "PAYOUTS_AMOUNT_BELOW_MINIMUM": { - "summary": "PAYOUTS_AMOUNT_BELOW_MINIMUM", - "value": { - "code": "PAYOUTS_AMOUNT_BELOW_MINIMUM", - "description": "The amount is below the minimum for this payment rail.", - "errors": [], - "message": "swift_minimum_is_100_usd", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "QUOTES_ALREADY_USED": { - "summary": "QUOTES_ALREADY_USED", - "value": { - "code": "QUOTES_ALREADY_USED", - "description": "This quote was already used. Request a new quote.", - "errors": [], - "message": "quote_already_used", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "QUOTES_EXPIRED": { - "summary": "QUOTES_EXPIRED", - "value": { - "code": "QUOTES_EXPIRED", - "description": "This quote has expired. Request a new quote and try again.", - "errors": [], - "message": "quote_expired", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", - "description": "The request contains invalid fields. Check the errors list for details.", - "errors": [], "message": "validation_failed", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED": { - "summary": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", - "value": { - "code": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", - "description": "Additional documents are required to create this virtual account. Upload the requested documents.", - "errors": [], - "message": "id_doc_front_file_required", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VIRTUAL_ACCOUNTS_NOT_FOUND": { - "summary": "VIRTUAL_ACCOUNTS_NOT_FOUND", - "value": { - "code": "VIRTUAL_ACCOUNTS_NOT_FOUND", - "description": "The requested virtual account was not found.", - "errors": [], - "message": "virtual_account_not_found", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { - "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "value": { - "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", + "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "virtual_account_provision_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `BANK_ACCOUNTS_INCOMPLETE`, `BLOCKCHAIN_TX_FAILED`, `CUSTOMERS_COUNTRY_NOT_SUPPORTED`, `CUSTOMERS_INVALID_PHONE`, `CUSTOMERS_INVALID_TAX_ID`, `CUSTOMERS_ONBOARDING_INCOMPLETE`, `FILES_UNREADABLE`, `PAYOUTS_AMOUNT_BELOW_MINIMUM`, `QUOTES_ALREADY_USED`, `QUOTES_EXPIRED`, `VALIDATION_FAILED`, `VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED`, `VIRTUAL_ACCOUNTS_NOT_FOUND`, `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, - "422": { + "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "examples": { - "CUSTOMERS_INVALID_DATA": { - "summary": "CUSTOMERS_INVALID_DATA", - "value": { - "code": "CUSTOMERS_INVALID_DATA", - "description": "The customer data was rejected by the banking provider. Check the highlighted fields and try again.", - "errors": [], - "message": "invalid_customer_data", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } - }, "schema": { "$ref": "#/components/schemas/Error" - } - } - }, - "description": "Possible error codes: `CUSTOMERS_INVALID_DATA`. See the Error responses section for retry semantics." - }, - "429": { - "content": { - "application/json": { + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { - "FILES_UNREADABLE": { - "summary": "FILES_UNREADABLE", - "value": { - "code": "FILES_UNREADABLE", - "description": "We could not read the uploaded file. Check the file and try again.", - "errors": [], - "message": "file_download_failed", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", - "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", - "errors": [], "message": "internal_error", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { - "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "value": { - "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", - "errors": [], - "message": "virtual_account_provision_failed", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } - }, - "schema": { - "$ref": "#/components/schemas/Error" - } - } - }, - "description": "Possible error codes: `FILES_UNREADABLE`, `INTERNAL_ERROR`, `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics." - }, - "502": { - "content": { - "application/json": { - "examples": { - "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { - "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "value": { - "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", + "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "virtual_account_provision_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics." + } } - }, - "summary": "Create Payout on Stellar", - "tags": [ - "Payouts" - ], - "x-sdk": true + } } }, - "/v1/instances/{instance_id}/payouts/stellar/authorize": { - "post": { + "/v1/instances/{instance_id}/transfers": { + "get": { + "x-sdk": true, + "tags": [ + "Transfers" + ], + "summary": "Retrieve Transfers", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } + "maxLength": 15, + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" }, { - "in": "header", - "name": "Idempotency-Key", + "schema": { + "type": "string", + "enum": [ + "10", + "50", + "100", + "200", + "500", + "1000" + ], + "description": "Number of items to return", + "example": "50" + }, "required": false, + "name": "limit", + "in": "query" + }, + { "schema": { - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "maxLength": 255, - "type": "string" - } + "type": "string", + "enum": [ + "0", + "10", + "50", + "100", + "200", + "500", + "1000" + ], + "description": "Number of items to skip", + "example": "0" + }, + "required": false, + "name": "offset", + "in": "query" + }, + { + "schema": { + "type": "string", + "description": "A cursor for use in pagination. starting_after is an object ID that defines your place in the list.", + "example": "pi_123" + }, + "required": false, + "name": "starting_after", + "in": "query" + }, + { + "schema": { + "type": "string", + "description": "A cursor for use in pagination. ending_before is an object ID that defines your place in the list.", + "example": "pi_123" + }, + "required": false, + "name": "ending_before", + "in": "query" } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PayoutOnStellarAuthorizeIn" - } - } - } - }, "responses": { "200": { + "description": "List transfers", "content": { "application/json": { "schema": { + "type": "object", "properties": { - "transaction_hash": { - "type": "string" + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TransferOut" + } + }, + "pagination": { + "$ref": "#/components/schemas/PaginationMetadata" } }, "required": [ - "transaction_hash" - ], - "type": "object" + "data", + "pagination" + ] } } - }, - "description": "Payout started with success" + } }, "400": { + "description": "Possible error codes: `TRANSFERS_NOT_ENABLED`, `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { - "QUOTES_INVALID_STATE": { - "summary": "QUOTES_INVALID_STATE", + "TRANSFERS_NOT_ENABLED": { + "summary": "TRANSFERS_NOT_ENABLED", "value": { - "code": "QUOTES_INVALID_STATE", - "description": "This quote cannot be authorized in its current state. Request a new quote and try again.", - "errors": [], - "message": "quote_invalid_state", "success": false, + "code": "TRANSFERS_NOT_ENABLED", + "message": "wallets_and_transfers_not_enabled", + "description": "Wallets and transfers are not enabled for this account. Contact support to enable them.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `QUOTES_INVALID_STATE`, `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Authorize Token Stellar", + } + }, + "post": { + "x-sdk": true, "tags": [ - "Payouts" + "Transfers" ], - "x-sdk": true - } - }, - "/v1/instances/{instance_id}/payouts/{id}": { - "get": { + "summary": "Create Transfer", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } + "maxLength": 15, + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" }, { - "in": "path", - "name": "id", - "required": true, "schema": { - "example": "pa_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - } + "type": "string", + "maxLength": 255, + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, + "required": false, + "name": "Idempotency-Key", + "in": "header" } ], + "requestBody": { + "description": "Start transfer", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateTransferIn" + } + } + } + }, "responses": { "200": { + "description": "Transfer started with success", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PayoutOut" + "$ref": "#/components/schemas/CreateTransferOut" } } - }, - "description": "List payouts" + } }, "400": { + "description": "Possible error codes: `BANK_ACCOUNTS_INCOMPLETE`, `BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED`, `BLOCKCHAIN_NETWORK_NOT_SUPPORTED`, `CUSTOMERS_COUNTRY_NOT_SUPPORTED`, `CUSTOMERS_INVALID_PHONE`, `CUSTOMERS_INVALID_TAX_ID`, `FILES_UNREADABLE`, `PAYOUTS_AMOUNT_BELOW_MINIMUM`, `PAYOUTS_INSUFFICIENT_BALANCE`, `QUOTES_EXPIRED`, `QUOTES_RATE_UNAVAILABLE`, `TRANSFERS_NOT_ENABLED`, `VALIDATION_FAILED`, `VALIDATION_MISSING_REQUIRED_FIELDS`, `VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED`, `VIRTUAL_ACCOUNTS_NOT_FOUND`, `VIRTUAL_ACCOUNTS_PROVISION_FAILED`, `VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { + "BANK_ACCOUNTS_INCOMPLETE": { + "summary": "BANK_ACCOUNTS_INCOMPLETE", + "value": { + "success": false, + "code": "BANK_ACCOUNTS_INCOMPLETE", + "message": "sepa_bank_account_incomplete", + "description": "The bank account details are incomplete for this payment method. Provide the missing fields.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED": { + "summary": "BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED", + "value": { + "success": false, + "code": "BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED", + "message": "unsupported_banking_partner", + "description": "This banking option is not supported for this operation.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "BLOCKCHAIN_NETWORK_NOT_SUPPORTED": { + "summary": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", + "value": { + "success": false, + "code": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", + "message": "network_not_supported_on_dev_instance", + "description": "This network or token combination is not supported for this operation.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "CUSTOMERS_COUNTRY_NOT_SUPPORTED": { + "summary": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", + "value": { + "success": false, + "code": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", + "message": "country_not_supported", + "description": "This country is not supported for this operation.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "CUSTOMERS_INVALID_PHONE": { + "summary": "CUSTOMERS_INVALID_PHONE", + "value": { + "success": false, + "code": "CUSTOMERS_INVALID_PHONE", + "message": "invalid_phone_number", + "description": "The phone number provided is not valid. Check the number and try again.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "CUSTOMERS_INVALID_TAX_ID": { + "summary": "CUSTOMERS_INVALID_TAX_ID", + "value": { + "success": false, + "code": "CUSTOMERS_INVALID_TAX_ID", + "message": "invalid_cpf_or_rg_tax_id", + "description": "The tax ID provided is not valid. Check the value and try again.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "FILES_UNREADABLE": { + "summary": "FILES_UNREADABLE", + "value": { + "success": false, + "code": "FILES_UNREADABLE", + "message": "file_download_failed", + "description": "We could not read the uploaded file. Check the file and try again.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "PAYOUTS_AMOUNT_BELOW_MINIMUM": { + "summary": "PAYOUTS_AMOUNT_BELOW_MINIMUM", + "value": { + "success": false, + "code": "PAYOUTS_AMOUNT_BELOW_MINIMUM", + "message": "swift_minimum_is_100_usd", + "description": "The amount is below the minimum for this payment rail.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "PAYOUTS_INSUFFICIENT_BALANCE": { + "summary": "PAYOUTS_INSUFFICIENT_BALANCE", + "value": { + "success": false, + "code": "PAYOUTS_INSUFFICIENT_BALANCE", + "message": "not_enough_balance", + "description": "There is not enough balance to complete this payout. Fund your balance and try again.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "QUOTES_EXPIRED": { + "summary": "QUOTES_EXPIRED", + "value": { + "success": false, + "code": "QUOTES_EXPIRED", + "message": "quote_expired", + "description": "This quote has expired. Request a new quote and try again.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "QUOTES_RATE_UNAVAILABLE": { + "summary": "QUOTES_RATE_UNAVAILABLE", + "value": { + "success": false, + "code": "QUOTES_RATE_UNAVAILABLE", + "message": "fx_rate_unavailable", + "description": "An exchange rate is temporarily unavailable. Try again shortly.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "TRANSFERS_NOT_ENABLED": { + "summary": "TRANSFERS_NOT_ENABLED", + "value": { + "success": false, + "code": "TRANSFERS_NOT_ENABLED", + "message": "wallets_and_transfers_not_enabled", + "description": "Wallets and transfers are not enabled for this account. Contact support to enable them.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VALIDATION_MISSING_REQUIRED_FIELDS": { + "summary": "VALIDATION_MISSING_REQUIRED_FIELDS", + "value": { + "success": false, + "code": "VALIDATION_MISSING_REQUIRED_FIELDS", + "message": "missing_required_fields", + "description": "Required fields are missing. Provide the missing fields and try again.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED": { + "summary": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", + "value": { + "success": false, + "code": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", + "message": "id_doc_front_file_required", + "description": "Additional documents are required to create this virtual account. Upload the requested documents.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VIRTUAL_ACCOUNTS_NOT_FOUND": { + "summary": "VIRTUAL_ACCOUNTS_NOT_FOUND", + "value": { + "success": false, + "code": "VIRTUAL_ACCOUNTS_NOT_FOUND", + "message": "virtual_account_not_found", + "description": "The requested virtual account was not found.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { + "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "value": { + "success": false, + "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "message": "virtual_account_provision_failed", + "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED": { + "summary": "VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED", + "value": { "success": false, + "code": "VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED", + "message": "us_state_not_supported", + "description": "Virtual accounts are not available for this country or region.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "404": { + "description": "Possible error codes: `WALLETS_NOT_FOUND`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { - "PAYOUTS_NOT_FOUND": { - "summary": "PAYOUTS_NOT_FOUND", + "WALLETS_NOT_FOUND": { + "summary": "WALLETS_NOT_FOUND", "value": { - "code": "PAYOUTS_NOT_FOUND", - "description": "The requested payout was not found.", - "errors": [], - "message": "payout_not_found", "success": false, + "code": "WALLETS_NOT_FOUND", + "message": "wallet_not_found", + "description": "The requested wallet was not found.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, + } + } + } + }, + "422": { + "description": "Possible error codes: `CUSTOMERS_INVALID_DATA`. See the Error responses section for retry semantics.", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/Error" + }, + "examples": { + "CUSTOMERS_INVALID_DATA": { + "summary": "CUSTOMERS_INVALID_DATA", + "value": { + "success": false, + "code": "CUSTOMERS_INVALID_DATA", + "message": "invalid_customer_data", + "description": "The customer data was rejected by the banking provider. Check the highlighted fields and try again.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } } } - }, - "description": "Possible error codes: `PAYOUTS_NOT_FOUND`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `FILES_UNREADABLE`, `INTERNAL_ERROR`, `QUOTES_RATE_UNAVAILABLE`, `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { + "FILES_UNREADABLE": { + "summary": "FILES_UNREADABLE", + "value": { + "success": false, + "code": "FILES_UNREADABLE", + "message": "file_download_failed", + "description": "We could not read the uploaded file. Check the file and try again.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "QUOTES_RATE_UNAVAILABLE": { + "summary": "QUOTES_RATE_UNAVAILABLE", + "value": { + "success": false, + "code": "QUOTES_RATE_UNAVAILABLE", + "message": "fx_rate_unavailable", + "description": "An exchange rate is temporarily unavailable. Try again shortly.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { + "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "value": { "success": false, + "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "message": "virtual_account_provision_failed", + "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } + } + } + } + }, + "502": { + "description": "Possible error codes: `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" }, + "examples": { + "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { + "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "value": { + "success": false, + "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "message": "virtual_account_provision_failed", + "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } + } + } + } + }, + "503": { + "description": "Possible error codes: `QUOTES_RATE_UNAVAILABLE`. See the Error responses section for retry semantics.", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/Error" + }, + "examples": { + "QUOTES_RATE_UNAVAILABLE": { + "summary": "QUOTES_RATE_UNAVAILABLE", + "value": { + "success": false, + "code": "QUOTES_RATE_UNAVAILABLE", + "message": "fx_rate_unavailable", + "description": "An exchange rate is temporarily unavailable. Try again shortly.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Retrieve Payout", - "tags": [ - "Payouts" - ], - "x-sdk": true + } } }, - "/v1/instances/{instance_id}/payouts/{id}/documents": { + "/v1/instances/{instance_id}/webhook-endpoints": { "post": { - "description": "Submit compliance documents for SWIFT payouts requiring review. Includes optional payment description.", + "x-sdk": true, + "tags": [ + "Webhook Endpoints" + ], + "summary": "Register Webhook", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } - }, - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "example": "pa_000000000000", "maxLength": 15, - "minLength": 15, - "type": "string" - } + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" }, { - "in": "header", - "name": "Idempotency-Key", - "required": false, "schema": { - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "type": "string", "maxLength": 255, - "type": "string" - } + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, + "required": false, + "name": "Idempotency-Key", + "in": "header" } ], "requestBody": { + "description": "Create a new webhook endpoint", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SubmitPayoutDocumentsIn" + "$ref": "#/components/schemas/WebhookEndpointIn" } } - }, - "description": "Document details and optional payment description" + } }, "responses": { "200": { + "description": "Create webhook endpoint", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Success" + "$ref": "#/components/schemas/WebhookEndpointOut" } } - }, - "description": "Documents submitted successfully" + } }, "400": { + "description": "Possible error codes: `VALIDATION_FAILED`, `WEBHOOKS_LIMIT_REACHED`, `WEBHOOKS_URL_INVALID`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { - "FILES_UNREADABLE": { - "summary": "FILES_UNREADABLE", + "VALIDATION_FAILED": { + "summary": "VALIDATION_FAILED", "value": { - "code": "FILES_UNREADABLE", - "description": "We could not read the uploaded file. Check the file and try again.", - "errors": [], - "message": "file_download_failed", "success": false, + "code": "VALIDATION_FAILED", + "message": "validation_failed", + "description": "The request contains invalid fields. Check the errors list for details.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "PAYOUTS_DOCUMENTS_NOT_ACCEPTED": { - "summary": "PAYOUTS_DOCUMENTS_NOT_ACCEPTED", + "WEBHOOKS_LIMIT_REACHED": { + "summary": "WEBHOOKS_LIMIT_REACHED", "value": { - "code": "PAYOUTS_DOCUMENTS_NOT_ACCEPTED", - "description": "Document upload is only available for international wire payouts.", - "errors": [], - "message": "document_upload_only_for_swift_payouts", "success": false, + "code": "WEBHOOKS_LIMIT_REACHED", + "message": "webhook_endpoint_limit_reached", + "description": "You reached the maximum number of webhook endpoints.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "VALIDATION_FAILED": { - "summary": "VALIDATION_FAILED", + "WEBHOOKS_URL_INVALID": { + "summary": "WEBHOOKS_URL_INVALID", "value": { - "code": "VALIDATION_FAILED", - "description": "The request contains invalid fields. Check the errors list for details.", - "errors": [], - "message": "validation_failed", "success": false, + "code": "WEBHOOKS_URL_INVALID", + "message": "webhook_url_invalid", + "description": "The webhook URL is not valid. Use a reachable HTTPS URL.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `FILES_UNREADABLE`, `PAYOUTS_DOCUMENTS_NOT_ACCEPTED`, `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, - "404": { + "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "examples": { - "PAYOUTS_NOT_FOUND": { - "summary": "PAYOUTS_NOT_FOUND", - "value": { - "code": "PAYOUTS_NOT_FOUND", - "description": "The requested payout was not found.", - "errors": [], - "message": "payout_not_found", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } - }, "schema": { "$ref": "#/components/schemas/Error" - } - } - }, - "description": "Possible error codes: `PAYOUTS_NOT_FOUND`. See the Error responses section for retry semantics." - }, - "429": { - "content": { - "application/json": { + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { - "FILES_UNREADABLE": { - "summary": "FILES_UNREADABLE", - "value": { - "code": "FILES_UNREADABLE", - "description": "We could not read the uploaded file. Check the file and try again.", - "errors": [], - "message": "file_download_failed", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `FILES_UNREADABLE`, `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Submit Payout Documents", + } + }, + "get": { + "x-sdk": true, "tags": [ - "Payouts" + "Webhook Endpoints" ], - "x-sdk": true - } - }, - "/v1/instances/{instance_id}/prepare-delegate-solana": { - "post": { - "description": "Prepares a delegation transaction for Solana token transfers. You can either provide a `quote_id` (recommended) to automatically use the correct token amount and address from the quote, or manually provide `owner_address`, `token_address`, and `amount`.", + "summary": "Retrieve Webhooks", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } - }, - { - "in": "header", - "name": "Idempotency-Key", - "required": false, - "schema": { - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "maxLength": 255, - "type": "string" - } + "maxLength": 15, + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "amount": { - "description": "The token amount to delegate in USDC/USDT units (e.g., \"10.5\" for 10.5 USDC). Required if quote_id is not provided. Note: This should be the TOKEN amount, not the local currency amount.", - "example": "10.5", - "type": "string" - }, - "owner_address": { - "description": "The Solana wallet address that owns the tokens", - "example": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", - "type": "string" - }, - "quote_id": { - "description": "The quote ID. When provided, the API will automatically use the sender_amount and token_address from the quote. This is the recommended approach.", - "example": "qu_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - }, - "token_address": { - "description": "The SPL token mint address. Required if quote_id is not provided.", - "example": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", - "type": "string" - } - }, - "required": [ - "owner_address" - ], - "type": "object" - } - } - } - }, "responses": { "200": { + "description": "Get webhook endpoints", "content": { "application/json": { "schema": { - "properties": { - "debug": {}, - "success": { - "type": "boolean" - }, - "transaction": { - "type": "string" - } - }, - "required": [ - "success" - ], - "type": "object" + "type": "array", + "items": { + "$ref": "#/components/schemas/WebhookEndpoint" + } } } - }, - "description": "Prepare delegation transaction" + } }, "400": { + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { - "BLOCKCHAIN_NETWORK_NOT_SUPPORTED": { - "summary": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", - "value": { - "code": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", - "description": "This network or token combination is not supported for this operation.", - "errors": [], - "message": "network_not_supported_on_dev_instance", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "QUOTES_EXPIRED": { - "summary": "QUOTES_EXPIRED", - "value": { - "code": "QUOTES_EXPIRED", - "description": "This quote has expired. Request a new quote and try again.", - "errors": [], - "message": "quote_expired", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", - "description": "The request contains invalid fields. Check the errors list for details.", - "errors": [], "message": "validation_failed", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VALIDATION_MISSING_REQUIRED_FIELDS": { - "summary": "VALIDATION_MISSING_REQUIRED_FIELDS", - "value": { - "code": "VALIDATION_MISSING_REQUIRED_FIELDS", - "description": "Required fields are missing. Provide the missing fields and try again.", + "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "missing_required_fields", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `BLOCKCHAIN_NETWORK_NOT_SUPPORTED`, `QUOTES_EXPIRED`, `VALIDATION_FAILED`, `VALIDATION_MISSING_REQUIRED_FIELDS`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, - "404": { + "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "examples": { - "QUOTES_NOT_FOUND": { - "summary": "QUOTES_NOT_FOUND", - "value": { - "code": "QUOTES_NOT_FOUND", - "description": "The requested quote was not found.", - "errors": [], - "message": "quote_not_found", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } - }, "schema": { "$ref": "#/components/schemas/Error" - } - } - }, - "description": "Possible error codes: `QUOTES_NOT_FOUND`. See the Error responses section for retry semantics." - }, - "429": { - "content": { - "application/json": { + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Prepare Solana Delegate", - "tags": [ - "Solana" - ], - "x-sdk": true + } } }, - "/v1/instances/{instance_id}/quotes": { - "post": { + "/v1/instances/{instance_id}/webhook-endpoints/{id}": { + "delete": { + "x-sdk": true, + "tags": [ + "Webhook Endpoints" + ], + "summary": "Remove Webhook", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", + "type": "string", + "minLength": 15, "maxLength": 15, + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" + }, + { + "schema": { + "type": "string", "minLength": 15, - "type": "string" - } + "maxLength": 15, + "example": "we_000000000000" + }, + "required": true, + "name": "id", + "in": "path" }, { - "in": "header", - "name": "Idempotency-Key", - "required": false, "schema": { - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "type": "string", "maxLength": 255, - "type": "string" - } + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, + "required": false, + "name": "Idempotency-Key", + "in": "header" } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/QuoteIn" - } - } - }, - "description": "Create a new quote" - }, "responses": { "200": { + "description": "Delete webhook endpoint", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/QuoteOut" + "$ref": "#/components/schemas/Success" } } - }, - "description": "Quote creation details" - }, - "400": { - "content": { - "application/json": { - "examples": { - "BANK_ACCOUNTS_INCOMPLETE": { - "summary": "BANK_ACCOUNTS_INCOMPLETE", - "value": { - "code": "BANK_ACCOUNTS_INCOMPLETE", - "description": "The bank account details are incomplete for this payment method. Provide the missing fields.", - "errors": [], - "message": "sepa_bank_account_incomplete", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "BANK_ACCOUNTS_NOT_APPROVED": { - "summary": "BANK_ACCOUNTS_NOT_APPROVED", - "value": { - "code": "BANK_ACCOUNTS_NOT_APPROVED", - "description": "This bank account is not approved yet.", - "errors": [], - "message": "bank_account_not_approved", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "BLOCKCHAIN_NETWORK_NOT_SUPPORTED": { - "summary": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", - "value": { - "code": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", - "description": "This network or token combination is not supported for this operation.", - "errors": [], - "message": "network_not_supported_on_dev_instance", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "CUSTOMERS_COUNTRY_NOT_SUPPORTED": { - "summary": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", - "value": { - "code": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", - "description": "This country is not supported for this operation.", - "errors": [], - "message": "country_not_supported", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "CUSTOMERS_KYC_NOT_APPROVED": { - "summary": "CUSTOMERS_KYC_NOT_APPROVED", - "value": { - "code": "CUSTOMERS_KYC_NOT_APPROVED", - "description": "This customer has not completed verification yet. Complete the verification before continuing.", - "errors": [], - "message": "kyc_not_approved", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "FEES_PARTNER_FEE_EXCEEDED": { - "summary": "FEES_PARTNER_FEE_EXCEEDED", - "value": { - "code": "FEES_PARTNER_FEE_EXCEEDED", - "description": "The partner fee exceeds the allowed maximum for this transaction.", - "errors": [], - "message": "partner_fee_exceeded", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "FILES_UNREADABLE": { - "summary": "FILES_UNREADABLE", - "value": { - "code": "FILES_UNREADABLE", - "description": "We could not read the uploaded file. Check the file and try again.", - "errors": [], - "message": "file_download_failed", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "LIMITS_AMOUNT_OUT_OF_RANGE": { - "summary": "LIMITS_AMOUNT_OUT_OF_RANGE", - "value": { - "code": "LIMITS_AMOUNT_OUT_OF_RANGE", - "description": "The amount is outside the allowed range. The message includes the allowed range.", - "errors": [], - "message": "limits_amount_out_of_range", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "LIMITS_VOLUME_EXCEEDED": { - "summary": "LIMITS_VOLUME_EXCEEDED", - "value": { - "code": "LIMITS_VOLUME_EXCEEDED", - "description": "You exceeded your transaction volume limit. The message includes the remaining amount available.", - "errors": [], - "message": "limits_volume_exceeded", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "PAYOUTS_AMOUNT_BELOW_MINIMUM": { - "summary": "PAYOUTS_AMOUNT_BELOW_MINIMUM", - "value": { - "code": "PAYOUTS_AMOUNT_BELOW_MINIMUM", - "description": "The amount is below the minimum for this payment rail.", - "errors": [], - "message": "swift_minimum_is_100_usd", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "QUOTES_RATE_UNAVAILABLE": { - "summary": "QUOTES_RATE_UNAVAILABLE", - "value": { - "code": "QUOTES_RATE_UNAVAILABLE", - "description": "An exchange rate is temporarily unavailable. Try again shortly.", - "errors": [], - "message": "fx_rate_unavailable", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "TOS_NOT_ACCEPTED": { - "summary": "TOS_NOT_ACCEPTED", - "value": { - "code": "TOS_NOT_ACCEPTED", - "description": "The terms of service must be accepted before continuing.", - "errors": [], - "message": "please_accept_terms_of_service", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, + } + }, + "400": { + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, + "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", - "description": "The request contains invalid fields. Check the errors list for details.", - "errors": [], "message": "validation_failed", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VIRTUAL_ACCOUNTS_NOT_APPROVED": { - "summary": "VIRTUAL_ACCOUNTS_NOT_APPROVED", - "value": { - "code": "VIRTUAL_ACCOUNTS_NOT_APPROVED", - "description": "This virtual account is not approved yet.", - "errors": [], - "message": "virtual_account_not_approved", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VIRTUAL_ACCOUNTS_NOT_FOUND": { - "summary": "VIRTUAL_ACCOUNTS_NOT_FOUND", - "value": { - "code": "VIRTUAL_ACCOUNTS_NOT_FOUND", - "description": "The requested virtual account was not found.", + "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "virtual_account_not_found", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `BANK_ACCOUNTS_INCOMPLETE`, `BANK_ACCOUNTS_NOT_APPROVED`, `BLOCKCHAIN_NETWORK_NOT_SUPPORTED`, `CUSTOMERS_COUNTRY_NOT_SUPPORTED`, `CUSTOMERS_KYC_NOT_APPROVED`, `FEES_PARTNER_FEE_EXCEEDED`, `FILES_UNREADABLE`, `LIMITS_AMOUNT_OUT_OF_RANGE`, `LIMITS_VOLUME_EXCEEDED`, `PAYOUTS_AMOUNT_BELOW_MINIMUM`, `QUOTES_RATE_UNAVAILABLE`, `TOS_NOT_ACCEPTED`, `VALIDATION_FAILED`, `VIRTUAL_ACCOUNTS_NOT_APPROVED`, `VIRTUAL_ACCOUNTS_NOT_FOUND`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, - "404": { + "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { - "BANK_ACCOUNTS_NOT_FOUND": { - "summary": "BANK_ACCOUNTS_NOT_FOUND", + "AUTH_RATE_LIMITED": { + "summary": "AUTH_RATE_LIMITED", "value": { - "code": "BANK_ACCOUNTS_NOT_FOUND", - "description": "The requested bank account was not found.", - "errors": [], - "message": "bank_account_not_found", "success": false, + "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", + "description": "Too many requests. Wait a moment and try again.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } - }, - "CUSTOMERS_NOT_FOUND": { - "summary": "CUSTOMERS_NOT_FOUND", + } + } + } + } + }, + "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, + "examples": { + "INTERNAL_ERROR": { + "summary": "INTERNAL_ERROR", "value": { - "code": "CUSTOMERS_NOT_FOUND", - "description": "The requested customer was not found.", - "errors": [], - "message": "customer_not_found", "success": false, + "code": "INTERNAL_ERROR", + "message": "internal_error", + "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } + } + } + } + } + } + } + } + }, + "/v1/instances/{instance_id}/webhook-endpoints/{id}/secret": { + "get": { + "x-sdk": true, + "tags": [ + "Webhook Endpoints" + ], + "summary": "Retrieve Webhook Secret", + "parameters": [ + { + "schema": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" + }, + { + "schema": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "we_000000000000" + }, + "required": true, + "name": "id", + "in": "path" + } + ], + "responses": { + "200": { + "description": "Get webhook endpoint secret", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "key": { + "type": "string", + "example": "whsec_000000000000" + } }, - "FEES_NOT_FOUND": { - "summary": "FEES_NOT_FOUND", + "required": [ + "key" + ] + } + } + } + }, + "400": { + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, + "examples": { + "VALIDATION_FAILED": { + "summary": "VALIDATION_FAILED", "value": { - "code": "FEES_NOT_FOUND", - "description": "The requested fee configuration was not found.", - "errors": [], - "message": "partner_fee_not_found", "success": false, + "code": "VALIDATION_FAILED", + "message": "validation_failed", + "description": "The request contains invalid fields. Check the errors list for details.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } - }, - "INSTANCES_NOT_FOUND": { - "summary": "INSTANCES_NOT_FOUND", + } + } + } + } + }, + "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, + "examples": { + "AUTH_UNAUTHORIZED": { + "summary": "AUTH_UNAUTHORIZED", "value": { - "code": "INSTANCES_NOT_FOUND", - "description": "The requested instance was not found.", - "errors": [], - "message": "instance_not_found", "success": false, + "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", + "description": "Authentication failed. Check your API key or session and try again.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, + } + } + } + }, + "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/Error" + }, + "examples": { + "AUTH_FORBIDDEN": { + "summary": "AUTH_FORBIDDEN", + "value": { + "success": false, + "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", + "description": "You do not have permission to perform this action.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } } } - }, - "description": "Possible error codes: `BANK_ACCOUNTS_NOT_FOUND`, `CUSTOMERS_NOT_FOUND`, `FEES_NOT_FOUND`, `INSTANCES_NOT_FOUND`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { - "FILES_UNREADABLE": { - "summary": "FILES_UNREADABLE", - "value": { - "code": "FILES_UNREADABLE", - "description": "We could not read the uploaded file. Check the file and try again.", - "errors": [], - "message": "file_download_failed", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } + } + } + } + } + }, + "/v1/instances/{instance_id}/webhook-endpoints/portal-access": { + "get": { + "x-sdk": true, + "tags": [ + "Webhook Endpoints" + ], + "summary": "Retrieve Webhook Portal Access", + "parameters": [ + { + "schema": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "in_000000000000" }, - "description": "Possible error codes: `FILES_UNREADABLE`, `INTERNAL_ERROR`. See the Error responses section for retry semantics." + "required": true, + "name": "instance_id", + "in": "path" + } + ], + "responses": { + "200": { + "description": "Get webhook portal access url", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PortalAccessOut" + } + } + } }, - "503": { + "400": { + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { - "QUOTES_RATE_UNAVAILABLE": { - "summary": "QUOTES_RATE_UNAVAILABLE", + "VALIDATION_FAILED": { + "summary": "VALIDATION_FAILED", "value": { - "code": "QUOTES_RATE_UNAVAILABLE", - "description": "An exchange rate is temporarily unavailable. Try again shortly.", - "errors": [], - "message": "fx_rate_unavailable", "success": false, + "code": "VALIDATION_FAILED", + "message": "validation_failed", + "description": "The request contains invalid fields. Check the errors list for details.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `QUOTES_RATE_UNAVAILABLE`. See the Error responses section for retry semantics." - } - }, - "summary": "Create Quote", - "tags": [ - "Payouts Quotes" - ], - "x-sdk": true - } - }, - "/v1/instances/{instance_id}/quotes/fx": { - "post": { - "parameters": [ - { - "in": "path", - "name": "instance_id", - "required": true, - "schema": { - "example": "in_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" } }, - { - "in": "header", - "name": "Idempotency-Key", - "required": false, - "schema": { - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "maxLength": 255, - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "currency_type": { - "description": "", - "enum": [ - "sender", - "receiver" - ], - "example": "sender", - "type": "string" - }, - "from": { - "enum": [ - "USDC", - "USDT", - "USDB" - ], - "example": "USDC", - "type": "string" - }, - "request_amount": { - "description": "1000 represents 10.00, 2050 represents 20.50", - "example": 1000, - "minimum": 500, - "type": "integer" - }, - "to": { - "enum": [ - "BRL", - "USD", - "MXN", - "COP", - "ARS", - "EUR" - ], - "example": "BRL", - "type": "string" - } + "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" }, - "required": [ - "from", - "to", - "request_amount", - "currency_type" - ], - "type": "object" + "examples": { + "AUTH_UNAUTHORIZED": { + "summary": "AUTH_UNAUTHORIZED", + "value": { + "success": false, + "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", + "description": "Authentication failed. Check your API key or session and try again.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } + } } } }, - "description": "Check FX rate" - }, - "responses": { - "200": { + "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { "schema": { - "properties": { - "blindpay_quotation": { - "description": "1 USD = 4.85 BRL (commercial quotation - (blindpay taxes))", - "example": 485, - "type": [ - "number", - "null" - ] - }, - "commercial_quotation": { - "description": "1 USD = 4.95 BRL", - "example": 495, - "type": [ - "number", - "null" - ] - }, - "instance_flat_fee": { - "description": "0.5 USDC", - "example": 50, - "type": [ - "number", - "null" - ] - }, - "instance_percentage_fee": { - "maximum": 10000, - "minimum": 0, - "type": "number" - }, - "result_amount": { - "minimum": 1, - "type": "number" + "$ref": "#/components/schemas/Error" + }, + "examples": { + "AUTH_FORBIDDEN": { + "summary": "AUTH_FORBIDDEN", + "value": { + "success": false, + "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", + "description": "You do not have permission to perform this action.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" } - }, - "required": [ - "commercial_quotation", - "blindpay_quotation", - "result_amount", - "instance_percentage_fee" - ], - "type": "object" + } } } - }, - "description": "Check FX rate response" + } }, - "400": { + "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { - "BANK_ACCOUNTS_INCOMPLETE": { - "summary": "BANK_ACCOUNTS_INCOMPLETE", + "AUTH_RATE_LIMITED": { + "summary": "AUTH_RATE_LIMITED", "value": { - "code": "BANK_ACCOUNTS_INCOMPLETE", - "description": "The bank account details are incomplete for this payment method. Provide the missing fields.", - "errors": [], - "message": "sepa_bank_account_incomplete", "success": false, + "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", + "description": "Too many requests. Wait a moment and try again.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } - }, - "QUOTES_RATE_UNAVAILABLE": { - "summary": "QUOTES_RATE_UNAVAILABLE", + } + } + } + } + }, + "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, + "examples": { + "INTERNAL_ERROR": { + "summary": "INTERNAL_ERROR", "value": { - "code": "QUOTES_RATE_UNAVAILABLE", - "description": "An exchange rate is temporarily unavailable. Try again shortly.", - "errors": [], - "message": "fx_rate_unavailable", "success": false, + "code": "INTERNAL_ERROR", + "message": "internal_error", + "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } - }, + } + } + } + } + } + } + } + }, + "/v1/instances/{instance_id}/billing/fees": { + "get": { + "x-sdk": true, + "tags": [ + "Fees" + ], + "summary": "Get Instance Fees", + "description": "Get all fees for an instance, sorted by payment method (fiat first, then blockchain)", + "parameters": [ + { + "schema": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "description": "Instance id", + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" + } + ], + "responses": { + "200": { + "description": "Instance fees retrieved and sorted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetFeesOut" + } + } + } + }, + "400": { + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, + "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `BANK_ACCOUNTS_INCOMPLETE`, `QUOTES_RATE_UNAVAILABLE`, `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "User not allowed", "content": { "application/json": { - "examples": { - "AUTH_FORBIDDEN": { - "summary": "AUTH_FORBIDDEN", - "value": { - "code": "AUTH_FORBIDDEN", - "description": "You do not have permission to perform this action.", - "errors": [], - "message": "user_not_allowed", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" + "schema": { + "type": "object", + "properties": { + "message": { + "type": "string" } - } - }, + }, + "required": [ + "message" + ] + } + } + } + }, + "404": { + "description": "Instance not found", + "content": { + "application/json": { "schema": { - "$ref": "#/components/schemas/Error" + "type": "object", + "properties": { + "message": { + "type": "string" + } + }, + "required": [ + "message" + ] } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", - "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", - "errors": [], "message": "internal_error", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } - }, - "schema": { - "$ref": "#/components/schemas/Error" - } - } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." - }, - "503": { - "content": { - "application/json": { - "examples": { - "QUOTES_RATE_UNAVAILABLE": { - "summary": "QUOTES_RATE_UNAVAILABLE", - "value": { - "code": "QUOTES_RATE_UNAVAILABLE", - "description": "An exchange rate is temporarily unavailable. Try again shortly.", + "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "fx_rate_unavailable", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `QUOTES_RATE_UNAVAILABLE`. See the Error responses section for retry semantics." + } } - }, - "summary": "Get FX Rate", - "tags": [ - "Payouts Quotes" - ], - "x-sdk": true + } } }, - "/v1/instances/{instance_id}/rfi": { - "get": { - "description": "Returns the open (pending) RFI for this instance, or null if the instance has no pending RFI.", + "/v1/instances/{instance_id}/partner-fees": { + "post": { + "x-sdk": true, + "tags": [ + "Partner Fees" + ], + "summary": "Add Partner Fee", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } + "maxLength": 15, + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" + }, + { + "schema": { + "type": "string", + "maxLength": 255, + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, + "required": false, + "name": "Idempotency-Key", + "in": "header" } ], + "requestBody": { + "description": "Create a new blockchain wallet", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "example": "Display Name" + }, + "payout_percentage_fee": { + "type": "number", + "minimum": 0, + "maximum": 1000 + }, + "payout_flat_fee": { + "type": "number", + "minimum": 0, + "maximum": 100000 + }, + "payin_percentage_fee": { + "type": "number", + "minimum": 0, + "maximum": 1000 + }, + "payin_flat_fee": { + "type": "number", + "minimum": 0, + "maximum": 100000 + }, + "virtual_account_set": { + "type": [ + "boolean", + "null" + ], + "default": false, + "example": false + } + }, + "required": [ + "name", + "payout_percentage_fee", + "payout_flat_fee", + "payin_percentage_fee", + "payin_flat_fee" + ] + } + } + } + }, "responses": { "200": { + "description": "Add blockchain wallet", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/InstanceRfi" + "type": "object", + "properties": { + "id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "fe_000000000000" + }, + "instance_id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "in_000000000000" + }, + "name": { + "type": "string", + "example": "Display Name" + }, + "payout_percentage_fee": { + "type": "number", + "minimum": 0, + "maximum": 1000 + }, + "payout_flat_fee": { + "type": "number", + "minimum": 0, + "maximum": 100000 + }, + "payin_percentage_fee": { + "type": "number", + "minimum": 0, + "maximum": 1000 + }, + "payin_flat_fee": { + "type": "number", + "minimum": 0, + "maximum": 100000 + } + }, + "required": [ + "id", + "instance_id", + "name", + "payout_percentage_fee", + "payout_flat_fee", + "payin_percentage_fee", + "payin_flat_fee" + ] } } - }, - "description": "Open instance RFI, or null if none" + } }, "400": { + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { - "COMPLIANCE_RFI_INVALID": { - "summary": "COMPLIANCE_RFI_INVALID", - "value": { - "code": "COMPLIANCE_RFI_INVALID", - "description": "The information request could not be processed. Check the submitted fields.", - "errors": [], - "message": "rfi_request_corrupt", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `COMPLIANCE_RFI_INVALID`, `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Get Open RFI for Instance", + } + }, + "get": { + "x-sdk": true, "tags": [ - "Instances" + "Partner Fees" ], - "x-sdk": true - }, - "post": { - "description": "Submit a flat response object for the open instance RFI. Standalone: submitting does not change any instance or onboarding status. Returns `{ success: false, reason }` when no pending RFI exists, callers should refetch the RFI state instead of retrying.", + "summary": "Retrieve Partner Fees", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } + "maxLength": 15, + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "additionalProperties": {}, - "type": "object" - } - } - } - }, "responses": { "200": { + "description": "Get blockchain wallets", "content": { "application/json": { "schema": { - "anyOf": [ - { - "properties": { - "success": { - "enum": [ - true - ], - "type": "boolean" - } + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "fe_000000000000" }, - "required": [ - "success" - ], - "type": "object" - }, - { - "properties": { - "reason": { - "enum": [ - "no_pending_rfi", - "already_resolved" - ], - "type": "string" - }, - "success": { - "enum": [ - false - ], - "type": "boolean" - } + "instance_id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "in_000000000000" }, - "required": [ - "success", - "reason" - ], - "type": "object" - } - ] + "name": { + "type": "string", + "example": "Display Name" + }, + "payout_percentage_fee": { + "type": "number", + "minimum": 0, + "maximum": 1000 + }, + "payout_flat_fee": { + "type": "number", + "minimum": 0, + "maximum": 100000 + }, + "payin_percentage_fee": { + "type": "number", + "minimum": 0, + "maximum": 1000 + }, + "payin_flat_fee": { + "type": "number", + "minimum": 0, + "maximum": 100000 + } + }, + "required": [ + "id", + "instance_id", + "name", + "payout_percentage_fee", + "payout_flat_fee", + "payin_percentage_fee", + "payin_flat_fee" + ] + } } } - }, - "description": "RFI submitted (success: true) or rejected because no pending RFI exists (success: false)" + } }, "400": { + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { - "COMPLIANCE_RFI_INVALID": { - "summary": "COMPLIANCE_RFI_INVALID", - "value": { - "code": "COMPLIANCE_RFI_INVALID", - "description": "The information request could not be processed. Check the submitted fields.", - "errors": [], - "message": "rfi_request_corrupt", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `COMPLIANCE_RFI_INVALID`, `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Submit Instance RFI Response", - "tags": [ - "Instances" - ], - "x-sdk": true + } } }, - "/v1/instances/{instance_id}/transfer-quotes": { - "post": { + "/v1/instances/{instance_id}/partner-fees/{id}": { + "get": { + "x-sdk": true, + "tags": [ + "Partner Fees" + ], + "summary": "Retrieve Partner Fee", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } + "maxLength": 15, + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" }, { - "in": "header", - "name": "Idempotency-Key", - "required": false, "schema": { - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "maxLength": 255, - "type": "string" - } + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "fe_000000000000" + }, + "required": true, + "name": "id", + "in": "path" } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateTransferQuoteIn" - } - } - }, - "description": "Create a new quote" - }, "responses": { "200": { + "description": "Get blockchain wallets", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateTransferQuoteOut" + "type": "object", + "properties": { + "id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "fe_000000000000" + }, + "instance_id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "in_000000000000" + }, + "name": { + "type": "string", + "example": "Display Name" + }, + "payout_percentage_fee": { + "type": "number", + "minimum": 0, + "maximum": 1000 + }, + "payout_flat_fee": { + "type": "number", + "minimum": 0, + "maximum": 100000 + }, + "payin_percentage_fee": { + "type": "number", + "minimum": 0, + "maximum": 1000 + }, + "payin_flat_fee": { + "type": "number", + "minimum": 0, + "maximum": 100000 + } + }, + "required": [ + "id", + "instance_id", + "name", + "payout_percentage_fee", + "payout_flat_fee", + "payin_percentage_fee", + "payin_flat_fee" + ] } } - }, - "description": "Transfer Quote creation details" + } }, "400": { + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { - "BLOCKCHAIN_NETWORK_NOT_SUPPORTED": { - "summary": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", - "value": { - "code": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", - "description": "This network or token combination is not supported for this operation.", - "errors": [], - "message": "network_not_supported_on_dev_instance", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "CUSTOMERS_KYC_NOT_APPROVED": { - "summary": "CUSTOMERS_KYC_NOT_APPROVED", - "value": { - "code": "CUSTOMERS_KYC_NOT_APPROVED", - "description": "This customer has not completed verification yet. Complete the verification before continuing.", - "errors": [], - "message": "kyc_not_approved", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `BLOCKCHAIN_NETWORK_NOT_SUPPORTED`, `CUSTOMERS_KYC_NOT_APPROVED`, `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Create Transfer Quote", + } + }, + "delete": { + "x-sdk": true, "tags": [ - "Transfer Quotes" + "Partner Fees" ], - "x-sdk": true - } - }, - "/v1/instances/{instance_id}/transfers": { - "get": { + "summary": "Remove Partner Fee", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } - }, - { - "in": "query", - "name": "limit", - "required": false, - "schema": { - "description": "Number of items to return", - "enum": [ - "10", - "50", - "100", - "200", - "500", - "1000" - ], - "example": "50", - "type": "string" - } + "maxLength": 15, + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" }, { - "in": "query", - "name": "offset", - "required": false, "schema": { - "description": "Number of items to skip", - "enum": [ - "0", - "10", - "50", - "100", - "200", - "500", - "1000" - ], - "example": "0", - "type": "string" - } + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "fe_000000000000" + }, + "required": true, + "name": "id", + "in": "path" }, { - "in": "query", - "name": "starting_after", - "required": false, "schema": { - "description": "A cursor for use in pagination. starting_after is an object ID that defines your place in the list.", - "example": "pi_123", - "type": "string" - } - }, - { - "in": "query", - "name": "ending_before", + "type": "string", + "maxLength": 255, + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, "required": false, - "schema": { - "description": "A cursor for use in pagination. ending_before is an object ID that defines your place in the list.", - "example": "pi_123", - "type": "string" - } + "name": "Idempotency-Key", + "in": "header" } ], "responses": { "200": { + "description": "Delete blockchain wallet", "content": { "application/json": { "schema": { - "properties": { - "data": { - "items": { - "$ref": "#/components/schemas/TransferOut" - }, - "type": "array" - }, - "pagination": { - "$ref": "#/components/schemas/PaginationMetadata" - } - }, - "required": [ - "data", - "pagination" - ], - "type": "object" + "$ref": "#/components/schemas/Success" } } - }, - "description": "List transfers" + } }, "400": { + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { - "TRANSFERS_NOT_ENABLED": { - "summary": "TRANSFERS_NOT_ENABLED", - "value": { - "code": "TRANSFERS_NOT_ENABLED", - "description": "Wallets and transfers are not enabled for this account. Contact support to enable them.", - "errors": [], - "message": "wallets_and_transfers_not_enabled", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `TRANSFERS_NOT_ENABLED`, `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Retrieve Transfers", + } + } + }, + "/v1/upload": { + "post": { + "x-sdk": true, "tags": [ - "Transfers" + "Upload" ], - "x-sdk": true - }, - "post": { + "summary": "Upload File", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, - "minLength": 15, "type": "string" - } - }, - { - "in": "header", - "name": "Idempotency-Key", + }, "required": false, - "schema": { - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "maxLength": 255, - "type": "string" - } + "name": "instance_id", + "in": "query" } ], "requestBody": { + "description": "Upload file to instance", "content": { - "application/json": { + "multipart/form-data": { "schema": { - "$ref": "#/components/schemas/CreateTransferIn" + "$ref": "#/components/schemas/UploadIn" } } - }, - "description": "Start transfer" + } }, "responses": { "200": { + "description": "File uploaded successfully", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateTransferOut" + "$ref": "#/components/schemas/UploadOut" } } - }, - "description": "Transfer started with success" + } }, "400": { + "description": "Possible error codes: `FILES_TOO_LARGE`, `FILES_TYPE_NOT_ALLOWED`, `FILES_UNREADABLE`, `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { - "BANK_ACCOUNTS_INCOMPLETE": { - "summary": "BANK_ACCOUNTS_INCOMPLETE", + "FILES_TOO_LARGE": { + "summary": "FILES_TOO_LARGE", "value": { - "code": "BANK_ACCOUNTS_INCOMPLETE", - "description": "The bank account details are incomplete for this payment method. Provide the missing fields.", - "errors": [], - "message": "sepa_bank_account_incomplete", "success": false, + "code": "FILES_TOO_LARGE", + "message": "file_size_exceeded", + "description": "The file is too large. Upload a smaller file.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED": { - "summary": "BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED", + "FILES_TYPE_NOT_ALLOWED": { + "summary": "FILES_TYPE_NOT_ALLOWED", "value": { - "code": "BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED", - "description": "This banking option is not supported for this operation.", - "errors": [], - "message": "unsupported_banking_partner", "success": false, + "code": "FILES_TYPE_NOT_ALLOWED", + "message": "file_type_not_allowed", + "description": "This file type is not allowed. Upload a supported file type.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "BLOCKCHAIN_NETWORK_NOT_SUPPORTED": { - "summary": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", + "FILES_UNREADABLE": { + "summary": "FILES_UNREADABLE", "value": { - "code": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", - "description": "This network or token combination is not supported for this operation.", - "errors": [], - "message": "network_not_supported_on_dev_instance", "success": false, + "code": "FILES_UNREADABLE", + "message": "file_download_failed", + "description": "We could not read the uploaded file. Check the file and try again.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "CUSTOMERS_COUNTRY_NOT_SUPPORTED": { - "summary": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", + "VALIDATION_FAILED": { + "summary": "VALIDATION_FAILED", "value": { - "code": "CUSTOMERS_COUNTRY_NOT_SUPPORTED", - "description": "This country is not supported for this operation.", - "errors": [], - "message": "country_not_supported", "success": false, + "code": "VALIDATION_FAILED", + "message": "validation_failed", + "description": "The request contains invalid fields. Check the errors list for details.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } - }, - "CUSTOMERS_INVALID_PHONE": { - "summary": "CUSTOMERS_INVALID_PHONE", + } + } + } + } + }, + "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, + "examples": { + "AUTH_UNAUTHORIZED": { + "summary": "AUTH_UNAUTHORIZED", "value": { - "code": "CUSTOMERS_INVALID_PHONE", - "description": "The phone number provided is not valid. Check the number and try again.", - "errors": [], - "message": "invalid_phone_number", "success": false, + "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", + "description": "Authentication failed. Check your API key or session and try again.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } - }, - "CUSTOMERS_INVALID_TAX_ID": { - "summary": "CUSTOMERS_INVALID_TAX_ID", + } + } + } + } + }, + "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, + "examples": { + "AUTH_FORBIDDEN": { + "summary": "AUTH_FORBIDDEN", "value": { - "code": "CUSTOMERS_INVALID_TAX_ID", - "description": "The tax ID provided is not valid. Check the value and try again.", + "success": false, + "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", + "description": "You do not have permission to perform this action.", "errors": [], - "message": "invalid_cpf_or_rg_tax_id", + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } + } + } + } + }, + "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, + "examples": { + "AUTH_RATE_LIMITED": { + "summary": "AUTH_RATE_LIMITED", + "value": { "success": false, + "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", + "description": "Too many requests. Wait a moment and try again.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } - }, + } + } + } + } + }, + "500": { + "description": "Possible error codes: `FILES_UNREADABLE`, `INTERNAL_ERROR`. See the Error responses section for retry semantics.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, + "examples": { "FILES_UNREADABLE": { "summary": "FILES_UNREADABLE", "value": { + "success": false, "code": "FILES_UNREADABLE", - "description": "We could not read the uploaded file. Check the file and try again.", - "errors": [], "message": "file_download_failed", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "PAYOUTS_AMOUNT_BELOW_MINIMUM": { - "summary": "PAYOUTS_AMOUNT_BELOW_MINIMUM", - "value": { - "code": "PAYOUTS_AMOUNT_BELOW_MINIMUM", - "description": "The amount is below the minimum for this payment rail.", + "description": "We could not read the uploaded file. Check the file and try again.", "errors": [], - "message": "swift_minimum_is_100_usd", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "PAYOUTS_INSUFFICIENT_BALANCE": { - "summary": "PAYOUTS_INSUFFICIENT_BALANCE", + "INTERNAL_ERROR": { + "summary": "INTERNAL_ERROR", "value": { - "code": "PAYOUTS_INSUFFICIENT_BALANCE", - "description": "There is not enough balance to complete this payout. Fund your balance and try again.", - "errors": [], - "message": "not_enough_balance", "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "QUOTES_EXPIRED": { - "summary": "QUOTES_EXPIRED", - "value": { - "code": "QUOTES_EXPIRED", - "description": "This quote has expired. Request a new quote and try again.", + "code": "INTERNAL_ERROR", + "message": "internal_error", + "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "quote_expired", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } - }, - "QUOTES_RATE_UNAVAILABLE": { - "summary": "QUOTES_RATE_UNAVAILABLE", + } + } + } + } + } + } + } + }, + "/v1/upload/analyze": { + "post": { + "x-sdk": true, + "tags": [ + "Upload" + ], + "summary": "Analyze Document", + "parameters": [ + { + "schema": { + "type": "string", + "description": "Instance ID. When provided, the request must be authenticated with an API key scoped to this instance. When omitted, a dashboard (Clerk) session is required." + }, + "required": false, + "name": "instance_id", + "in": "query" + } + ], + "requestBody": { + "description": "Document to read and analyze with AI", + "content": { + "multipart/form-data": { + "schema": { + "$ref": "#/components/schemas/UploadAnalyzeIn" + } + } + } + }, + "responses": { + "200": { + "description": "Document analyzed successfully", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UploadAnalyzeOut" + } + } + } + }, + "400": { + "description": "Possible error codes: `FILES_EMPTY`, `FILES_TOO_LARGE`, `FILES_TYPE_NOT_ALLOWED`, `VALIDATION_FAILED`. See the Error responses section for retry semantics.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, + "examples": { + "FILES_EMPTY": { + "summary": "FILES_EMPTY", "value": { - "code": "QUOTES_RATE_UNAVAILABLE", - "description": "An exchange rate is temporarily unavailable. Try again shortly.", - "errors": [], - "message": "fx_rate_unavailable", "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "TRANSFERS_NOT_ENABLED": { - "summary": "TRANSFERS_NOT_ENABLED", - "value": { - "code": "TRANSFERS_NOT_ENABLED", - "description": "Wallets and transfers are not enabled for this account. Contact support to enable them.", + "code": "FILES_EMPTY", + "message": "file_empty", + "description": "The uploaded file is empty. Upload a valid file.", "errors": [], - "message": "wallets_and_transfers_not_enabled", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "VALIDATION_FAILED": { - "summary": "VALIDATION_FAILED", + "FILES_TOO_LARGE": { + "summary": "FILES_TOO_LARGE", "value": { - "code": "VALIDATION_FAILED", - "description": "The request contains invalid fields. Check the errors list for details.", - "errors": [], - "message": "validation_failed", "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VALIDATION_MISSING_REQUIRED_FIELDS": { - "summary": "VALIDATION_MISSING_REQUIRED_FIELDS", - "value": { - "code": "VALIDATION_MISSING_REQUIRED_FIELDS", - "description": "Required fields are missing. Provide the missing fields and try again.", + "code": "FILES_TOO_LARGE", + "message": "file_size_exceeded", + "description": "The file is too large. Upload a smaller file.", "errors": [], - "message": "missing_required_fields", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED": { - "summary": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", + "FILES_TYPE_NOT_ALLOWED": { + "summary": "FILES_TYPE_NOT_ALLOWED", "value": { - "code": "VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED", - "description": "Additional documents are required to create this virtual account. Upload the requested documents.", - "errors": [], - "message": "id_doc_front_file_required", "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VIRTUAL_ACCOUNTS_NOT_FOUND": { - "summary": "VIRTUAL_ACCOUNTS_NOT_FOUND", - "value": { - "code": "VIRTUAL_ACCOUNTS_NOT_FOUND", - "description": "The requested virtual account was not found.", + "code": "FILES_TYPE_NOT_ALLOWED", + "message": "file_type_not_allowed", + "description": "This file type is not allowed. Upload a supported file type.", "errors": [], - "message": "virtual_account_not_found", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, - "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { - "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", + "VALIDATION_FAILED": { + "summary": "VALIDATION_FAILED", "value": { - "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", - "errors": [], - "message": "virtual_account_provision_failed", "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED": { - "summary": "VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED", - "value": { - "code": "VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED", - "description": "Virtual accounts are not available for this country or region.", + "code": "VALIDATION_FAILED", + "message": "validation_failed", + "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "us_state_not_supported", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `BANK_ACCOUNTS_INCOMPLETE`, `BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED`, `BLOCKCHAIN_NETWORK_NOT_SUPPORTED`, `CUSTOMERS_COUNTRY_NOT_SUPPORTED`, `CUSTOMERS_INVALID_PHONE`, `CUSTOMERS_INVALID_TAX_ID`, `FILES_UNREADABLE`, `PAYOUTS_AMOUNT_BELOW_MINIMUM`, `PAYOUTS_INSUFFICIENT_BALANCE`, `QUOTES_EXPIRED`, `QUOTES_RATE_UNAVAILABLE`, `TRANSFERS_NOT_ENABLED`, `VALIDATION_FAILED`, `VALIDATION_MISSING_REQUIRED_FIELDS`, `VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED`, `VIRTUAL_ACCOUNTS_NOT_FOUND`, `VIRTUAL_ACCOUNTS_PROVISION_FAILED`, `VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, - "404": { + "422": { + "description": "Possible error codes: `FILES_ANALYSIS_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "examples": { - "WALLETS_NOT_FOUND": { - "summary": "WALLETS_NOT_FOUND", - "value": { - "code": "WALLETS_NOT_FOUND", - "description": "The requested wallet was not found.", - "errors": [], - "message": "wallet_not_found", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } - }, "schema": { "$ref": "#/components/schemas/Error" - } - } - }, - "description": "Possible error codes: `WALLETS_NOT_FOUND`. See the Error responses section for retry semantics." - }, - "422": { - "content": { - "application/json": { + }, "examples": { - "CUSTOMERS_INVALID_DATA": { - "summary": "CUSTOMERS_INVALID_DATA", + "FILES_ANALYSIS_FAILED": { + "summary": "FILES_ANALYSIS_FAILED", "value": { - "code": "CUSTOMERS_INVALID_DATA", - "description": "The customer data was rejected by the banking provider. Check the highlighted fields and try again.", - "errors": [], - "message": "invalid_customer_data", "success": false, + "code": "FILES_ANALYSIS_FAILED", + "message": "analysis_failed", + "description": "The document could not be analyzed. Try again, and contact support if the problem persists.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `CUSTOMERS_INVALID_DATA`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { - "FILES_UNREADABLE": { - "summary": "FILES_UNREADABLE", - "value": { - "code": "FILES_UNREADABLE", - "description": "We could not read the uploaded file. Check the file and try again.", - "errors": [], - "message": "file_download_failed", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", - "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", - "errors": [], "message": "internal_error", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "QUOTES_RATE_UNAVAILABLE": { - "summary": "QUOTES_RATE_UNAVAILABLE", - "value": { - "code": "QUOTES_RATE_UNAVAILABLE", - "description": "An exchange rate is temporarily unavailable. Try again shortly.", - "errors": [], - "message": "fx_rate_unavailable", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { - "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "value": { - "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", + "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "virtual_account_provision_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `FILES_UNREADABLE`, `INTERNAL_ERROR`, `QUOTES_RATE_UNAVAILABLE`, `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics." + } }, - "502": { + "503": { + "description": "Possible error codes: `FILES_ANALYSIS_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "examples": { - "VIRTUAL_ACCOUNTS_PROVISION_FAILED": { - "summary": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "value": { - "code": "VIRTUAL_ACCOUNTS_PROVISION_FAILED", - "description": "We could not create the virtual account. Try again, and contact support if the problem persists.", - "errors": [], - "message": "virtual_account_provision_failed", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } - }, "schema": { "$ref": "#/components/schemas/Error" - } - } - }, - "description": "Possible error codes: `VIRTUAL_ACCOUNTS_PROVISION_FAILED`. See the Error responses section for retry semantics." - }, - "503": { - "content": { - "application/json": { + }, "examples": { - "QUOTES_RATE_UNAVAILABLE": { - "summary": "QUOTES_RATE_UNAVAILABLE", + "FILES_ANALYSIS_FAILED": { + "summary": "FILES_ANALYSIS_FAILED", "value": { - "code": "QUOTES_RATE_UNAVAILABLE", - "description": "An exchange rate is temporarily unavailable. Try again shortly.", - "errors": [], - "message": "fx_rate_unavailable", "success": false, + "code": "FILES_ANALYSIS_FAILED", + "message": "analysis_failed", + "description": "The document could not be analyzed. Try again, and contact support if the problem persists.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `QUOTES_RATE_UNAVAILABLE`. See the Error responses section for retry semantics." + } } - }, - "summary": "Create Transfer", - "tags": [ - "Transfers" - ], - "x-sdk": true + } } }, - "/v1/instances/{instance_id}/transfers/{id}": { + "/v1/available/bank-details": { "get": { + "x-sdk": true, + "tags": [ + "Available" + ], + "summary": "Bank Details", + "security": [], "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - } - }, - { - "in": "path", - "name": "id", + "type": "string", + "enum": [ + "wire", + "ach", + "pix", + "pix_safe", + "ted", + "spei_bitso", + "transfers_bitso", + "ach_cop_bitso", + "international_swift", + "rtp", + "sepa" + ] + }, "required": true, - "schema": { - "example": "pa_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - } + "name": "rail", + "in": "query" } ], "responses": { "200": { + "description": "Retrieve bank details by rail", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TransferOut" + "$ref": "#/components/schemas/AvailableBankDetails" } } - }, - "description": "List transfers" + } }, "400": { + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { - "TRANSFERS_NOT_ENABLED": { - "summary": "TRANSFERS_NOT_ENABLED", - "value": { - "code": "TRANSFERS_NOT_ENABLED", - "description": "Wallets and transfers are not enabled for this account. Contact support to enable them.", - "errors": [], - "message": "wallets_and_transfers_not_enabled", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `TRANSFERS_NOT_ENABLED`, `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Retrieve Transfer", - "tags": [ - "Transfers" - ], - "x-sdk": true + } } }, - "/v1/instances/{instance_id}/webhook-endpoints": { + "/v1/available/rails": { "get": { - "parameters": [ - { - "in": "path", - "name": "instance_id", - "required": true, - "schema": { - "example": "in_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - } - } + "x-sdk": true, + "tags": [ + "Available" ], + "summary": "Rails", + "security": [], "responses": { "200": { + "description": "Retrieve available rails", "content": { "application/json": { "schema": { - "items": { - "$ref": "#/components/schemas/WebhookEndpoint" - }, - "type": "array" + "$ref": "#/components/schemas/AvailableRails" } } - }, - "description": "Get webhook endpoints" + } }, "400": { + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." - } - }, - "summary": "Retrieve Webhooks", - "tags": [ - "Webhook Endpoints" - ], - "x-sdk": true - }, - "post": { - "parameters": [ - { - "in": "path", - "name": "instance_id", - "required": true, - "schema": { - "example": "in_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - } - }, - { - "in": "header", - "name": "Idempotency-Key", - "required": false, - "schema": { - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "maxLength": 255, - "type": "string" } } + } + } + }, + "/v1/available/naics": { + "get": { + "x-sdk": true, + "tags": [ + "Available" ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/WebhookEndpointIn" - } - } - }, - "description": "Create a new webhook endpoint" - }, + "summary": "NAICS list", + "security": [], "responses": { "200": { + "description": "Retrieve NAICS (business industry) list", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WebhookEndpointOut" + "$ref": "#/components/schemas/AvailableNaicsList" } } - }, - "description": "Create webhook endpoint" + } }, "400": { + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", - "description": "The request contains invalid fields. Check the errors list for details.", - "errors": [], "message": "validation_failed", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "WEBHOOKS_LIMIT_REACHED": { - "summary": "WEBHOOKS_LIMIT_REACHED", - "value": { - "code": "WEBHOOKS_LIMIT_REACHED", - "description": "You reached the maximum number of webhook endpoints.", - "errors": [], - "message": "webhook_endpoint_limit_reached", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "WEBHOOKS_URL_INVALID": { - "summary": "WEBHOOKS_URL_INVALID", - "value": { - "code": "WEBHOOKS_URL_INVALID", - "description": "The webhook URL is not valid. Use a reachable HTTPS URL.", + "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "webhook_url_invalid", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `VALIDATION_FAILED`, `WEBHOOKS_LIMIT_REACHED`, `WEBHOOKS_URL_INVALID`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Register Webhook", - "tags": [ - "Webhook Endpoints" - ], - "x-sdk": true + } } }, - "/v1/instances/{instance_id}/webhook-endpoints/portal-access": { + "/v1/available/swift/{swift}": { "get": { + "x-sdk": true, + "tags": [ + "Available" + ], + "summary": "Swift code bank details", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - } + "anyOf": [ + { + "type": "string", + "minLength": 8, + "maxLength": 8, + "pattern": "^[A-Z0-9]+$" + }, + { + "type": "string", + "minLength": 11, + "maxLength": 11, + "pattern": "^[A-Z0-9]+$" + } + ], + "example": "BOFAUS3NLMA" + }, + "required": true, + "name": "swift", + "in": "path" } ], "responses": { "200": { + "description": "Swift code bank details", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PortalAccessOut" + "$ref": "#/components/schemas/SwiftCodeResponse" } } - }, - "description": "Get webhook portal access url" + } }, "400": { + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Retrieve Webhook Portal Access", - "tags": [ - "Webhook Endpoints" - ], - "x-sdk": true + } } }, - "/v1/instances/{instance_id}/webhook-endpoints/{id}": { - "delete": { + "/v1/instances/{instance_id}/mint-usdb-solana": { + "post": { + "x-sdk": true, + "tags": [ + "Solana" + ], + "summary": "Mint USDB on Solana", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } - }, - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "example": "we_000000000000", "maxLength": 15, - "minLength": 15, - "type": "string" - } + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" }, { - "in": "header", - "name": "Idempotency-Key", - "required": false, "schema": { - "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", - "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "type": "string", "maxLength": 255, - "type": "string" - } + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, + "required": false, + "name": "Idempotency-Key", + "in": "header" } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "address": { + "type": "string" + }, + "amount": { + "type": "string" + } + }, + "required": [ + "address", + "amount" + ] + } + } + } + }, "responses": { "200": { + "description": "Mint USDB on Solana", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Success" + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "signature": { + "type": "string" + }, + "error": { + "type": "string" + } + }, + "required": [ + "success" + ] } } - }, - "description": "Delete webhook endpoint" + } }, "400": { + "description": "Possible error codes: `BLOCKCHAIN_TX_FAILED`, `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { + "BLOCKCHAIN_TX_FAILED": { + "summary": "BLOCKCHAIN_TX_FAILED", + "value": { + "success": false, + "code": "BLOCKCHAIN_TX_FAILED", + "message": "transaction_failed", + "description": "The blockchain transaction failed. Try again, and contact support if the problem persists.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Remove Webhook", - "tags": [ - "Webhook Endpoints" - ], - "x-sdk": true + } } }, - "/v1/instances/{instance_id}/webhook-endpoints/{id}/secret": { - "get": { + "/v1/instances/{instance_id}/prepare-delegate-solana": { + "post": { + "x-sdk": true, + "tags": [ + "Solana" + ], + "summary": "Prepare Solana Delegate", + "description": "Prepares a delegation transaction for Solana token transfers. You can either provide a `quote_id` (recommended) to automatically use the correct token amount and address from the quote, or manually provide `owner_address`, `token_address`, and `amount`.", "parameters": [ { - "in": "path", - "name": "instance_id", - "required": true, "schema": { - "example": "in_000000000000", - "maxLength": 15, + "type": "string", "minLength": 15, - "type": "string" - } + "maxLength": 15, + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" }, { - "in": "path", - "name": "id", - "required": true, "schema": { - "example": "we_000000000000", - "maxLength": 15, - "minLength": 15, - "type": "string" - } + "type": "string", + "maxLength": 255, + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, + "required": false, + "name": "Idempotency-Key", + "in": "header" } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "owner_address": { + "type": "string", + "description": "The Solana wallet address that owns the tokens", + "example": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" + }, + "quote_id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "description": "The quote ID. When provided, the API will automatically use the sender_amount and token_address from the quote. This is the recommended approach.", + "example": "qu_000000000000" + }, + "token_address": { + "type": "string", + "description": "The SPL token mint address. Required if quote_id is not provided.", + "example": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" + }, + "amount": { + "type": "string", + "description": "The token amount to delegate in USDC/USDT units (e.g., \"10.5\" for 10.5 USDC). Required if quote_id is not provided. Note: This should be the TOKEN amount, not the local currency amount.", + "example": "10.5" + } + }, + "required": [ + "owner_address" + ] + } + } + } + }, "responses": { "200": { + "description": "Prepare delegation transaction", "content": { "application/json": { "schema": { + "type": "object", "properties": { - "key": { - "example": "whsec_000000000000", + "success": { + "type": "boolean" + }, + "transaction": { "type": "string" - } + }, + "debug": {} }, "required": [ - "key" - ], - "type": "object" + "success" + ] } } - }, - "description": "Get webhook endpoint secret" + } }, "400": { + "description": "Possible error codes: `BLOCKCHAIN_NETWORK_NOT_SUPPORTED`, `QUOTES_EXPIRED`, `VALIDATION_FAILED`, `VALIDATION_MISSING_REQUIRED_FIELDS`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { + "BLOCKCHAIN_NETWORK_NOT_SUPPORTED": { + "summary": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", + "value": { + "success": false, + "code": "BLOCKCHAIN_NETWORK_NOT_SUPPORTED", + "message": "network_not_supported_on_dev_instance", + "description": "This network or token combination is not supported for this operation.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "QUOTES_EXPIRED": { + "summary": "QUOTES_EXPIRED", + "value": { + "success": false, + "code": "QUOTES_EXPIRED", + "message": "quote_expired", + "description": "This quote has expired. Request a new quote and try again.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + }, + "VALIDATION_MISSING_REQUIRED_FIELDS": { + "summary": "VALIDATION_MISSING_REQUIRED_FIELDS", + "value": { "success": false, + "code": "VALIDATION_MISSING_REQUIRED_FIELDS", + "message": "missing_required_fields", + "description": "Required fields are missing. Provide the missing fields and try again.", + "errors": [], "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, + } + } + } + }, + "404": { + "description": "Possible error codes: `QUOTES_NOT_FOUND`. See the Error responses section for retry semantics.", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/Error" + }, + "examples": { + "QUOTES_NOT_FOUND": { + "summary": "QUOTES_NOT_FOUND", + "value": { + "success": false, + "code": "QUOTES_NOT_FOUND", + "message": "quote_not_found", + "description": "The requested quote was not found.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Retrieve Webhook Secret", - "tags": [ - "Webhook Endpoints" - ], - "x-sdk": true + } } }, - "/v1/upload": { + "/v1/instances/{instance_id}/create-asset-trustline": { "post": { + "x-sdk": true, + "tags": [ + "Stellar" + ], + "summary": "Create Asset Trustline", "parameters": [ { - "in": "query", + "schema": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "in_000000000000" + }, + "required": true, "name": "instance_id", - "required": false, + "in": "path" + }, + { "schema": { - "type": "string" - } + "type": "string", + "maxLength": 255, + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, + "required": false, + "name": "Idempotency-Key", + "in": "header" } ], "requestBody": { "content": { - "multipart/form-data": { + "application/json": { "schema": { - "$ref": "#/components/schemas/UploadIn" + "type": "object", + "properties": { + "address": { + "type": "string" + } + }, + "required": [ + "address" + ] } } - }, - "description": "Upload file to instance" + } }, "responses": { "200": { + "description": "Create asset trustline", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UploadOut" + "type": "object", + "properties": { + "xdr": { + "type": "string" + } + }, + "required": [ + "xdr" + ] } } - }, - "description": "File uploaded successfully" + } }, "400": { + "description": "Possible error codes: `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { - "FILES_TOO_LARGE": { - "summary": "FILES_TOO_LARGE", - "value": { - "code": "FILES_TOO_LARGE", - "description": "The file is too large. Upload a smaller file.", - "errors": [], - "message": "file_size_exceeded", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "FILES_TYPE_NOT_ALLOWED": { - "summary": "FILES_TYPE_NOT_ALLOWED", - "value": { - "code": "FILES_TYPE_NOT_ALLOWED", - "description": "This file type is not allowed. Upload a supported file type.", - "errors": [], - "message": "file_type_not_allowed", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "FILES_UNREADABLE": { - "summary": "FILES_UNREADABLE", - "value": { - "code": "FILES_UNREADABLE", - "description": "We could not read the uploaded file. Check the file and try again.", - "errors": [], - "message": "file_download_failed", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `FILES_TOO_LARGE`, `FILES_TYPE_NOT_ALLOWED`, `FILES_UNREADABLE`, `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { - "FILES_UNREADABLE": { - "summary": "FILES_UNREADABLE", - "value": { - "code": "FILES_UNREADABLE", - "description": "We could not read the uploaded file. Check the file and try again.", - "errors": [], - "message": "file_download_failed", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", + "message": "internal_error", "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "internal_error", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `FILES_UNREADABLE`, `INTERNAL_ERROR`. See the Error responses section for retry semantics." + } } - }, - "summary": "Upload File", - "tags": [ - "Upload" - ], - "x-sdk": true + } } }, - "/v1/upload/analyze": { + "/v1/instances/{instance_id}/mint-usdb-stellar": { "post": { + "x-sdk": true, + "tags": [ + "Stellar" + ], + "summary": "Mint USDB on Stellar", "parameters": [ { - "in": "query", + "schema": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "in_000000000000" + }, + "required": true, "name": "instance_id", - "required": false, + "in": "path" + }, + { "schema": { - "description": "Instance ID. When provided, the request must be authenticated with an API key scoped to this instance. When omitted, a dashboard (Clerk) session is required.", - "type": "string" - } + "type": "string", + "maxLength": 255, + "description": "Optional key to safely retry this request without performing the action twice. Retrying with the same key and an identical body replays the original response; reusing a key with a different body returns an error. Keys are kept for 24 hours.", + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + }, + "required": false, + "name": "Idempotency-Key", + "in": "header" } ], "requestBody": { "content": { - "multipart/form-data": { + "application/json": { "schema": { - "$ref": "#/components/schemas/UploadAnalyzeIn" + "type": "object", + "properties": { + "address": { + "type": "string" + }, + "amount": { + "type": "string" + }, + "signedXdr": { + "type": "string" + } + }, + "required": [ + "address", + "amount" + ] } } - }, - "description": "Document to read and analyze with AI" + } }, "responses": { "200": { + "description": "Mint USDB", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UploadAnalyzeOut" + "$ref": "#/components/schemas/Success" } } - }, - "description": "Document analyzed successfully" + } }, "400": { + "description": "Possible error codes: `BLOCKCHAIN_TX_FAILED`, `VALIDATION_FAILED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { - "FILES_EMPTY": { - "summary": "FILES_EMPTY", - "value": { - "code": "FILES_EMPTY", - "description": "The uploaded file is empty. Upload a valid file.", - "errors": [], - "message": "file_empty", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "FILES_TOO_LARGE": { - "summary": "FILES_TOO_LARGE", + "BLOCKCHAIN_TX_FAILED": { + "summary": "BLOCKCHAIN_TX_FAILED", "value": { - "code": "FILES_TOO_LARGE", - "description": "The file is too large. Upload a smaller file.", - "errors": [], - "message": "file_size_exceeded", "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - }, - "FILES_TYPE_NOT_ALLOWED": { - "summary": "FILES_TYPE_NOT_ALLOWED", - "value": { - "code": "FILES_TYPE_NOT_ALLOWED", - "description": "This file type is not allowed. Upload a supported file type.", + "code": "BLOCKCHAIN_TX_FAILED", + "message": "transaction_failed", + "description": "The blockchain transaction failed. Try again, and contact support if the problem persists.", "errors": [], - "message": "file_type_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } }, "VALIDATION_FAILED": { "summary": "VALIDATION_FAILED", "value": { + "success": false, "code": "VALIDATION_FAILED", + "message": "validation_failed", "description": "The request contains invalid fields. Check the errors list for details.", "errors": [], - "message": "validation_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `FILES_EMPTY`, `FILES_TOO_LARGE`, `FILES_TYPE_NOT_ALLOWED`, `VALIDATION_FAILED`. See the Error responses section for retry semantics." + } }, "401": { + "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_UNAUTHORIZED": { "summary": "AUTH_UNAUTHORIZED", "value": { + "success": false, "code": "AUTH_UNAUTHORIZED", + "message": "unauthorized", "description": "Authentication failed. Check your API key or session and try again.", "errors": [], - "message": "unauthorized", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics." + } }, "403": { + "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "AUTH_FORBIDDEN": { "summary": "AUTH_FORBIDDEN", "value": { + "success": false, "code": "AUTH_FORBIDDEN", + "message": "user_not_allowed", "description": "You do not have permission to perform this action.", "errors": [], - "message": "user_not_allowed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics." + } }, - "422": { + "429": { + "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.", "content": { "application/json": { - "examples": { - "FILES_ANALYSIS_FAILED": { - "summary": "FILES_ANALYSIS_FAILED", - "value": { - "code": "FILES_ANALYSIS_FAILED", - "description": "The document could not be analyzed. Try again, and contact support if the problem persists.", - "errors": [], - "message": "analysis_failed", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } - }, "schema": { "$ref": "#/components/schemas/Error" - } - } - }, - "description": "Possible error codes: `FILES_ANALYSIS_FAILED`. See the Error responses section for retry semantics." - }, - "429": { - "content": { - "application/json": { + }, "examples": { "AUTH_RATE_LIMITED": { "summary": "AUTH_RATE_LIMITED", "value": { + "success": false, "code": "AUTH_RATE_LIMITED", + "message": "api_key_rate_limit_exceeded", "description": "Too many requests. Wait a moment and try again.", "errors": [], - "message": "api_key_rate_limit_exceeded", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics." + } }, "500": { + "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.", "content": { "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, "examples": { "INTERNAL_ERROR": { "summary": "INTERNAL_ERROR", "value": { + "success": false, "code": "INTERNAL_ERROR", - "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", - "errors": [], "message": "internal_error", - "success": false, - "trace_id": "0af7651916cd43dd8448eb211c80319c" - } - } - }, - "schema": { - "$ref": "#/components/schemas/Error" - } - } - }, - "description": "Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics." - }, - "503": { - "content": { - "application/json": { - "examples": { - "FILES_ANALYSIS_FAILED": { - "summary": "FILES_ANALYSIS_FAILED", - "value": { - "code": "FILES_ANALYSIS_FAILED", - "description": "The document could not be analyzed. Try again, and contact support if the problem persists.", + "description": "Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists.", "errors": [], - "message": "analysis_failed", - "success": false, "trace_id": "0af7651916cd43dd8448eb211c80319c" } } - }, - "schema": { - "$ref": "#/components/schemas/Error" } } - }, - "description": "Possible error codes: `FILES_ANALYSIS_FAILED`. See the Error responses section for retry semantics." + } } - }, - "summary": "Analyze Document", - "tags": [ - "Upload" - ], - "x-sdk": true + } } } }, - "security": [ - { - "Bearer": [] - } - ], - "tags": [ - { - "name": "Instances" - }, - { - "name": "Terms Of Service" - }, - { - "name": "Customers" - }, - { - "name": "Bank Accounts" - }, - { - "name": "Virtual Accounts" - }, - { - "name": "Blockchain Wallets" - }, - { - "name": "Offramp Wallets" - }, - { - "name": "Payouts Quotes" - }, - { - "name": "Payouts" - }, - { - "name": "Payin Quotes" - }, - { - "name": "Payins" - }, - { - "name": "Wallets" - }, - { - "name": "Transfer Quotes" - }, - { - "name": "Transfers" - }, - { - "name": "Webhook Endpoints" - }, - { - "name": "Fees" - }, - { - "name": "Partner Fees" - }, - { - "name": "Upload" - }, - { - "name": "Available" - }, - { - "name": "Solana" - }, - { - "name": "Stellar" - }, - { - "description": "## Error responses\n\nEvery error response uses this envelope:\n\n```json\n{\n \"success\": false,\n \"code\": \"QUOTES_EXPIRED\",\n \"message\": \"quote_expired\",\n \"description\": \"This quote has expired. Request a new quote and try again.\",\n \"errors\": [],\n \"trace_id\": \"0af7651916cd43dd8448eb211c80319c\"\n}\n```\n\n- `code` is a stable identifier, safe to build programmatic handling on.\n- `message` is a legacy machine string kept for backward compatibility. Prefer `code`.\n- `description` is human-readable text, safe to show to end users.\n- `trace_id` identifies the request. Include it when contacting support.\n\nRetry semantics per code: `retryable` means the same request can be retried as is, `terminal` means do not retry, and `actionable` means the request succeeds only after you fix something (for example funding a balance or correcting bank details).\n\nThe Status column shows the HTTP status a code typically responds with; the per-endpoint error tabs list the exact status each endpoint returns.\n\n### Error codes\n\n| Code | Status | Retry | Description |\n| --- | --- | --- | --- |\n| `AUTH_EMAIL_ALREADY_REGISTERED` | 409 | terminal | This email address is already registered. |\n| `AUTH_FORBIDDEN` | 403 | terminal | You do not have permission to perform this action. |\n| `AUTH_IP_BLOCKED` | 403 | terminal | Requests from this IP address are not allowed for this API key. |\n| `AUTH_RATE_LIMITED` | 429 | retryable | Too many requests. Wait a moment and try again. |\n| `AUTH_SERVICE_UNAVAILABLE` | 503 | retryable | The authentication service is temporarily unavailable. Try again shortly. |\n| `AUTH_TOKEN_INVALID` | 401 | actionable | This link or token is invalid or has expired. Request a new one. |\n| `AUTH_UNAUTHORIZED` | 401 | actionable | Authentication failed. Check your API key or session and try again. |\n| `BANK_ACCOUNTS_INCOMPLETE` | 400 | actionable | The bank account details are incomplete for this payment method. Provide the missing fields. |\n| `BANK_ACCOUNTS_INVALID_BANK_CODE` | 400 | actionable | The bank code provided is not valid for this payment rail. The message lists where to fetch the valid codes. |\n| `BANK_ACCOUNTS_INVALID_ROUTING` | 400 | actionable | The routing number provided is not valid. Check the number and try again. |\n| `BANK_ACCOUNTS_NOT_APPROVED` | 403 | actionable | This bank account is not approved yet. |\n| `BANK_ACCOUNTS_NOT_FOUND` | 404 | actionable | The requested bank account was not found. |\n| `BANK_ACCOUNTS_PARTNER_NOT_SUPPORTED` | 400 | terminal | This banking option is not supported for this operation. |\n| `BANK_ACCOUNTS_RTP_NOT_SUPPORTED` | 400 | terminal | The provided routing number does not support instant payments. |\n| `BILLING_INVOICE_NOT_FOUND` | 404 | actionable | The requested invoice was not found. |\n| `BILLING_INVOICE_NOT_PAYABLE` | 409 | terminal | This invoice cannot be paid or collected in its current state. |\n| `BILLING_NOT_AVAILABLE` | 403 | terminal | Billing is not available for development instances. |\n| `BLOCKCHAIN_CALL_FAILED` | 400 | retryable | The blockchain call could not be completed. Check the transaction details and try again. |\n| `BLOCKCHAIN_NETWORK_NOT_SUPPORTED` | 400 | terminal | This network or token combination is not supported for this operation. |\n| `BLOCKCHAIN_TOKEN_NOT_SUPPORTED` | 400 | actionable | This token is not supported for this instance type. Development instances settle in USDB; production instances settle in USDC or USDT. |\n| `BLOCKCHAIN_TX_FAILED` | 502 | retryable | The blockchain transaction failed. Try again, and contact support if the problem persists. |\n| `COMPLIANCE_RFI_IN_PROGRESS` | 409 | actionable | An information request is already in progress. Resolve it before continuing. |\n| `COMPLIANCE_RFI_INVALID` | 400 | actionable | The information request could not be processed. Check the submitted fields. |\n| `CUSTOMERS_ALREADY_APPROVED` | 409 | terminal | This customer is already approved. |\n| `CUSTOMERS_BUSINESS_ENHANCED_NOT_AVAILABLE` | 400 | terminal | Enhanced verification is not available for business customers. Use standard verification (kyc_type: standard) for businesses. |\n| `CUSTOMERS_COUNTRY_NOT_SUPPORTED` | 400 | terminal | This country is not supported for this operation. |\n| `CUSTOMERS_ENHANCED_KYC_REQUIRED` | 400 | actionable | Individuals from high-risk countries must use enhanced verification (kyc_type: enhanced); standard verification is not available for them. See https://www.blindpay.com/docs/kb/supported-countries for country tiers. |\n| `CUSTOMERS_ID_DOCUMENT_INVALID` | 400 | actionable | The identity document is not an accepted passport or national ID. Provide a valid passport or national ID for this customer (a driver license is not accepted for high-risk countries). |\n| `CUSTOMERS_INVALID_DATA` | 422 | actionable | The customer data was rejected by the banking provider. Check the highlighted fields and try again. |\n| `CUSTOMERS_INVALID_PHONE` | 400 | actionable | The phone number provided is not valid. Check the number and try again. |\n| `CUSTOMERS_INVALID_TAX_ID` | 400 | actionable | The tax ID provided is not valid. Check the value and try again. |\n| `CUSTOMERS_KYC_NOT_APPROVED` | 403 | actionable | This customer has not completed verification yet. Complete the verification before continuing. |\n| `CUSTOMERS_NOT_FOUND` | 404 | actionable | The requested customer was not found. |\n| `CUSTOMERS_ONBOARDING_INCOMPLETE` | 400 | actionable | Onboarding is not complete yet. Finish the remaining steps before continuing. |\n| `DATA_INTEGRITY_ERROR` | 422 | terminal | This record could not be loaded because it contains invalid stored data. Contact support with the ID below. |\n| `FEES_NOT_FOUND` | 404 | actionable | The requested fee configuration was not found. |\n| `FEES_PARTNER_FEE_EXCEEDED` | 400 | actionable | The partner fee exceeds the allowed maximum for this transaction. |\n| `FILES_ANALYSIS_FAILED` | 502 | retryable | The document could not be analyzed. Try again, and contact support if the problem persists. |\n| `FILES_EMPTY` | 400 | actionable | The uploaded file is empty. Upload a valid file. |\n| `FILES_TOO_LARGE` | 400 | actionable | The file is too large. Upload a smaller file. |\n| `FILES_TYPE_NOT_ALLOWED` | 400 | actionable | This file type is not allowed. Upload a supported file type. |\n| `FILES_UNREADABLE` | 400 | actionable | We could not read the uploaded file. Check the file and try again. |\n| `INSTANCES_BLOCKED` | 403 | terminal | This account is blocked. Contact support for assistance. |\n| `INSTANCES_LIMIT_REACHED` | 400 | terminal | You reached the maximum number of instances allowed for your account. |\n| `INSTANCES_NOT_FOUND` | 404 | actionable | The requested instance was not found. |\n| `INTERNAL_ERROR` | 500 | retryable | Something went wrong on our side. Try again, and contact support with the trace ID if the problem persists. |\n| `LIMITS_AMOUNT_OUT_OF_RANGE` | 400 | actionable | The amount is outside the allowed range. The message includes the allowed range. |\n| `LIMITS_VOLUME_EXCEEDED` | 400 | actionable | You exceeded your transaction volume limit. The message includes the remaining amount available. |\n| `PAYINS_ALREADY_TERMINAL` | 409 | terminal | This payin already reached a final status and cannot be changed. |\n| `PAYINS_METHOD_NOT_SUPPORTED` | 400 | terminal | This payment method is not supported for this operation. |\n| `PAYINS_NOT_FOUND` | 404 | actionable | The requested payin was not found. |\n| `PAYINS_TAX_ID_REQUIRED` | 400 | actionable | A tax ID is required for this payment method. Provide the tax ID and try again. |\n| `PAYOUTS_ALLOWANCE_NOT_CONFIRMED` | 400 | retryable | The token approval for this payout has not been confirmed on-chain yet, or the approved amount is lower than the payout amount. Wait for the approval transaction to confirm and execute the quote again. |\n| `PAYOUTS_AMOUNT_BELOW_MINIMUM` | 400 | actionable | The amount is below the minimum for this payment rail. |\n| `PAYOUTS_DOCUMENTS_NOT_ACCEPTED` | 400 | terminal | Document upload is only available for international wire payouts. |\n| `PAYOUTS_INSUFFICIENT_BALANCE` | 400 | actionable | There is not enough balance to complete this payout. Fund your balance and try again. |\n| `PAYOUTS_NOT_FOUND` | 404 | actionable | The requested payout was not found. |\n| `QUOTES_ALREADY_USED` | 409 | actionable | This quote was already used. Request a new quote. |\n| `QUOTES_EXPIRED` | 400 | actionable | This quote has expired. Request a new quote and try again. |\n| `QUOTES_INSUFFICIENT_LIQUIDITY` | 400 | actionable | There is not enough market liquidity to fill this amount right now. Try a smaller amount or try again later. |\n| `QUOTES_INVALID_STATE` | 400 | actionable | This quote cannot be authorized in its current state. Request a new quote and try again. |\n| `QUOTES_NOT_FOUND` | 404 | actionable | The requested quote was not found. |\n| `QUOTES_OTC_NOT_SUPPORTED` | 400 | actionable | This OTC configuration is not supported. OTC requires BRL with USDT, and either the sender amount with fees not covered, or the receiver amount with fees covered. |\n| `QUOTES_RATE_UNAVAILABLE` | 502 | retryable | An exchange rate is temporarily unavailable. Try again shortly. |\n| `REQUEST_REJECTED` | 400 | actionable | The request was rejected. Check the error message for details. |\n| `TOS_ALREADY_ACCEPTED` | 409 | terminal | These terms of service were already accepted. |\n| `TOS_NOT_ACCEPTED` | 400 | actionable | The terms of service must be accepted before continuing. |\n| `TOS_NOT_FOUND` | 404 | actionable | The requested terms of service record was not found. |\n| `TRANSFERS_NOT_ENABLED` | 403 | terminal | Wallets and transfers are not enabled for this account. Contact support to enable them. |\n| `VALIDATION_FAILED` | 400 | actionable | The request contains invalid fields. Check the errors list for details. |\n| `VALIDATION_INVALID_REQUEST` | 400 | actionable | The request is not valid for this operation. Check the parameters and try again. |\n| `VALIDATION_MISSING_BODY` | 400 | actionable | The request body is missing or malformed. Send valid JSON with the Content-Type: application/json header. |\n| `VALIDATION_MISSING_REQUIRED_FIELDS` | 400 | actionable | Required fields are missing. Provide the missing fields and try again. |\n| `VIRTUAL_ACCOUNTS_DISABLED` | 403 | terminal | Virtual accounts are not enabled for this account. Contact support to enable them. |\n| `VIRTUAL_ACCOUNTS_DOCUMENTS_REQUIRED` | 400 | actionable | Additional documents are required to create this virtual account. Upload the requested documents. |\n| `VIRTUAL_ACCOUNTS_NOT_APPROVED` | 403 | actionable | This virtual account is not approved yet. |\n| `VIRTUAL_ACCOUNTS_NOT_FOUND` | 404 | actionable | The requested virtual account was not found. |\n| `VIRTUAL_ACCOUNTS_PROVISION_FAILED` | 502 | retryable | We could not create the virtual account. Try again, and contact support if the problem persists. |\n| `VIRTUAL_ACCOUNTS_REGION_NOT_SUPPORTED` | 400 | terminal | Virtual accounts are not available for this country or region. |\n| `WALLETS_ATTACHED_TO_VIRTUAL_ACCOUNT` | 400 | terminal | This wallet is attached to a virtual account and cannot be deleted. Delete the virtual account first. |\n| `WALLETS_BALANCE_UNAVAILABLE` | 503 | retryable | The wallet balance is temporarily unavailable. Try again shortly. |\n| `WALLETS_NOT_FOUND` | 404 | actionable | The requested wallet was not found. |\n| `WEBHOOKS_LIMIT_REACHED` | 400 | terminal | You reached the maximum number of webhook endpoints. |\n| `WEBHOOKS_SIGNATURE_INVALID` | 401 | terminal | The webhook signature is missing or invalid. |\n| `WEBHOOKS_URL_INVALID` | 400 | actionable | The webhook URL is not valid. Use a reachable HTTPS URL. |\n", - "name": "Errors" - } - ], "webhooks": { "bankAccount.new": { "post": { "requestBody": { + "description": "Add bank account from blindpay", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BankAccountWebhookOut" } } - }, - "description": "Add bank account from blindpay" + } }, "responses": { "200": { @@ -53514,14 +53514,14 @@ "blockchainWallet.new": { "post": { "requestBody": { + "description": "Add blockchain wallet from blindpay", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BlockchainWalletWebhookOut" } } - }, - "description": "Add blockchain wallet from blindpay" + } }, "responses": { "200": { @@ -53530,39 +53530,39 @@ } } }, - "customer.delete": { + "customer.new": { "post": { "requestBody": { + "description": "Create customer from blindpay", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomerDeleteWebhookOut" + "$ref": "#/components/schemas/CustomerNewWebhookOut" } } } }, "responses": { "200": { - "description": "Customer deleted" + "description": "Customer created" } } } }, - "customer.new": { + "customer.delete": { "post": { "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomerNewWebhookOut" + "$ref": "#/components/schemas/CustomerDeleteWebhookOut" } } - }, - "description": "Create customer from blindpay" + } }, "responses": { "200": { - "description": "Customer created" + "description": "Customer deleted" } } } @@ -53570,14 +53570,14 @@ "customer.update": { "post": { "requestBody": { + "description": "Update customer from blindpay", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerUpdateWebhookOut" } } - }, - "description": "Update customer from blindpay" + } }, "responses": { "200": { @@ -53589,14 +53589,14 @@ "limitIncrease.new": { "post": { "requestBody": { + "description": "Create limit increase from blindpay", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LimitIncreaseNewWebhookOut" } } - }, - "description": "Create limit increase from blindpay" + } }, "responses": { "200": { @@ -53623,40 +53623,40 @@ } } }, - "payin.complete": { + "payin.new": { "post": { "requestBody": { + "description": "Create payin from blindpay", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PayinCompleteWebhookOut" + "$ref": "#/components/schemas/PayinNewWebhookOut" } } - }, - "description": "Update payin from blindpay" + } }, "responses": { "200": { - "description": "Payin completed" + "description": "Payin created" } } } }, - "payin.new": { + "payin.complete": { "post": { "requestBody": { + "description": "Update payin from blindpay", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PayinNewWebhookOut" + "$ref": "#/components/schemas/PayinCompleteWebhookOut" } } - }, - "description": "Create payin from blindpay" + } }, "responses": { "200": { - "description": "Payin created" + "description": "Payin completed" } } } @@ -53664,14 +53664,14 @@ "payin.partnerFee": { "post": { "requestBody": { + "description": "Update payin from blindpay", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PayinPartnerFeeWebhookOut" } } - }, - "description": "Update payin from blindpay" + } }, "responses": { "200": { @@ -53683,14 +53683,14 @@ "payin.update": { "post": { "requestBody": { + "description": "Update payin from blindpay", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PayinUpdateWebhookOut" } } - }, - "description": "Update payin from blindpay" + } }, "responses": { "200": { @@ -53699,40 +53699,40 @@ } } }, - "payout.complete": { + "payout.new": { "post": { "requestBody": { + "description": "Create payout from blindpay", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PayoutCompleteWebhookOut" + "$ref": "#/components/schemas/PayoutNewWebhookOut" } } - }, - "description": "Update payout from blindpay" + } }, "responses": { "200": { - "description": "Payout completed" + "description": "Payout created" } } } }, - "payout.new": { + "payout.complete": { "post": { "requestBody": { + "description": "Update payout from blindpay", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PayoutNewWebhookOut" + "$ref": "#/components/schemas/PayoutCompleteWebhookOut" } } - }, - "description": "Create payout from blindpay" + } }, "responses": { "200": { - "description": "Payout created" + "description": "Payout completed" } } } @@ -53740,14 +53740,14 @@ "payout.partnerFee": { "post": { "requestBody": { + "description": "Update payout partner fee from blindpay", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PayoutPartnerFeeWebhookOut" } } - }, - "description": "Update payout partner fee from blindpay" + } }, "responses": { "200": { @@ -53759,14 +53759,14 @@ "payout.update": { "post": { "requestBody": { + "description": "Update payout from blindpay", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PayoutUpdateWebhookOut" } } - }, - "description": "Update payout from blindpay" + } }, "responses": { "200": { @@ -53778,14 +53778,14 @@ "tos.accept": { "post": { "requestBody": { + "description": "Accept terms of service", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TosAcceptWebhookOut" } } - }, - "description": "Accept terms of service" + } }, "responses": { "200": { @@ -53794,40 +53794,40 @@ } } }, - "transfer.complete": { + "transfer.new": { "post": { "requestBody": { + "description": "Create transfer from blindpay", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateTransferOut" } } - }, - "description": "Update transfer from blindpay" + } }, "responses": { "200": { - "description": "Transfer completed" + "description": "Transfer created" } } } }, - "transfer.new": { + "transfer.complete": { "post": { "requestBody": { + "description": "Update transfer from blindpay", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateTransferOut" } } - }, - "description": "Create transfer from blindpay" + } }, "responses": { "200": { - "description": "Transfer created" + "description": "Transfer completed" } } } @@ -53835,14 +53835,14 @@ "transfer.update": { "post": { "requestBody": { + "description": "Update transfer from blindpay", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateTransferOut" } } - }, - "description": "Update transfer from blindpay" + } }, "responses": { "200": { @@ -53851,40 +53851,40 @@ } } }, - "virtualAccount.complete": { + "virtualAccount.new": { "post": { "requestBody": { + "description": "Virtual account created from blindpay", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VirtualAccountOut" } } - }, - "description": "Virtual account activated/complete from blindpay" + } }, "responses": { "200": { - "description": "Virtual account complete" + "description": "Virtual account created" } } } }, - "virtualAccount.new": { + "virtualAccount.complete": { "post": { "requestBody": { + "description": "Virtual account activated/complete from blindpay", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VirtualAccountOut" } } - }, - "description": "Virtual account created from blindpay" + } }, "responses": { "200": { - "description": "Virtual account created" + "description": "Virtual account complete" } } } @@ -53892,14 +53892,14 @@ "wallet.inbound": { "post": { "requestBody": { + "description": "Wallet inbound", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletInboundSchemaOut" } } - }, - "description": "Wallet inbound" + } }, "responses": { "200": { @@ -53911,14 +53911,14 @@ "wallet.new": { "post": { "requestBody": { + "description": "Create a wallet for a customer", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletOut" } } - }, - "description": "Create a wallet for a customer" + } }, "responses": { "200": { @@ -53928,4 +53928,4 @@ } } } -} +} \ No newline at end of file diff --git a/.api-sync/sync.py b/.api-sync/sync.py index 481ded7..ee9784f 100644 --- a/.api-sync/sync.py +++ b/.api-sync/sync.py @@ -950,7 +950,11 @@ def cmd_apply(spec_path: Path, report_path: Optional[Path]) -> int: return 1 if applied: - SNAPSHOT_PATH.write_text(json.dumps(new_spec, indent=2, sort_keys=True) + "\n") + # Copy the delivered spec's exact bytes rather than round-tripping through + # json.dumps: re-serializing would reformat/reorder the *entire* file on + # every apply (noise unrelated to the actual drift) and is not needed for + # determinism -- the upstream filter already produces stable formatting. + SNAPSHOT_PATH.write_bytes(spec_path.read_bytes()) print(f"Applied {len(applied)} change(s); bump={bump}") for a in applied: print(f" [{a.kind}] {a.file}: {a.detail}") From bd9bec5060a7907f06e57204e52b7fb7c71c0b17 Mon Sep 17 00:00:00 2001 From: Eric Viana Date: Mon, 3 Aug 2026 20:28:07 -0300 Subject: [PATCH 4/9] fix(client): derive User-Agent version from the package version, not a duplicate literal client.py hardcoded __version__ = "2.3.0" for the User-Agent header, separate from __init__.py's __version__ = "3.0.0". release-please's extra-files only patches __init__.py, so client.py silently drifted every release. Moves the single source of truth to src/blindpay/_version.py, imported by both __init__.py (public re-export, unchanged for consumers) and client.py (no circular import: _version.py has no dependency on the rest of the package). Updated pyproject.toml's [tool.hatch.version] path and release-please-config.json's extra-files to point at the new file. Claude-Session: https://claude.ai/code/session_01F1stiNzuNtJXoXtiW9ZCbs --- pyproject.toml | 2 +- release-please-config.json | 2 +- src/blindpay/__init__.py | 3 +-- src/blindpay/_version.py | 1 + src/blindpay/client.py | 3 +-- 5 files changed, 5 insertions(+), 6 deletions(-) create mode 100644 src/blindpay/_version.py diff --git a/pyproject.toml b/pyproject.toml index 83ecad4..479fb12 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -32,7 +32,7 @@ requires = ["hatchling==1.26.3", "hatch-fancy-pypi-readme"] build-backend = "hatchling.build" [tool.hatch.version] -path = "src/blindpay/__init__.py" +path = "src/blindpay/_version.py" [tool.hatch.build] include = ["src/*", "README.md", "LICENSE", "py.typed"] diff --git a/release-please-config.json b/release-please-config.json index f357f6a..3fe2013 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -10,7 +10,7 @@ "include-v-in-tag": true, "package-name": "blindpay", "extra-files": [ - "src/blindpay/__init__.py" + "src/blindpay/_version.py" ] } } diff --git a/src/blindpay/__init__.py b/src/blindpay/__init__.py index 699b046..d412506 100644 --- a/src/blindpay/__init__.py +++ b/src/blindpay/__init__.py @@ -1,6 +1,5 @@ -__version__ = "3.0.0" - from ._internal.exceptions import BlindPayError +from ._version import __version__ as __version__ from .client import BlindPay, BlindPaySync from .types import ( AccountClass, diff --git a/src/blindpay/_version.py b/src/blindpay/_version.py new file mode 100644 index 0000000..528787c --- /dev/null +++ b/src/blindpay/_version.py @@ -0,0 +1 @@ +__version__ = "3.0.0" diff --git a/src/blindpay/client.py b/src/blindpay/client.py index 8322fc7..7fc3c76 100644 --- a/src/blindpay/client.py +++ b/src/blindpay/client.py @@ -7,6 +7,7 @@ import httpx from ._internal.exceptions import BlindPayError +from ._version import __version__ from .types import BlindpayApiResponse if TYPE_CHECKING: @@ -40,8 +41,6 @@ from blindpay.resources.wallets.offramp import OfframpWalletsResource, OfframpWalletsResourceSync from blindpay.resources.webhooks.webhooks import WebhookEndpointsResource, WebhookEndpointsResourceSync -__version__ = "2.3.0" - T = TypeVar("T") From 23bb0e212bdb347d9fc8abd4f67f97d56d34567a Mon Sep 17 00:00:00 2001 From: Eric Viana Date: Mon, 3 Aug 2026 20:30:29 -0300 Subject: [PATCH 5/9] test(api-sync): assert snapshot refresh is a byte-exact copy of the delivered spec Regression coverage for the raw-bytes-copy fix in c858f1c: asserts --apply --spec leaves spec-snapshot.json byte-identical to that file even when it uses compact separators, non-ascii content and no trailing newline -- formatting a json.load/json.dump round trip would silently normalize away. Claude-Session: https://claude.ai/code/session_01F1stiNzuNtJXoXtiW9ZCbs --- tests/test_api_sync.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/tests/test_api_sync.py b/tests/test_api_sync.py index 9341a0c..1b5cb49 100644 --- a/tests/test_api_sync.py +++ b/tests/test_api_sync.py @@ -639,6 +639,31 @@ def test_enum_only_change_bumps_minor(self, repo: Path): color_src = (repo / "src/blindpay/types.py").read_text() assert "green" in color_src + def test_snapshot_refresh_copies_raw_bytes_not_a_reformatted_json_dump(self, repo: Path): + """Regression test: the patcher must never json.load then json.dump the + delivered spec to refresh the snapshot. Even when the parsed content is + semantically identical, re-serializing changes indentation, separators, + key order and unicode escaping -- which would make every future sync PR + carry a diff of the entire multi-thousand-line file instead of just the + lines that changed, and would make the committed snapshot stop matching + the exact bytes blindpay-v2 ships as spec-current.json.""" + self._setup(repo) + new_spec = json.loads((repo / ".api-sync/spec-snapshot.json").read_text()) + new_spec["components"]["schemas"]["ColorOut"]["properties"]["color"]["enum"].append("green") + new_spec["components"]["schemas"]["ColorOut"]["description"] = "café" # non-ascii, must not get \u-escaped + # deliberately unusual (but still valid) formatting -- compact separators, + # no trailing newline -- that a naive json.dumps of the parsed object + # would normalize away + weird_bytes = json.dumps(new_spec, indent=None, separators=(",", ":"), ensure_ascii=False).encode("utf-8") + spec_path = repo / ".api-sync/spec-current.json" + spec_path.write_bytes(weird_bytes) + + sync = load_sync(repo) + assert sync.cmd_apply(sync.DEFAULT_SPEC_PATH, None) == 0 + + snapshot_bytes = (repo / ".api-sync/spec-snapshot.json").read_bytes() + assert snapshot_bytes == weird_bytes + def test_property_only_change_bumps_patch(self, repo: Path): self._setup(repo) new_spec = json.loads((repo / ".api-sync/spec-snapshot.json").read_text()) From b6218abf0068f7bae4643472cc469a22068c8e52 Mon Sep 17 00:00:00 2001 From: Eric Viana Date: Mon, 3 Aug 2026 20:32:29 -0300 Subject: [PATCH 6/9] feat(ci): rewrite api-sync.yml to run the deterministic patcher Drops the anthropics/claude-code-action step and every CLAUDE_CODE_OAUTH_TOKEN reference. The workflow now: reads .api-sync/spec-current.json from origin/api-sync-data, runs .api-sync/sync.py --apply, and: - exits 0 quietly when there is nothing to apply, - fails loudly (::error:: annotations) when the patcher reports NEEDS_HUMAN, - otherwise commits the regenerated code + refreshed spec-snapshot.json to the api-sync branch, opens/updates the PR with a title prefix derived from the patcher's own bump classification (feat:/fix:) so release-please computes the right version bump, labels it api-sync, and enables auto-merge so the existing required checks are the only gate. Keeps the .github/workflows/ commit guard from the old Claude-driven flow as defense in depth, even though spec-map.json can never point there. api-sync-merged.yml is unchanged: it only clears the api-sync-data baseline files and does not depend on anything replaced here. Claude-Session: https://claude.ai/code/session_01F1stiNzuNtJXoXtiW9ZCbs --- .github/workflows/api-sync.yml | 135 ++++++++++++++++++--------------- 1 file changed, 73 insertions(+), 62 deletions(-) diff --git a/.github/workflows/api-sync.yml b/.github/workflows/api-sync.yml index 96470d6..9af1525 100644 --- a/.github/workflows/api-sync.yml +++ b/.github/workflows/api-sync.yml @@ -11,34 +11,22 @@ permissions: jobs: sync: - name: Sync SDK with API changes + name: Run deterministic spec-sync patcher runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - name: Fetch API sync data - run: | - mkdir -p /tmp/api-sync - git fetch origin api-sync-data - git show origin/api-sync-data:.api-sync/changelog.md > /tmp/api-sync/changelog.md - echo "=== Changelog ===" - cat /tmp/api-sync/changelog.md + - name: Setup Python + uses: actions/setup-python@v5 + with: + python-version: "3.12" - - name: Check for existing api-sync PR - id: check-pr - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Fetch the newly delivered spec from api-sync-data run: | - PR_NUMBER=$(gh pr list --head api-sync --json number --jq '.[0].number // empty') - if [ -n "$PR_NUMBER" ]; then - echo "existing_pr=$PR_NUMBER" >> $GITHUB_OUTPUT - echo "Found existing api-sync PR: #$PR_NUMBER" - else - echo "existing_pr=" >> $GITHUB_OUTPUT - echo "No existing api-sync PR found" - fi + git fetch origin api-sync-data + git show origin/api-sync-data:.api-sync/spec-current.json > .api-sync/spec-current.json - - name: Create or checkout api-sync branch + - name: Create or reset the api-sync branch from main run: | git fetch origin api-sync 2>/dev/null || true if git rev-parse --verify origin/api-sync >/dev/null 2>&1; then @@ -48,63 +36,86 @@ jobs: git checkout -b api-sync fi - - name: Apply changes with Claude Code - uses: anthropics/claude-code-action@v1 - with: - claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }} - claude_args: '--model claude-opus-5 --allowedTools "Bash(*),Read,Edit,Write,Glob,Grep"' - prompt: | - You are updating this SDK to match API changes. Read CLAUDE.md for this SDK's conventions. - - The changelog is at /tmp/api-sync/changelog.md — it contains ALL the information you need. - Do NOT read openapi.json. The changelog is self-contained. - - INSTRUCTIONS: - 1. Read CLAUDE.md thoroughly for this SDK's patterns and conventions. - 2. Read /tmp/api-sync/changelog.md — it lists every enum type with every value, every field to add, and every change to make. - 3. Implement ALL changes. Go through the changelog section by section: - - Section 1 (Enum Types): For each enum listed, check if the SDK has it. If missing, create it. If it exists, add any missing values. The changelog lists ALL values — add the ones that don't exist yet. - - Section 2 (Receiver Fields): Add each listed field to the receiver input/output types. - - Section 3 (Version): Minor bump. - 4. Do not skip ANY enum or field. Every item in the changelog must be addressed. - 5. Follow CLAUDE.md patterns exactly for naming, typing, and file organization. - 6. MINOR version bump only. - 7. Run lint and type check commands (see CLAUDE.md). Fix any errors until clean. - 8. Do NOT create commits — just modify the files. + - name: Run the patcher + id: patch + continue-on-error: true + run: python3 .api-sync/sync.py --apply --report /tmp/api-sync-report.json + + - name: Show report + if: always() + run: | + if [ -f /tmp/api-sync-report.json ]; then + cat /tmp/api-sync-report.json + else + echo "(no report written -- the patcher failed before producing one, see the 'Run the patcher' step)" + fi + + - name: Print coverage report (non-blocking) + if: always() + run: python3 .api-sync/sync.py --coverage || true + + - name: Fail loudly if the patcher could not apply cleanly + if: steps.patch.outcome == 'failure' + run: | + echo "::error::api-sync patcher could not apply the new spec cleanly. This needs a human: see the 'Run the patcher' and 'Show report' step output above for the exact NEEDS_HUMAN reason(s)." + exit 1 + + - name: Determine whether there is anything to commit + id: bump + run: | + python3 - <<'PY' >> "$GITHUB_OUTPUT" + import json + + with open("/tmp/api-sync-report.json") as f: + report = json.load(f) + applied = report.get("applied", []) + bump = report.get("bump") + prefix = {"minor": "feat", "patch": "fix"}.get(bump, "chore") + print(f"has_changes={'true' if applied else 'false'}") + print(f"bump={bump or ''}") + print(f"prefix={prefix}") + PY - name: Commit and push - id: commit + if: steps.bump.outputs.has_changes == 'true' run: | git remote set-url origin "https://x-access-token:${{ secrets.SDK_SYNC_PAT }}@github.com/${{ github.repository }}.git" + # Defense in depth: the patcher's own spec-map.json never points at + # .github/workflows, but never let the automated flow commit changes + # there even if something upstream of this step somehow produced one. git checkout -- .github/workflows/ 2>/dev/null || true git add -A git reset HEAD .github/workflows/ 2>/dev/null || true - if git diff --staged --quiet; then - echo "No changes to commit" - echo "has_changes=false" >> $GITHUB_OUTPUT - exit 0 - fi - echo "has_changes=true" >> $GITHUB_OUTPUT git config user.name "github-actions[bot]" git config user.email "github-actions[bot]@users.noreply.github.com" - git commit -m "feat: sync SDK with API changes" + git commit -m "${{ steps.bump.outputs.prefix }}: sync SDK with API changes" git push --force-with-lease origin api-sync - - name: Create or update PR - if: steps.commit.outputs.has_changes == 'true' + - name: Check for existing api-sync PR + if: steps.bump.outputs.has_changes == 'true' + id: check-pr + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + PR_NUMBER=$(gh pr list --head api-sync --json number --jq '.[0].number // empty') + echo "existing_pr=$PR_NUMBER" >> "$GITHUB_OUTPUT" + + - name: Create or update PR and enable auto-merge + if: steps.bump.outputs.has_changes == 'true' env: GH_TOKEN: ${{ secrets.SDK_SYNC_PAT }} run: | + set -e EXISTING_PR="${{ steps.check-pr.outputs.existing_pr }}" + TITLE="${{ steps.bump.outputs.prefix }}: sync SDK with API changes" + BODY="Automated, deterministic SDK sync (.api-sync/sync.py --apply). Bump: ${{ steps.bump.outputs.bump }}. See the workflow run's 'Show report' step for the exact applied changes." if [ -n "$EXISTING_PR" ]; then - echo "Updating existing PR #$EXISTING_PR" - gh pr comment "$EXISTING_PR" --body "Updated with latest API changes." + gh pr edit "$EXISTING_PR" --title "$TITLE" --body "$BODY" + PR_NUMBER="$EXISTING_PR" else - gh pr create \ - --title "feat: sync SDK with API changes" \ - --body "Automated SDK update from API changes." \ - --base main \ - --head api-sync \ - --label api-sync + gh pr create --title "$TITLE" --body "$BODY" --base main --head api-sync --label api-sync + PR_NUMBER=$(gh pr list --head api-sync --json number --jq '.[0].number') fi + + gh pr merge "$PR_NUMBER" --auto --squash From 29f1693746f90167f3a70e91bab97a37b49a0f16 Mon Sep 17 00:00:00 2001 From: Eric Viana Date: Mon, 3 Aug 2026 20:32:38 -0300 Subject: [PATCH 7/9] feat(ci): auto-merge the release-please PR to make releases zero-touch Adds a workflow that enables GitHub's native auto-merge on the release-please PR as soon as it exists, instead of waiting for a human to click merge. Gating is strict and narrow: only fires when github.event.pull_request.user.login == 'github-actions[bot]' AND the PR carries release-please's own "autorelease: pending" label. This never touches a human-authored PR, and enabling auto-merge does not bypass any required check (lint, typecheck, tests, contract-check, api-sync-check, snyk) -- GitHub still waits for all of them before merging. With this, a merged api-sync PR now flows all the way to PyPI (via publish.yaml's existing release-please -> tag -> uv publish path) with zero human involvement. Note: this repo currently has "Allow auto-merge" OFF at the repository level (gh api repos/blindpaylabs/blindpay-python .allow_auto_merge is false); both this workflow and api-sync.yml's own auto-merge step need it turned on (Settings -> General -> Pull Requests) or `gh pr merge --auto` will fail. Left as a manual follow-up rather than changing repo settings in this PR. Claude-Session: https://claude.ai/code/session_01F1stiNzuNtJXoXtiW9ZCbs --- .github/workflows/release-auto-merge.yaml | 40 +++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 .github/workflows/release-auto-merge.yaml diff --git a/.github/workflows/release-auto-merge.yaml b/.github/workflows/release-auto-merge.yaml new file mode 100644 index 0000000..8bece1a --- /dev/null +++ b/.github/workflows/release-auto-merge.yaml @@ -0,0 +1,40 @@ +name: Release Auto-Merge + +# Makes the release itself zero-touch: once a merged api-sync (or any other) +# PR lands a conventional-commit change on main, release-please-action (in +# publish.yaml) opens/updates its own "chore(main): release X.Y.Z" PR. That PR +# still has to be merged by a human today. This workflow enables GitHub's +# native auto-merge on it instead, so it merges itself as soon as the +# existing required checks (lint, typecheck, tests, contract-check, +# api-sync-check, snyk) pass -- nothing here bypasses those checks. +# +# Gating is intentionally strict and narrow: only a PR opened by the +# release-please bot itself (github-actions[bot]), carrying release-please's +# own "autorelease: pending" label. Both conditions must hold, so this never +# touches a human-authored PR or a release-please PR that already failed +# something (release-please clears the label / the PR gets closed in that +# case). Enabling auto-merge does not merge anything immediately; GitHub +# still waits for every required check to succeed first. + +on: + pull_request: + types: [opened, labeled, synchronize, reopened] + branches: [main] + +permissions: + pull-requests: write + contents: write + +jobs: + auto-merge-release-pr: + name: Enable auto-merge on the release-please PR + runs-on: ubuntu-latest + if: > + github.event.pull_request.user.login == 'github-actions[bot]' && + contains(github.event.pull_request.labels.*.name, 'autorelease: pending') + steps: + - name: Enable auto-merge + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + gh pr merge "${{ github.event.pull_request.number }}" --auto --squash --repo "${{ github.repository }}" From dec8d56046246c45f44816c76ba309c76f55daee Mon Sep 17 00:00:00 2001 From: Eric Viana Date: Mon, 3 Aug 2026 20:47:03 -0300 Subject: [PATCH 8/9] fix(api-sync): never emit a bare-required field on an already-published total=True TypedDict A real PR review caught a breaking-change bug in the applied drift: `class CreateQuoteInput(TypedDict):` has no `total=False`, so every key is structurally required regardless of whether its value type is Optional[...]. The previous choose_field_annotation matched sibling style (plain Optional[str], since that's what CreateQuoteInput's other fields use) and emitted `refund_wallet_address: Optional[str]` -- a REQUIRED key. Any existing caller building a CreateQuoteInput without the new key now fails pyright/mypy, which is exactly the "no breaking change to the published surface" constraint this whole project exists to enforce. It's why the previous commit had to add "refund_wallet_address": None to four call sites. Fix: the emitted annotation now depends only on the target class's totality, never on sibling convention: - total=False (or the non-required half of the `_XRequired` two-part pattern): a bare Optional[T]/T is already optional, matching the existing behavior. - total=True (the default): always NotRequired[Optional[T]] / NotRequired[T], regardless of whether any sibling field already uses NotRequired. Also adds ensure_name_imported(): NotRequired (or Optional) is added to whichever existing `from typing import ...` / `from typing_extensions import ...` line already carries TypedDict, matching that file's own convention, since quotes.py imports Optional from typing but had never needed NotRequired before. CreateQuoteInput.refund_wallet_address is now `NotRequired[Optional[str]]`; the four test_quotes.py call sites that had to explicitly pass `"refund_wallet_address": None` are reverted, since omitting it is exactly what this fix makes safe again. pyright/mypy both pass with the field omitted, proving the regression is closed. Bump stays "patch". Also fixes a related, smaller gap found during the same review pass: the old-vs-new type-change comparison only compared base JSON type (string/integer/etc), never nullability, so a spec property flipping between ["T","null"] and "T" passed silently in either direction. Now flagged as needs-human symmetrically, with one deliberate exception: a property with no "type" key at all on either side (pure metadata, e.g. created_at gaining an explicit type where it previously had none) is treated as compatible, since there is nothing concrete to compare. Claude-Session: https://claude.ai/code/session_01F1stiNzuNtJXoXtiW9ZCbs --- .api-sync/sync.py | 105 +++++++++++--- src/blindpay/resources/quotes/quotes.py | 4 +- tests/resources/test_quotes.py | 4 - tests/test_api_sync.py | 179 ++++++++++++++++++++++-- 4 files changed, 253 insertions(+), 39 deletions(-) diff --git a/.api-sync/sync.py b/.api-sync/sync.py index ee9784f..4fa1576 100644 --- a/.api-sync/sync.py +++ b/.api-sync/sync.py @@ -579,15 +579,32 @@ def diff_removals_and_changes(old_spec: dict, new_spec: dict, map_data: dict, in ) ) continue - old_type, _ = coarse_type(old_props[f]) - new_type, _ = coarse_type(new_props[f]) - if old_type is not None and new_type is not None and old_type != new_type: - problems.append( - NeedsHuman( - "type_change", - f"{name}{'/' + path if path else ''}.{f} type changed ({old_type} -> {new_type})", + old_type, old_nullable = coarse_type(old_props[f]) + new_type, new_nullable = coarse_type(new_props[f]) + # Ambiguous on either side (multi-type, or no "type" key at all -- + # e.g. a property that only ever had "example"/"description") is + # deliberately treated as compatible, not needs-human: this is the + # real, observed, benign shape of this spec's own evolution + # (created_at/updated_at gaining an explicit + # {"type": ["string","null"], "format": "date-time"} where they + # previously had no "type" key at all). There is nothing to + # meaningfully compare when one side never declared a concrete type. + if old_type is not None and new_type is not None: + if old_type != new_type: + problems.append( + NeedsHuman( + "type_change", + f"{name}{'/' + path if path else ''}.{f} type changed ({old_type} -> {new_type})", + ) + ) + elif old_nullable != new_nullable: + problems.append( + NeedsHuman( + "type_change", + f"{name}{'/' + path if path else ''}.{f} nullability changed " + f"(nullable={old_nullable} -> nullable={new_nullable})", + ) ) - ) # new operations (paths present in new, absent from old) old_paths = set(old_spec.get("paths", {}).keys()) @@ -692,21 +709,27 @@ def infer_annotation(prop_schema: dict) -> Optional[str]: return SCALAR_TYPE_MAP.get(t0) -def class_uses_notrequired(info: ClassInfo) -> bool: - for item in info.own_fields.values(): - seg = ast.get_source_segment(info.source, item.annotation) or "" - if seg.startswith("NotRequired["): - return True - return False - - def choose_field_annotation(info: ClassInfo, python_type: str, nullable: bool) -> str: + """A newly ADDED optional spec property must never turn into a required + dict key. Whether that needs an explicit NotRequired[...] wrapper depends + entirely on the target class's totality, not on sibling style: + - total=False (a class declared `total=False`, or the non-required half + of the `_XRequired` two-part pattern -- `info` is always the class we + insert into, which for that pattern already IS the total=False side): + every key is already optional, so a bare `T` / `Optional[T]` is correct + and sufficient. + - total=True (the default, e.g. `class CreateQuoteInput(TypedDict):`): + every key is structurally REQUIRED regardless of whether its value type + happens to be Optional[...]. Adding a bare `Optional[T]` field here + would make every existing caller that omits the new key fail pyright + and mypy -- a breaking change to an already-published TypedDict. This + always needs `NotRequired[...]`, independent of whether any sibling + field already uses that convention. + """ + inner = f"Optional[{python_type}]" if nullable else python_type if info.total_false: - return f"Optional[{python_type}]" if nullable else python_type - if class_uses_notrequired(info): - inner = f"Optional[{python_type}]" if nullable else python_type - return f"NotRequired[{inner}]" - return f"Optional[{python_type}]" + return inner + return f"NotRequired[{inner}]" def splice_typeddict_add_field(source: str, class_node: ast.ClassDef, field_name: str, annotation_text: str) -> str: @@ -720,6 +743,36 @@ def splice_typeddict_add_field(source: str, class_node: ast.ClassDef, field_name return "".join(lines) +def ensure_name_imported( + source: str, name: str, candidate_modules: tuple[str, ...] = ("typing", "typing_extensions") +) -> str: + """Add `name` to whichever of `candidate_modules` this file already imports + TypedDict from (matching that file's own typing vs typing_extensions + convention), if it is not already imported from either. A no-op if `name` + is already present. Assumes a single-line, non-aliased import statement, + which is what every TypedDict-bearing file in this repo currently uses.""" + tree = ast.parse(source) + target: Optional[ast.ImportFrom] = None + for node in ast.walk(tree): + if isinstance(node, ast.ImportFrom) and node.module in candidate_modules: + names = [a.name for a in node.names] + if name in names: + return source + if "TypedDict" in names: + target = node + if target is None: + return source + + names = sorted({a.name for a in target.names} | {name}) + new_line = f"from {target.module} import {', '.join(names)}" + lines = source.splitlines(keepends=True) + start, end = target.lineno, target.end_lineno + assert end is not None + trailing = "\n" if lines[end - 1].endswith("\n") else "" + lines[start - 1 : end] = [new_line + trailing] + return "".join(lines) + + def apply_property_change(gap: PropertyGap, index: SdkIndex) -> tuple[list[AppliedChange], list[NeedsHuman]]: applied: list[AppliedChange] = [] needs_human: list[NeedsHuman] = [] @@ -757,7 +810,15 @@ def apply_property_change(gap: PropertyGap, index: SdkIndex) -> tuple[list[Appli continue _, nullable = coarse_type(prop_schema) annotation = choose_field_annotation(info, python_type, nullable) - new_source = splice_typeddict_add_field(info.source, info.node, name, annotation) + source = info.source + for required_name in ("NotRequired", "Optional"): + if f"{required_name}[" in annotation: + updated = ensure_name_imported(source, required_name) + if updated != source: + source = updated + info.file.write_text(source) + info.node = _reparse_class(info.file, symbol) + new_source = splice_typeddict_add_field(source, info.node, name, annotation) info.file.write_text(new_source) # re-read so subsequent insertions into the same class see updated positions info.source = new_source diff --git a/src/blindpay/resources/quotes/quotes.py b/src/blindpay/resources/quotes/quotes.py index 9d14b4d..a468250 100644 --- a/src/blindpay/resources/quotes/quotes.py +++ b/src/blindpay/resources/quotes/quotes.py @@ -1,6 +1,6 @@ from typing import Any, Dict, List, Optional -from typing_extensions import TypedDict +from typing_extensions import NotRequired, TypedDict from ..._internal.api_client import InternalApiClient, InternalApiClientSync from ...types import ( @@ -39,7 +39,7 @@ class CreateQuoteInput(TypedDict): transaction_document_file: Optional[str] transaction_document_id: Optional[str] transaction_document_type: TransactionDocumentType - refund_wallet_address: Optional[str] + refund_wallet_address: NotRequired[Optional[str]] class CreateQuoteResponse(TypedDict): diff --git a/tests/resources/test_quotes.py b/tests/resources/test_quotes.py index b1ca135..6ddaf7e 100644 --- a/tests/resources/test_quotes.py +++ b/tests/resources/test_quotes.py @@ -53,7 +53,6 @@ async def test_create_quote(self): "transaction_document_file": None, "transaction_document_id": None, "transaction_document_type": "invoice", - "refund_wallet_address": None, } ) @@ -74,7 +73,6 @@ async def test_create_quote(self): "transaction_document_file": None, "transaction_document_id": None, "transaction_document_type": "invoice", - "refund_wallet_address": None, }, ) @@ -160,7 +158,6 @@ def test_create_quote(self): "transaction_document_file": None, "transaction_document_id": None, "transaction_document_type": "invoice", - "refund_wallet_address": None, } ) @@ -181,7 +178,6 @@ def test_create_quote(self): "transaction_document_file": None, "transaction_document_id": None, "transaction_document_type": "invoice", - "refund_wallet_address": None, }, ) diff --git a/tests/test_api_sync.py b/tests/test_api_sync.py index 1b5cb49..a6f560c 100644 --- a/tests/test_api_sync.py +++ b/tests/test_api_sync.py @@ -136,19 +136,27 @@ def _class_info(self, sync: types.ModuleType, source: str, name: str): own_fields=own_fields, ) - def test_plain_total_true_class_uses_optional(self): + def test_total_true_class_always_wraps_new_field_in_notrequired(self): + """A total=True class (the default -- no `total=False` anywhere) makes + every declared key structurally required. A newly added field must be + NotRequired regardless of whether any sibling field already uses that + convention or just uses a bare Optional[...] for its value type -- + otherwise every existing caller that omits the new key breaks pyright + and mypy. This is the exact bug a real PR review caught: `class + CreateQuoteInput(TypedDict):` has siblings typed as plain + `Optional[str]`, but those were part of the original, already-required + shape -- that convention does not extend to fields added later.""" sync = load_sync(Path("/nonexistent")) source = "class Plain(TypedDict):\n x: str\n y: Optional[str]\n" info = self._class_info(sync, source, "Plain") - assert sync.class_uses_notrequired(info) is False - assert sync.choose_field_annotation(info, "str", nullable=True) == "Optional[str]" - assert sync.choose_field_annotation(info, "str", nullable=False) == "Optional[str]" + assert info.total_false is False + assert sync.choose_field_annotation(info, "str", nullable=True) == "NotRequired[Optional[str]]" + assert sync.choose_field_annotation(info, "str", nullable=False) == "NotRequired[str]" - def test_notrequired_precedent_wraps_new_field_in_notrequired(self): + def test_total_true_class_with_existing_notrequired_sibling_still_wraps(self): sync = load_sync(Path("/nonexistent")) source = "class WithNR(TypedDict):\n x: str\n y: NotRequired[str]\n" info = self._class_info(sync, source, "WithNR") - assert sync.class_uses_notrequired(info) is True assert sync.choose_field_annotation(info, "str", nullable=True) == "NotRequired[Optional[str]]" assert sync.choose_field_annotation(info, "str", nullable=False) == "NotRequired[str]" @@ -171,6 +179,83 @@ def test_splice_typeddict_add_field_appends_after_last_statement(self): ast.parse(result) +# --------------------------------------------------------------------------- # +# Import management: NotRequired/Optional must be added when a class needs +# them for the first time (this is the exact real-world case: quotes.py +# already imports Optional from typing but not NotRequired from anywhere) +# --------------------------------------------------------------------------- # + + +class TestImportManagement: + def test_adds_notrequired_to_existing_typing_extensions_import(self): + sync = load_sync(Path("/nonexistent")) + source = "from typing_extensions import TypedDict\n\n\nclass Plain(TypedDict):\n x: str\n" + result = sync.ensure_name_imported(source, "NotRequired") + assert result.startswith("from typing_extensions import NotRequired, TypedDict\n") + ast.parse(result) + + def test_adds_notrequired_to_existing_typing_import_when_that_is_where_typeddict_lives(self): + """Matches payins.py's own style: `from typing import ... TypedDict`, + no typing_extensions import at all.""" + sync = load_sync(Path("/nonexistent")) + source = "from typing import List, Optional, TypedDict\n\n\nclass Plain(TypedDict):\n x: str\n" + result = sync.ensure_name_imported(source, "NotRequired") + assert result.startswith("from typing import List, NotRequired, Optional, TypedDict\n") + ast.parse(result) + + def test_noop_when_already_imported(self): + sync = load_sync(Path("/nonexistent")) + source = "from typing_extensions import NotRequired, TypedDict\n\n\nclass Plain(TypedDict):\n x: str\n" + result = sync.ensure_name_imported(source, "NotRequired") + assert result == source + + def test_end_to_end_apply_adds_import_and_wraps_field_for_total_true_class_lacking_notrequired(self, repo: Path): + """The exact real-world scenario a PR review caught: a total=True + class in a file that imports Optional from `typing` but has never + needed NotRequired before. Both the import and the field annotation + must come out right in the same apply.""" + write(repo, "src/blindpay/__init__.py", "") + write( + repo, + "src/blindpay/resources/quotes_like.py", + "from typing import Optional\n\nfrom typing_extensions import TypedDict\n\n\n" + "class CreateThingInput(TypedDict):\n bank_account_id: str\n description: Optional[str]\n", + ) + map_data: dict[str, Any] = { + "enums": [], + "types": [ + { + "spec": "ThingIn", + "sdk": [{"file": "src/blindpay/resources/quotes_like.py", "symbol": "CreateThingInput"}], + } + ], + "ignore": {"schemas": []}, + } + _write_map_and_unmodeled(repo, map_data) + old_spec = base_schema( + { + "ThingIn": { + "properties": {"bank_account_id": {"type": "string"}, "description": {"type": ["string", "null"]}} + } + }, + {"/t": {"post": op(ref_in="ThingIn")}}, + ) + write(repo, ".api-sync/spec-snapshot.json", json.dumps(old_spec)) + new_spec = json.loads(json.dumps(old_spec)) + new_spec["components"]["schemas"]["ThingIn"]["properties"]["refund_wallet_address"] = { + "type": ["string", "null"] + } + write(repo, ".api-sync/spec-current.json", json.dumps(new_spec)) + + sync = load_sync(repo) + assert sync.cmd_apply(sync.DEFAULT_SPEC_PATH, None) == 0 + + result = (repo / "src/blindpay/resources/quotes_like.py").read_text() + assert "from typing_extensions import NotRequired, TypedDict" in result + assert "refund_wallet_address: NotRequired[Optional[str]]" in result + ast.parse(result) + + # --------------------------------------------------------------------------- # # Reconciliation against a fixture repo (enums, properties, nested specPath) # --------------------------------------------------------------------------- # @@ -498,6 +583,7 @@ def test_required_ness_change_is_needs_human(self, repo: Path): assert any(p.kind == "required_change" for p in problems) def test_type_change_is_needs_human(self, repo: Path): + """string -> integer on a plain field.""" _write_fixture_repo(repo) sync = load_sync(repo) index = sync.build_sdk_index(sync.SRC_ROOT) @@ -510,6 +596,78 @@ def test_type_change_is_needs_human(self, repo: Path): problems = sync.diff_removals_and_changes(old, new, self._map(), index) assert any(p.kind == "type_change" for p in problems) + def test_nullable_to_non_nullable_is_needs_human(self, repo: Path): + """Same base JSON type, nullability narrows -- the SDK's existing + Optional[...] (or lack of it) would silently stop matching the wire.""" + _write_fixture_repo(repo) + sync = load_sync(repo) + index = sync.build_sdk_index(sync.SRC_ROOT) + old = base_schema( + {"PlainOut": {"properties": {"id": {"type": ["string", "null"]}}}}, + {"/x": {"get": op(ref_out="PlainOut")}}, + ) + new = base_schema( + {"PlainOut": {"properties": {"id": {"type": "string"}}}}, {"/x": {"get": op(ref_out="PlainOut")}} + ) + problems = sync.diff_removals_and_changes(old, new, self._map(), index) + assert any(p.kind == "type_change" and "nullability" in p.detail for p in problems) + + def test_non_nullable_to_nullable_is_also_needs_human(self, repo: Path): + """The reverse direction is flagged too -- symmetric with required_change, + which does not privilege either direction either.""" + _write_fixture_repo(repo) + sync = load_sync(repo) + index = sync.build_sdk_index(sync.SRC_ROOT) + old = base_schema( + {"PlainOut": {"properties": {"id": {"type": "string"}}}}, {"/x": {"get": op(ref_out="PlainOut")}} + ) + new = base_schema( + {"PlainOut": {"properties": {"id": {"type": ["string", "null"]}}}}, + {"/x": {"get": op(ref_out="PlainOut")}}, + ) + problems = sync.diff_removals_and_changes(old, new, self._map(), index) + assert any(p.kind == "type_change" and "nullability" in p.detail for p in problems) + + def test_enum_property_degrading_to_bare_string_is_needs_human(self, repo: Path): + """A mapped enum losing its `enum` array entirely (API stops constraining + the field) must not silently pass: every value the SDK currently models + shows up as no longer present in the (now enum-less) new spec, and the + existing enum_member_removed path already hard-fails on that.""" + _write_fixture_repo(repo) + sync = load_sync(repo) + index = sync.build_sdk_index(sync.SRC_ROOT) + old = base_schema( + {"ColorOut": {"properties": {"color": {"type": "string", "enum": ["red", "blue"]}}}}, + {"/x": {"get": op(ref_out="ColorOut")}}, + ) + new = base_schema( + {"ColorOut": {"properties": {"color": {"type": "string"}}}}, # enum removed entirely + {"/x": {"get": op(ref_out="ColorOut")}}, + ) + problems = sync.diff_removals_and_changes(old, new, self._map(), index) + assert any(p.kind == "enum_member_removed" for p in problems) + + def test_ambiguous_type_metadata_only_change_is_deliberately_compatible(self, repo: Path): + """The one case treated as compatible on purpose: a property that had no + "type" key at all (only "example"/"description") gaining an explicit + type is not a type change to react to -- there is nothing on the old + side to compare against. This is the exact, real, benign shape this + spec's own created_at/updated_at fields went through (gaining + {"type": ["string","null"], "format": "date-time"} where they + previously had none).""" + _write_fixture_repo(repo) + sync = load_sync(repo) + index = sync.build_sdk_index(sync.SRC_ROOT) + old = base_schema( + {"PlainOut": {"properties": {"id": {"example": "abc"}}}}, {"/x": {"get": op(ref_out="PlainOut")}} + ) + new = base_schema( + {"PlainOut": {"properties": {"id": {"type": ["string", "null"], "format": "date-time", "example": "abc"}}}}, + {"/x": {"get": op(ref_out="PlainOut")}}, + ) + problems = sync.diff_removals_and_changes(old, new, self._map(), index) + assert problems == [] + def test_new_operation_is_needs_human(self, repo: Path): _write_fixture_repo(repo) sync = load_sync(repo) @@ -677,12 +835,11 @@ def test_property_only_change_bumps_patch(self, repo: Path): report = json.loads(report_path.read_text()) assert report["bump"] == "patch" + # Plain is total=True, so the newly added field must be NotRequired -- + # a bare "extra: str" would make it a required key and break every + # existing caller that omits it. sample_src = (repo / "src/blindpay/resources/sample.py").read_text() - assert ( - "extra: NotRequired[str]" in sample_src - or "extra: Optional[str]" in sample_src - or "extra: str" in sample_src - ) + assert "extra: NotRequired[str]" in sample_src def test_apply_twice_is_idempotent(self, repo: Path): self._setup(repo) From 950315debb49019514db720e9a835ecfc9176b63 Mon Sep 17 00:00:00 2001 From: Eric Viana Date: Mon, 3 Aug 2026 20:55:22 -0300 Subject: [PATCH 9/9] feat(api-sync): add --audit-types, a non-blocking state audit of every mapped property's type diff_removals_and_changes only ever catches type/nullability drift going forward from a synced baseline -- it cannot see a pre-existing latent mismatch between the spec's declared type and the SDK's annotation that was already there when a field was first modeled. This closes that blind spot the same way state reconciliation replaced event diffing for presence: a full, non-blocking state comparison, reusing the same primitives (coarse_type, SCALAR_TYPE_MAP) instead of a new engine. `--audit-types` walks every mapped `types` entry, compares each modeled property's spec type/nullability against the SDK's actual annotation text, and prints a report. Always exits 0 -- this is Phase C triage material, not a gate; a pile of pre-existing mismatches must not block CI. Flags: - spec nullable, SDK annotation missing Optional[...] (a real gap: a caller could see None where the type says it can't happen); - an enum-constrained property modeled as a bare scalar (no Literal); - a scalar type mismatch (e.g. spec number, SDK str), with integer->float treated as a deliberately compatible widening; - spec array/object vs a non-List/non-nested-TypedDict SDK annotation. Deliberately NOT flagged: SDK wider than the spec needs (Optional where the spec is never null, float where an int would do) -- a legitimate, common, harmless modeling choice, not a bug. A single map entry can list several spec locators asserted to share one shape (e.g. tracking_payment duplicated inline across 6 payout schemas); findings are deduplicated by (file, symbol, field, note) so the same real issue is not reported once per locator. Run against this repo's own current spec: 316 findings, all non-blocking. 293 are "spec nullable, SDK missing Optional" -- overwhelmingly the recent, broad, defensive nullable-almost-everything pass this spec's own created_at/updated_at fields went through (see the c858f1c commit message), not 293 distinct bugs. 21 are enum-constrained properties modeled as a bare str (a mix of legitimate free-form fields and real missing-Literal gaps, e.g. Payin.type/status/payment_method and the shared Tracking*.step fields). Two look like genuine, worth-triaging issues: PayinOut.billing_fee_amount is `number` on the wire but `Optional[str]` in the SDK (a financial amount modeled as a string), and VirtualAccountOut.blockchain_wallet is a real {network, address} object on the wire but collapsed to `Optional[str]` in the SDK (the network/address sub-fields are not modeled at all). None fixed here -- Phase C triage, per the ask. Wired into the API Sync Check CI job as a fourth, non-blocking, always-green step next to the coverage report. Claude-Session: https://claude.ai/code/session_01F1stiNzuNtJXoXtiW9ZCbs --- .api-sync/sync.py | 163 ++++++++++++++++++++++++++ .github/workflows/api-sync-check.yaml | 4 + tests/test_api_sync.py | 103 ++++++++++++++++ 3 files changed, 270 insertions(+) diff --git a/.api-sync/sync.py b/.api-sync/sync.py index 4fa1576..29c85a5 100644 --- a/.api-sync/sync.py +++ b/.api-sync/sync.py @@ -6,6 +6,7 @@ python3 .api-sync/sync.py --apply [--spec PATH] [--report PATH] python3 .api-sync/sync.py --validate-map python3 .api-sync/sync.py --coverage [--spec PATH] + python3 .api-sync/sync.py --audit-types [--spec PATH] No third-party dependencies. Mirrors check_contract.py's style: ast for reading, precise text splicing for writing. @@ -1037,6 +1038,165 @@ def cmd_coverage(spec_path: Path) -> int: return 0 +# --------------------------------------------------------------------------- # +# Type audit (non-blocking, informational): does the SDK's CURRENT annotation +# for every mapped property still match the spec's CURRENT declared type, +# independent of any old-vs-new diff? diff_removals_and_changes only ever +# catches drift going forward from a synced baseline; it cannot see a +# pre-existing latent mismatch that was already there when a field was first +# modeled. This reuses the same primitives (coarse_type, SCALAR_TYPE_MAP) in a +# state comparison instead of a diff, mirroring how reconcile_* replaced +# event-diffing with state reconciliation for presence. +# --------------------------------------------------------------------------- # + + +def collect_annotations( + symbol: str, file_rel: str, index: SdkIndex, seen: Optional[set[str]] = None +) -> dict[str, tuple[ast.expr, str]]: + """field name -> (annotation node, source text) across the class and any + locally-defined base (the `_XRequired` two-part pattern).""" + seen = seen or set() + key = f"{file_rel}::{symbol}" + if key in seen: + return {} + seen.add(key) + info = index.find_class(symbol, file_rel) + if info is None: + return {} + result: dict[str, tuple[ast.expr, str]] = {} + for base in info.bases: + result.update(collect_annotations(base, str(info.file.relative_to(ROOT)), index, seen)) + for name, node in info.own_fields.items(): + result[name] = (node.annotation, info.source) + return result + + +def _strip_wrappers(ann_text: str) -> tuple[str, bool]: + """Returns (innermost type text, was_optional).""" + text = ann_text.strip() + if text.startswith("NotRequired[") and text.endswith("]"): + text = text[len("NotRequired[") : -1].strip() + is_optional = False + if text.startswith("Optional[") and text.endswith("]"): + is_optional = True + text = text[len("Optional[") : -1].strip() + return text, is_optional + + +def audit_property_type(prop_schema: dict, ann_text: str) -> Optional[str]: + """A property with no direct SDK counterpart is not this function's + concern (that's reconcile_types'). Only flags cases where the SDK + annotation is NARROWER or otherwise structurally wrong versus the spec -- + a SDK type that is deliberately wider than necessary (e.g. Optional[str] + for a non-nullable property, or float for a spec integer) is a legitimate, + common modeling choice, not a bug, and is not reported.""" + inner, is_optional = _strip_wrappers(ann_text) + base_type, nullable = coarse_type(prop_schema) + + if nullable and not is_optional: + return f"spec is nullable but SDK annotation `{ann_text}` has no Optional[...]" + + if "enum" in prop_schema: + if inner in SCALAR_TYPE_MAP.values(): + return f"spec property is enum-constrained but SDK annotation is a bare `{inner}` (no Literal)" + return None # trust some Literal/mapped-symbol reference; membership is reconcile_enums's job + + if base_type is None: + return None # ambiguous on the spec side (multi-type, or no "type" key) -- nothing to compare + if base_type == "array": + return None if inner.startswith(("List[", "list[")) else f"spec type is array but SDK annotation is `{inner}`" + if base_type == "object": + if inner in SCALAR_TYPE_MAP.values(): + return f"spec type is object but SDK annotation is a bare scalar `{inner}`" + return None # assume a nested TypedDict reference; not verifying its own shape here + + expected = SCALAR_TYPE_MAP.get(base_type) + if expected is None or inner == expected: + return None + if base_type == "integer" and inner == "float": + return None # deliberately compatible widening + return f"spec type `{base_type}` (expected `{expected}`) but SDK annotation is `{inner}`" + + +def audit_types(spec: dict, map_data: dict) -> list[dict[str, str]]: + """One map entry can list several spec locators that are asserted to share + the same shape (e.g. tracking_payment duplicated inline across 6 payout + schemas) -- audit against a single representative locator, not once per + duplicate, or the same real finding is reported N times over.""" + index = build_sdk_index(SRC_ROOT) + reachable = compute_reachable_schemas(spec) + findings: list[dict[str, str]] = [] + + for e in map_data.get("types", []): + spec_names = e["spec"] if isinstance(e["spec"], list) else [e["spec"]] + path = e.get("specPath") + reachable_names = sorted(n for n in spec_names if n in reachable) + if not reachable_names: + continue + representative = reachable_names[0] + schema_obj = get_schema(spec, representative) + if schema_obj is None: + continue + schema_label = ( + representative + if len(reachable_names) == 1 + else f"{representative} (+{len(reachable_names) - 1} shared locator(s))" + ) + props = get_properties(resolve_path(schema_obj, path)) + for site in e["sdk"]: + annotations = collect_annotations(site["symbol"], site["file"], index) + for field_name in sorted(props.keys()): + if field_name not in annotations: + continue + ann_node, source = annotations[field_name] + ann_text = ast.get_source_segment(source, ann_node) or "" + note = audit_property_type(props[field_name], ann_text) + if note: + findings.append( + { + "schema": schema_label, + "path": path or "", + "field": field_name, + "sdk_file": site["file"], + "sdk_symbol": site["symbol"], + "sdk_annotation": ann_text, + "note": note, + } + ) + + # a single SDK field (same file+symbol+field+annotation) can legitimately + # get evaluated from more than one map entry -- e.g. TrackingPayment is + # the target of both a payout-side and a payin-side entry. Collapse those + # into one finding that names every schema it was seen from, rather than + # reporting what is really the same annotation issue multiple times. + merged: dict[tuple[str, str, str, str], dict[str, str]] = {} + for f in findings: + key = (f["sdk_file"], f["sdk_symbol"], f["field"], f["note"]) + if key in merged: + if f["schema"] not in merged[key]["schema"]: + merged[key]["schema"] += f", {f['schema']}" + else: + merged[key] = dict(f) + result = list(merged.values()) + result.sort(key=lambda f: (f["sdk_file"], f["sdk_symbol"], f["field"])) + return result + + +def cmd_audit_types(spec_path: Path) -> int: + map_data = load_map() + spec = load_json(spec_path) if spec_path.exists() else load_json(SNAPSHOT_PATH) + findings = audit_types(spec, map_data) + if not findings: + print("Type audit: no mismatches found.") + return 0 + print(f"Type audit ({len(findings)} finding(s), non-blocking, informational only):") + for f in findings: + ctx = f["schema"] + (f"/{f['path']}" if f["path"] else "") + site = f"{f['sdk_symbol']} in {f['sdk_file']}" + print(f" {ctx}.{f['field']} ({site}): {f['note']} [annotation: {f['sdk_annotation']}]") + return 0 + + def main() -> int: parser = argparse.ArgumentParser(description=__doc__) mode = parser.add_mutually_exclusive_group(required=True) @@ -1044,6 +1204,7 @@ def main() -> int: mode.add_argument("--apply", action="store_true") mode.add_argument("--validate-map", action="store_true") mode.add_argument("--coverage", action="store_true") + mode.add_argument("--audit-types", action="store_true") parser.add_argument("--spec", type=Path, default=DEFAULT_SPEC_PATH) parser.add_argument("--report", type=Path, default=None) args = parser.parse_args() @@ -1056,6 +1217,8 @@ def main() -> int: return cmd_apply(args.spec, args.report) if args.coverage: return cmd_coverage(args.spec) + if args.audit_types: + return cmd_audit_types(args.spec) return 1 diff --git a/.github/workflows/api-sync-check.yaml b/.github/workflows/api-sync-check.yaml index be208ba..0af816f 100644 --- a/.github/workflows/api-sync-check.yaml +++ b/.github/workflows/api-sync-check.yaml @@ -41,3 +41,7 @@ jobs: - name: Coverage report (non-blocking) continue-on-error: true run: python3 .api-sync/sync.py --coverage --spec .api-sync/spec-snapshot.json + + - name: Type audit (non-blocking) + continue-on-error: true + run: python3 .api-sync/sync.py --audit-types --spec .api-sync/spec-snapshot.json diff --git a/tests/test_api_sync.py b/tests/test_api_sync.py index a6f560c..e97a3a5 100644 --- a/tests/test_api_sync.py +++ b/tests/test_api_sync.py @@ -992,3 +992,106 @@ def test_nested_ref_transitively_reachable(self): ) reachable = sync.compute_reachable_schemas(spec) assert reachable == {"Reachable", "Child"} + + +# --------------------------------------------------------------------------- # +# --audit-types: full state comparison of every mapped property's spec type +# against the SDK's CURRENT annotation, independent of any old-vs-new diff. +# --------------------------------------------------------------------------- # + + +class TestAuditPropertyType: + def test_nullable_spec_without_optional_sdk_is_flagged(self): + sync = load_sync(Path("/nonexistent")) + note = sync.audit_property_type({"type": ["string", "null"]}, "str") + assert note is not None and "Optional" in note + + def test_nullable_spec_with_optional_sdk_is_not_flagged(self): + sync = load_sync(Path("/nonexistent")) + assert sync.audit_property_type({"type": ["string", "null"]}, "Optional[str]") is None + + def test_non_nullable_spec_with_optional_sdk_is_not_flagged(self): + """SDK wider than necessary (Optional where spec never sends null) is a + legitimate, common, harmless modeling choice -- not reported.""" + sync = load_sync(Path("/nonexistent")) + assert sync.audit_property_type({"type": "string"}, "Optional[str]") is None + + def test_enum_property_with_bare_scalar_sdk_is_flagged(self): + sync = load_sync(Path("/nonexistent")) + note = sync.audit_property_type({"type": "string", "enum": ["a", "b"]}, "str") + assert note is not None and "enum-constrained" in note + + def test_enum_property_with_literal_reference_is_not_flagged(self): + sync = load_sync(Path("/nonexistent")) + assert sync.audit_property_type({"type": "string", "enum": ["a", "b"]}, "MyLiteral") is None + + def test_scalar_type_mismatch_is_flagged(self): + """The one real finding this audit turned up in this repo: + PayinOut.billing_fee_amount is `number` on the wire but `Optional[str]` + in the SDK.""" + sync = load_sync(Path("/nonexistent")) + note = sync.audit_property_type({"type": "number"}, "Optional[str]") + assert note is not None and "`number`" in note and "`str`" in note + + def test_integer_widened_to_float_is_deliberately_compatible(self): + sync = load_sync(Path("/nonexistent")) + assert sync.audit_property_type({"type": "integer"}, "float") is None + + def test_ambiguous_spec_type_is_not_flagged(self): + sync = load_sync(Path("/nonexistent")) + assert sync.audit_property_type({"example": "abc"}, "str") is None + + def test_array_type_mismatch_is_flagged(self): + sync = load_sync(Path("/nonexistent")) + note = sync.audit_property_type({"type": "array"}, "str") + assert note is not None and "array" in note + + def test_array_type_match_is_not_flagged(self): + sync = load_sync(Path("/nonexistent")) + assert sync.audit_property_type({"type": "array"}, "List[str]") is None + + +class TestAuditTypes: + def test_finds_scalar_mismatch_end_to_end(self, repo: Path): + _write_fixture_repo(repo) + map_data: dict[str, Any] = { + "enums": [], + "types": [{"spec": "PlainOut", "sdk": [{"file": "src/blindpay/resources/sample.py", "symbol": "Plain"}]}], + "ignore": {"schemas": []}, + } + _write_map_and_unmodeled(repo, map_data) + sync = load_sync(repo) + # Plain.name: Optional[str] in the SDK; make the spec say it's really a number + spec = base_schema( + {"PlainOut": {"properties": {"id": {"type": "string"}, "name": {"type": "number"}}}}, + {"/x": {"get": op(ref_out="PlainOut")}}, + ) + findings = sync.audit_types(spec, map_data) + assert any(f["field"] == "name" and "number" in f["note"] for f in findings) + + def test_shared_locators_are_merged_into_one_finding(self, repo: Path): + """The exact duplication bug this audit's own development caught: a + map entry with several spec locators asserted to share one shape must + not multiply the same real finding once per locator.""" + _write_fixture_repo(repo) + map_data: dict[str, Any] = { + "enums": [], + "types": [ + { + "spec": ["ParentOut", "SiblingOut"], + "sdk": [{"file": "src/blindpay/resources/sample.py", "symbol": "Plain"}], + } + ], + "ignore": {"schemas": []}, + } + _write_map_and_unmodeled(repo, map_data) + sync = load_sync(repo) + shape = {"id": {"type": "number"}, "name": {"type": ["string", "null"]}} + spec = base_schema( + {"ParentOut": {"properties": shape}, "SiblingOut": {"properties": shape}}, + {"/x": {"get": op(ref_out="ParentOut")}, "/y": {"get": op(ref_out="SiblingOut")}}, + ) + findings = sync.audit_types(spec, map_data) + id_findings = [f for f in findings if f["field"] == "id"] + assert len(id_findings) == 1 + assert "ParentOut" in id_findings[0]["schema"]