diff --git a/.api-sync/contract-check-allowlist.json b/.api-sync/contract-check-allowlist.json new file mode 100644 index 0000000..c757dac --- /dev/null +++ b/.api-sync/contract-check-allowlist.json @@ -0,0 +1,134 @@ +[ + { + "schema": "GetBankAccountResponse", + "field": "account_holder_name", + "reason": "Pre-existing SDK field with no matching property in the spec (BankAccountOut has swift_account_holder_name, not account_holder_name). Unrelated to the wave-2 receiver->customer rename; needs its own follow-up.", + "owner": "eric@blindpay.com" + }, + { + "schema": "GetBankAccountResponse", + "field": "swift_code", + "reason": "Pre-existing SDK field with no matching property in the spec (BankAccountOut has swift_code_bic, not swift_code). Unrelated to wave 2; needs its own follow-up.", + "owner": "eric@blindpay.com" + }, + { + "schema": "GetBankAccountResponse", + "field": "is_primary", + "reason": "Pre-existing SDK field with no matching property anywhere on BankAccountOut in the spec. Unrelated to wave 2; needs its own follow-up.", + "owner": "eric@blindpay.com" + }, + { + "schema": "IndividualWithEnhancedKYC", + "field": "individual_holding_doc_front_file", + "reason": "Pre-existing SDK field absent from the enhanced-KYC individual schema in the spec. Unrelated to wave 2; needs its own follow-up.", + "owner": "eric@blindpay.com" + }, + { + "schema": "UpdateInstanceMemberRoleInput", + "field": "memberId", + "reason": "Path-only identifier used to build /members/{id}; never serialized as a JSON body key. Pre-existing camelCase naming (inconsistent with this SDK's snake_case convention) unrelated to wave 2.", + "owner": "eric@blindpay.com" + }, + { + "schema": "ListPartnerFeesResponse", + "field": "evm_wallet_address", + "reason": "Pre-existing SDK field with no matching property on the partner-fees create/list/get schemas in the spec. Unrelated to wave 2; needs its own follow-up.", + "owner": "eric@blindpay.com" + }, + { + "schema": "ListPartnerFeesResponse", + "field": "stellar_wallet_address", + "reason": "Pre-existing SDK field with no matching property on the partner-fees create/list/get schemas in the spec. Unrelated to wave 2; needs its own follow-up.", + "owner": "eric@blindpay.com" + }, + { + "schema": "CreatePartnerFeeInput", + "field": "evm_wallet_address", + "reason": "Pre-existing SDK field with no matching property on the partner-fees create/list/get schemas in the spec. Unrelated to wave 2; needs its own follow-up.", + "owner": "eric@blindpay.com" + }, + { + "schema": "CreatePartnerFeeInput", + "field": "stellar_wallet_address", + "reason": "Pre-existing SDK field with no matching property on the partner-fees create/list/get schemas in the spec. Unrelated to wave 2; needs its own follow-up.", + "owner": "eric@blindpay.com" + }, + { + "schema": "CreatePartnerFeeResponse", + "field": "evm_wallet_address", + "reason": "Pre-existing SDK field with no matching property on the partner-fees create/list/get schemas in the spec. Unrelated to wave 2; needs its own follow-up.", + "owner": "eric@blindpay.com" + }, + { + "schema": "CreatePartnerFeeResponse", + "field": "stellar_wallet_address", + "reason": "Pre-existing SDK field with no matching property on the partner-fees create/list/get schemas in the spec. Unrelated to wave 2; needs its own follow-up.", + "owner": "eric@blindpay.com" + }, + { + "schema": "GetPartnerFeeResponse", + "field": "evm_wallet_address", + "reason": "Pre-existing SDK field with no matching property on the partner-fees create/list/get schemas in the spec. Unrelated to wave 2; needs its own follow-up.", + "owner": "eric@blindpay.com" + }, + { + "schema": "GetPartnerFeeResponse", + "field": "stellar_wallet_address", + "reason": "Pre-existing SDK field with no matching property on the partner-fees create/list/get schemas in the spec. Unrelated to wave 2; needs its own follow-up.", + "owner": "eric@blindpay.com" + }, + { + "schema": "Payin", + "field": "tracking_partner_fee", + "reason": "Pre-existing tracking step modeled by the SDK that no longer exists on PayinOut in the spec. Unrelated to wave 2; needs its own follow-up.", + "owner": "eric@blindpay.com" + }, + { + "schema": "Payin", + "field": "billing_fee", + "reason": "Pre-existing legacy field superseded by billing_fee_amount in the spec. Unrelated to wave 2; needs its own follow-up.", + "owner": "eric@blindpay.com" + }, + { + "schema": "CreateEvmPayinResponse", + "field": "billing_fee", + "reason": "Pre-existing legacy field superseded by billing_fee_amount in the spec. Unrelated to wave 2; needs its own follow-up.", + "owner": "eric@blindpay.com" + }, + { + "schema": "Payout", + "field": "tracking_partner_fee", + "reason": "Pre-existing tracking step modeled by the SDK that no longer exists on PayoutOut in the spec. Unrelated to wave 2; needs its own follow-up.", + "owner": "eric@blindpay.com" + }, + { + "schema": "CreateStellarPayoutResponse", + "field": "tracking_partner_fee", + "reason": "Pre-existing tracking step modeled by the SDK that no longer exists on any Payout schema in the spec. Unrelated to wave 2; needs its own follow-up.", + "owner": "eric@blindpay.com" + }, + { + "schema": "CreateEvmPayoutResponse", + "field": "tracking_partner_fee", + "reason": "Pre-existing tracking step modeled by the SDK that no longer exists on any Payout schema in the spec. Unrelated to wave 2; needs its own follow-up.", + "owner": "eric@blindpay.com" + }, + { + "schema": "CreateSolanaPayoutResponse", + "field": "tracking_partner_fee", + "reason": "Pre-existing tracking step modeled by the SDK that no longer exists on any Payout schema in the spec. Unrelated to wave 2; needs its own follow-up.", + "owner": "eric@blindpay.com" + }, + { + "schema": "Transfer", + "field": "tracking_partner_fee", + "reason": "Pre-existing tracking step modeled by the SDK that no longer exists on TransferOut in the spec. Unrelated to wave 2; needs its own follow-up.", + "owner": "eric@blindpay.com" + }, + { + "schema": "CreateTransferResponse", + "field": "tracking_partner_fee", + "reason": "Pre-existing tracking step modeled by the SDK that no longer exists on any Transfer schema in the spec. Unrelated to wave 2; needs its own follow-up.", + "owner": "eric@blindpay.com" + } +] diff --git a/.api-sync/spec-snapshot.json b/.api-sync/spec-snapshot.json new file mode 100644 index 0000000..c7ae4a9 --- /dev/null +++ b/.api-sync/spec-snapshot.json @@ -0,0 +1,53604 @@ +{ + "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_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_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" + } + }, + "schemas": { + "BlockchainWalletWebhookOut": { + "type": "object", + "properties": { + "webhook_event": { + "type": "string", + "enum": [ + "blockchainWallet.new" + ] + }, + "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": [ + "webhook_event", + "id", + "name", + "network", + "customer_id" + ] + }, + "BankAccountWebhookOut": { + "type": "object", + "properties": { + "webhook_event": { + "type": "string", + "enum": [ + "bankAccount.new" + ] + }, + "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" + ], + "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": { + "example": "2021-01-01T00:00:00Z" + } + }, + "required": [ + "webhook_event", + "id", + "type", + "name" + ] + }, + "PayinNewWebhookOut": { + "type": "object", + "properties": { + "webhook_event": { + "type": "string", + "enum": [ + "payin.new" + ] + }, + "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": [ + "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", + "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": [ + "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": { + "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": [ + "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", + "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": [ + "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": { + "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": [ + "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" + }, + "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": [ + "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_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_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_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_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" + } + }, + "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_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_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" + ], + "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": { + "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" + ], + "example": "bh_swift_afl" + }, + "pix_key": { + "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" + }, + "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" + }, + "checkbook_account_id": { + "type": [ + "string", + "null" + ], + "example": "dc809ff8f4d3417d83e5697e76f0b88a" + }, + "checkbook_user_key": { + "type": [ + "string", + "null" + ], + "example": "d84fd0dc-3882-4de9-97f8-656730214619" + }, + "onemoney_external_account_id": { + "type": [ + "string", + "null" + ], + "example": "ex_000000000000" + }, + "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" + }, + "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" + } + }, + "required": [ + "type", + "name" + ] + }, + "VirtualAccountOut": { + "type": "object", + "properties": { + "id": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "va_000000000000" + }, + "banking_partner": { + "type": [ + "string", + "null" + ], + "enum": [ + "jpmorgan", + "citi", + "hsbc", + "cfsb", + "portage" + ], + "example": "jpmorgan" + }, + "kyc_status": { + "type": [ + "string", + "null" + ], + "enum": [ + "verifying", + "approved", + "rejected", + "deprecated", + "pending_review", + "awaiting_contract", + "compliance_request", + "approved_rfi" + ], + "example": "approved" + }, + "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" + ], + "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" + } + } + }, + "swift_intermediary_bank": { + "type": [ + "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" + }, + "address": { + "type": [ + "string", + "null" + ], + "example": "0xDD6a3aD0949396e57C7738ba8FC1A46A5a1C372C" + } + }, + "required": [ + "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" + ], + "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" + ], + "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" + }, + { + "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" + ], + "format": "uri", + "description": "Only image files are accepted (.jpg, .jpeg, .png)", + "example": "https://example.com/image.png" + }, + "id_doc_back_file": { + "type": [ + "string", + "null" + ], + "format": "uri", + "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": { + "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" + } + }, + "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" + ] + } + }, + "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": [ + "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" + }, + "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": [ + "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": { + "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" + ], + "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" + }, + { + "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" + ], + "format": "uri", + "description": "Only image files are accepted (.jpg, .jpeg, .png)", + "example": "https://example.com/image.png" + }, + "id_doc_back_file": { + "type": [ + "string", + "null" + ], + "format": "uri", + "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": { + "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" + }, + "id": { + "type": "string", + "minLength": 15, + "maxLength": 15 + } + }, + "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 + }, + "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" + ] + } + }, + "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" + }, + "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": [ + "string", + "null" + ], + "format": "date-time" + }, + "created_at": { + "type": "string", + "format": "date-time" + }, + "customer_type": { + "type": "string", + "enum": [ + "individual", + "business" + ] + }, + "customer_aiprise_session_id": { + "type": [ + "string", + "null" + ] + }, + "customer_aiprise_user_profile_id": { + "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" + ] + }, + "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" + ], + "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", + "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" + } + }, + "required": [ + "id", + "instance_id", + "description", + "amount", + "frequency_months", + "first_invoice_sequence", + "billing_scheme", + "metric_id", + "per_unit_amount", + "product_id" + ] + }, + "CreateRecurringItemSchemaIn": { + "type": "object", + "properties": { + "description": { + "type": "string", + "minLength": 1, + "example": "Swift Addon" + }, + "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": [ + "description", + "amount", + "frequency_months", + "first_invoice_sequence" + ] + }, + "UpdateRecurringItemSchemaIn": { + "type": "object", + "properties": { + "description": { + "type": "string", + "minLength": 1 + }, + "amount": { + "type": "integer", + "minimum": 0 + }, + "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": [ + "first_name", + "last_name", + "email", + "complaint_type", + "description" + ] + }, + "FeedbackActor": { + "type": [ + "object", + "null" + ], + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": [ + "string", + "null" + ] + }, + "email": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id", + "name", + "email" + ] + }, + "FeedbackWithActorOut": { + "allOf": [ + { + "$ref": "#/components/schemas/FeedbackOut" + }, + { + "type": "object", + "properties": { + "actor": { + "$ref": "#/components/schemas/FeedbackActor" + } + }, + "required": [ + "actor" + ] + } + ] + }, + "CreateRfiBody": { + "type": "object", + "properties": { + "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": [ + "approved", + "rejected" + ] + }, + "reviewed_by": { + "type": "string", + "format": "email" + }, + "reason": { + "type": "string", + "maxLength": 2048 + } + }, + "required": [ + "decision", + "reviewed_by" + ] + }, + "UpdateDynamicRateOtcIn": { + "type": "object", + "properties": { + "dynamic_rate_otc": { + "type": "integer", + "minimum": 0, + "description": "Dynamic OTC rate markup in basis points (e.g. 5 = 0.05%)", + "example": 5 + } + }, + "required": [ + "dynamic_rate_otc" + ] + }, + "LedgerOperation": { + "type": "object", + "properties": { + "kind": { + "type": "string", + "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" + ] + }, + "is_otc": { + "type": "boolean" + }, + "created_at": { + "type": [ + "string", + "null" + ] + }, + "updated_at": { + "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", + "is_otc", + "created_at", + "updated_at" + ] + }, + "MonitoredWallet": { + "type": "object", + "properties": { + "network": { + "type": "string" + }, + "address": { + "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", + "enum": [ + "treasury", + "wallet", + "offramp_wallet" + ] + }, + "instance_id": { + "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" + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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: `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" + } + } + } + } + } + } + } + }, + "delete": { + "x-sdk": true, + "tags": [ + "Instances" + ], + "summary": "Delete 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" + } + ], + "responses": { + "200": { + "description": "Instance deleted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Success" + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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: `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/{id}/members": { + "get": { + "x-sdk": true, + "tags": [ + "Instances" + ], + "summary": "Retrieve Instance Members", + "parameters": [ + { + "schema": { + "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": { + "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" + ] + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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: `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/{id}/members/{user_id}": { + "delete": { + "x-sdk": true, + "tags": [ + "Instances" + ], + "summary": "Delete Member from Instance", + "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" + } + ], + "responses": { + "200": { + "description": "Member deleted from instance successfully", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/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": { + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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: `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" + } + } + } + } + } + } + } + }, + "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" + } + } + } + }, + "responses": { + "200": { + "description": "Member role updated successfully", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/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": { + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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: `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/{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" + } + } + } + }, + "responses": { + "200": { + "description": "Ownership transferred", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/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": { + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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: `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}/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": [ + { + "schema": { + "type": "string", + "minLength": 15, + "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/InstanceRfi" + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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: `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": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } + } + } + } + } + } + }, + "post": { + "x-sdk": true, + "tags": [ + "Instances" + ], + "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": [ + { + "schema": { + "type": "string", + "minLength": 15, + "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": { + "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" + ] + } + ] + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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: `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": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } + } + } + } + } + } + } + }, + "/v1/e/instances/{instance_id}/tos": { + "post": { + "x-sdk": true, + "tags": [ + "Terms Of Service" + ], + "summary": "Initiate Terms of Service", + "parameters": [ + { + "schema": { + "type": "string", + "minLength": 15, + "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" + } + } + } + }, + "responses": { + "200": { + "description": "Initiate terms of service", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InitiateTosOut" + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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: `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}/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" + } + } + } + }, + "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": [], + "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", + "value": { + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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", + "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" + } + } + } + } + } + } + } + }, + "get": { + "x-sdk": true, + "tags": [ + "Customers" + ], + "summary": "Retrieve Limit Increase Requests", + "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": "List customer limit increase requests", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/GetCustomerLimitIncreaseOut" + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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: `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": { + "post": { + "x-sdk": true, + "tags": [ + "Customers" + ], + "summary": "Create Customer", + "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 customer", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateCustomerIn" + } + } + } + }, + "responses": { + "200": { + "description": "Create customer", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "customer_id": { + "type": "string" + } + }, + "required": [ + "id", + "customer_id" + ] + } + } + } + }, + "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": [], + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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", + "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" + } + } + } + } + } + } + } + }, + "get": { + "x-sdk": true, + "tags": [ + "Customers" + ], + "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" + }, + { + "schema": { + "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" + } + ], + "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" + } + } + ] + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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: `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/{id}": { + "get": { + "x-sdk": true, + "tags": [ + "Customers" + ], + "summary": "Retrieve Customer", + "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": "re_000000000000" + }, + "required": true, + "name": "id", + "in": "path" + } + ], + "responses": { + "200": { + "description": "Get customer", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomerOut" + } + } + } + }, + "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": [], + "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", + "value": { + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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: `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" + } + } + } + } + } + } + } + }, + "put": { + "x-sdk": true, + "tags": [ + "Customers" + ], + "summary": "Update Customer", + "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": "re_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 a customer", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateCustomerIn" + } + } + } + }, + "responses": { + "200": { + "description": "Customer updated", + "content": { + "application/json": { + "schema": { + "$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" + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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", + "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" + } + } + } + } + } + } + } + }, + "delete": { + "x-sdk": true, + "tags": [ + "Customers" + ], + "summary": "Delete Customer", + "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": "re_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": "Customer deleted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/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": { + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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: `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}/limits/customers/{id}": { + "get": { + "x-sdk": true, + "tags": [ + "Customers" + ], + "summary": "Retrieve Customer Limits", + "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": "re_000000000000" + }, + "required": true, + "name": "id", + "in": "path" + } + ], + "responses": { + "200": { + "description": "Get customer limits", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetCustomerLimitsOut" + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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: `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}/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", + "message": "validation_failed", + "description": "The request contains invalid fields. Check the errors list for details.", + "errors": [], + "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", + "value": { + "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" + } + } + } + } + } + }, + "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: `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" + } + } + } + } + } + } + } + }, + "post": { + "x-sdk": true, + "tags": [ + "Customers" + ], + "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": [ + { + "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": { + "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": { + "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" + ] + } + ] + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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: `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": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } + } + } + } + } + } + } + }, + "/v1/instances/{instance_id}/customers/{customer_id}/bank-accounts": { + "post": { + "x-sdk": true, + "tags": [ + "Bank Accounts" + ], + "summary": "Add Bank Account", + "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": "Create a new bank account", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateBankAccountIn" + } + } + } + }, + "responses": { + "200": { + "description": "Add bank account", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BankAccountOut" + } + } + } + }, + "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": [], + "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": [], + "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" + } + }, + "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": [], + "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" + } + }, + "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": { + "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" + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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`, `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": { + "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" + } + } + } + } + } + } + } + }, + "get": { + "x-sdk": true, + "tags": [ + "Bank Accounts" + ], + "summary": "Retrieve Bank Accounts", + "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", + "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" + }, + { + "schema": { + "type": "string" + }, + "required": false, + "name": "bank_account_id", + "in": "query" + }, + { + "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" + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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: `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}/bank-accounts/{id}": { + "get": { + "x-sdk": true, + "tags": [ + "Bank Accounts" + ], + "summary": "Retrieve Bank Account", + "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 bank account", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BankAccountOut" + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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: `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" + } + } + } + } + } + } + } + }, + "delete": { + "x-sdk": true, + "tags": [ + "Bank Accounts" + ], + "summary": "Remove Bank Account", + "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" + }, + { + "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 bank account", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/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": { + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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: `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}/virtual-accounts": { + "post": { + "x-sdk": true, + "tags": [ + "Virtual Accounts" + ], + "summary": "Create Virtual Account", + "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": "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/VirtualAccountOut" + } + } + } + }, + "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": [], + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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", + "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" + } + } + } + } + } + } + } + }, + "get": { + "x-sdk": true, + "tags": [ + "Virtual Accounts" + ], + "summary": "Retrieve Virtual Accounts", + "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": "Get virtual accounts", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/VirtualAccountOut" + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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: `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}/virtual-accounts/{id}": { + "get": { + "x-sdk": true, + "tags": [ + "Virtual Accounts" + ], + "summary": "Retrieve Virtual Account", + "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 virtual account", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/VirtualAccountOut" + }, + { + "type": [ + "object", + "null" + ] + } + ] + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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: `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" + } + } + } + } + } + } + } + }, + "put": { + "x-sdk": true, + "tags": [ + "Virtual Accounts" + ], + "summary": "Update Virtual Account", + "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" + }, + { + "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" + } + } + } + }, + "responses": { + "200": { + "description": "Update virtual account", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Success" + } + } + } + }, + "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": [], + "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", + "value": { + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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: `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}/blockchain-wallets/sign-message": { + "get": { + "x-sdk": true, + "tags": [ + "Blockchain Wallets" + ], + "summary": "Retrieve Blockchain Wallet Message", + "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": "Get blockchain wallet sign message", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BlockchainWalletMessageOut" + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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: `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}/blockchain-wallets": { + "post": { + "x-sdk": true, + "tags": [ + "Blockchain Wallets" + ], + "summary": "Add Blockchain Wallet", + "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": "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/BlockchainWalletOut" + } + } + } + }, + "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": [], + "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": [], + "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", + "value": { + "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" + } + } + } + } + } + }, + "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: `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" + } + } + } + } + } + } + } + }, + "get": { + "x-sdk": true, + "tags": [ + "Blockchain Wallets" + ], + "summary": "Retrieve Blockchain Wallets", + "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": "Get blockchain wallets", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BlockchainWalletOut" + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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: `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}/blockchain-wallets/{id}": { + "get": { + "x-sdk": true, + "tags": [ + "Blockchain Wallets" + ], + "summary": "Retrieve Blockchain Wallet", + "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 blockchain wallet", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BlockchainWalletOut" + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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: `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" + } + } + } + } + } + } + } + }, + "delete": { + "x-sdk": true, + "tags": [ + "Blockchain Wallets" + ], + "summary": "Remove Blockchain Wallet", + "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" + }, + { + "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 blockchain wallet", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/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": { + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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: `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}/bank-accounts/{bank_account_id}/offramp-wallets": { + "post": { + "x-sdk": true, + "tags": [ + "Offramp Wallets" + ], + "summary": "Create Offramp Wallet", + "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": "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": { + "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" + ] + } + } + } + }, + "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": [], + "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", + "value": { + "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" + } + } + } + } + } + }, + "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: `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" + } + } + } + } + } + } + } + }, + "get": { + "x-sdk": true, + "tags": [ + "Offramp Wallets" + ], + "summary": "Get Offramp Wallets", + "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": "ba_000000000000" + }, + "required": true, + "name": "bank_account_id", + "in": "path" + } + ], + "responses": { + "200": { + "description": "Get offramp wallets", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OfframpWallet" + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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: `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}/bank-accounts/{bank_account_id}/offramp-wallets/{id}": { + "get": { + "x-sdk": true, + "tags": [ + "Offramp Wallets" + ], + "summary": "Get Offramp Wallet", + "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": "ba_000000000000" + }, + "required": true, + "name": "bank_account_id", + "in": "path" + }, + { + "schema": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "ow_000000000000" + }, + "required": true, + "name": "id", + "in": "path" + } + ], + "responses": { + "200": { + "description": "Get offramp wallet", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OfframpWallet" + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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: `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}/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" + } + }, + "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": { + "success": false, + "code": "VIRTUAL_ACCOUNTS_NOT_FOUND", + "message": "virtual_account_not_found", + "description": "The requested virtual account was not found.", + "errors": [], + "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", + "value": { + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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", + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + } + } + } + }, + "/v1/instances/{instance_id}/quotes/fx": { + "post": { + "x-sdk": true, + "tags": [ + "Payouts Quotes" + ], + "summary": "Get FX Rate", + "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": "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" + ] + } + } + } + }, + "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 + } + }, + "required": [ + "commercial_quotation", + "blindpay_quotation", + "result_amount", + "instance_percentage_fee" + ] + } + } + } + }, + "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": [], + "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", + "value": { + "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" + } + } + } + } + } + }, + "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: `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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + } + } + } + }, + "/v1/instances/{instance_id}/payouts/{id}": { + "get": { + "x-sdk": true, + "tags": [ + "Payouts" + ], + "summary": "Retrieve Payout", + "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": "pa_000000000000" + }, + "required": true, + "name": "id", + "in": "path" + } + ], + "responses": { + "200": { + "description": "List payouts", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PayoutOut" + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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: `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/e/payouts/{id}": { + "get": { + "x-sdk": true, + "tags": [ + "Payouts" + ], + "summary": "Retrieve Payout Track", + "parameters": [ + { + "schema": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "pa_000000000000" + }, + "required": true, + "name": "id", + "in": "path" + } + ], + "responses": { + "200": { + "description": "List payouts", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PayoutOut" + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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: `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}/payouts": { + "get": { + "x-sdk": true, + "tags": [ + "Payouts" + ], + "summary": "Retrieve Payouts", + "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", + "failed", + "refunded", + "completed", + "on_hold" + ] + }, + "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": [ + "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" + }, + "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": { + "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" + } + } + ] + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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: `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}/payouts/stellar/authorize": { + "post": { + "x-sdk": true, + "tags": [ + "Payouts" + ], + "summary": "Authorize Token Stellar", + "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": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PayoutOnStellarAuthorizeIn" + } + } + } + }, + "responses": { + "200": { + "description": "Payout started with success", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "transaction_hash": { + "type": "string" + } + }, + "required": [ + "transaction_hash" + ] + } + } + } + }, + "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", + "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.", + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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: `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}/payouts/stellar": { + "post": { + "x-sdk": true, + "tags": [ + "Payouts" + ], + "summary": "Create Payout on Stellar", + "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": "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/PayoutOnEvmOut" + } + } + } + }, + "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", + "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_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" + } + }, + "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": { + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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`, `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": { + "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" + } + } + } + } + } + } + } + } + }, + "/v1/instances/{instance_id}/payouts/solana": { + "post": { + "x-sdk": true, + "tags": [ + "Payouts" + ], + "summary": "Create Payout on Solana", + "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": "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/PayoutOnEvmOut" + } + } + } + }, + "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", + "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" + } + }, + "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_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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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`, `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": { + "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" + } + } + } + } + } + } + } + } + }, + "/v1/instances/{instance_id}/payouts/evm": { + "post": { + "x-sdk": true, + "tags": [ + "Payouts" + ], + "summary": "Create Payout on EVM Chains", + "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": "Start payout on evm blockchain", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PayoutOnEvmIn" + } + } + } + }, + "responses": { + "200": { + "description": "Payout started with success", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PayoutOnEvmOut" + } + } + } + }, + "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": { + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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`, `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": { + "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" + } + } + } + } + } + } + } + } + }, + "/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": [ + { + "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": "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/Success" + } + } + } + }, + "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": [], + "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", + "value": { + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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", + "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" + } + } + } + } + } + } + } + } + }, + "/v1/instances/{instance_id}/payin-quotes": { + "post": { + "x-sdk": true, + "tags": [ + "Payin Quotes" + ], + "summary": "Create Payin 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/CreatePayinQuoteIn" + } + } + } + }, + "responses": { + "200": { + "description": "Payin Quote creation details", + "content": { + "application/json": { + "schema": { + "$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" + } + }, + "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_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": [], + "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", + "value": { + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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: `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": { + "success": false, + "code": "QUOTES_RATE_UNAVAILABLE", + "message": "fx_rate_unavailable", + "description": "An exchange rate is temporarily unavailable. Try again shortly.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } + } + } + } + } + } + } + }, + "/v1/instances/{instance_id}/payin-quotes/fx": { + "post": { + "x-sdk": true, + "tags": [ + "Payin Quotes" + ], + "summary": "Get FX Rate", + "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": "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" + ] + } + } + } + }, + "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" + ] + } + } + } + }, + "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": { + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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: `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": { + "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" + } + } + } + } + } + } + } + } + }, + "/v1/instances/{instance_id}/payins/{id}": { + "get": { + "x-sdk": true, + "tags": [ + "Payins" + ], + "summary": "Retrieve Payin", + "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": "pi_000000000000" + }, + "required": true, + "name": "id", + "in": "path" + } + ], + "responses": { + "200": { + "description": "List payins", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PayinOut" + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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: `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/e/payins/{id}": { + "get": { + "x-sdk": true, + "tags": [ + "Payins" + ], + "summary": "Retrieve Payin Track", + "parameters": [ + { + "schema": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "pi_000000000000" + }, + "required": true, + "name": "id", + "in": "path" + } + ], + "responses": { + "200": { + "description": "List payins", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PayinOut" + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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: `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" + }, + "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": { + "anyOf": [ + { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PayinOut" + } + }, + "pagination": { + "$ref": "#/components/schemas/PaginationMetadata" + } + }, + "required": [ + "data", + "pagination" + ] + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/PayinOut" + } + } + ] + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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: `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/evm": { + "post": { + "x-sdk": true, + "tags": [ + "Payins" + ], + "summary": "Create Payin", + "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": "Start payin", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreatePayinIn" + } + } + } + }, + "responses": { + "200": { + "description": "Payin started with success", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreatePayinOut" + } + } + } + }, + "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": { + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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`, `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": [], + "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" + } + } + } + } + } + } + } + } + }, + "/v1/instances/{instance_id}/customers/{customer_id}/wallets": { + "post": { + "x-sdk": true, + "tags": [ + "Wallets" + ], + "summary": "Create Wallet", + "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": "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" + } + } + } + }, + "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": [], + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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: `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" + } + } + } + } + } + } + } + }, + "get": { + "x-sdk": true, + "tags": [ + "Wallets" + ], + "summary": "Retrieve Wallets", + "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": "Get wallets", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$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": { + "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": [], + "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", + "value": { + "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" + } + } + } + } + } + }, + "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: `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" + }, + "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", + "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": { + "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": [], + "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", + "value": { + "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" + } + } + } + } + } + }, + "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: `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" + } + } + } + } + } + } + } + }, + "delete": { + "x-sdk": true, + "tags": [ + "Wallets" + ], + "summary": "Remove Wallet", + "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" + }, + { + "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/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": { + "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": [], + "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", + "value": { + "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" + } + } + } + } + } + }, + "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: `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}/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", + "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": [], + "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", + "value": { + "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" + } + } + } + } + } + }, + "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: `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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + } + } + } + }, + "/v1/instances/{instance_id}/transfer-quotes": { + "post": { + "x-sdk": true, + "tags": [ + "Transfer Quotes" + ], + "summary": "Create Transfer 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/CreateTransferQuoteIn" + } + } + } + }, + "responses": { + "200": { + "description": "Transfer Quote creation details", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateTransferQuoteOut" + } + } + } + }, + "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": [], + "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", + "value": { + "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" + } + } + } + } + } + }, + "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: `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}/transfers/{id}": { + "get": { + "x-sdk": true, + "tags": [ + "Transfers" + ], + "summary": "Retrieve Transfer", + "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": "pa_000000000000" + }, + "required": true, + "name": "id", + "in": "path" + } + ], + "responses": { + "200": { + "description": "List transfers", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TransferOut" + } + } + } + }, + "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": [], + "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", + "value": { + "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" + } + } + } + } + } + }, + "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: `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/e/transfers/{id}": { + "get": { + "x-sdk": true, + "tags": [ + "Transfers" + ], + "summary": "Retrieve Transfer Track", + "parameters": [ + { + "schema": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "pa_000000000000" + }, + "required": true, + "name": "id", + "in": "path" + } + ], + "responses": { + "200": { + "description": "List transfers", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TransferOut" + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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: `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}/transfers": { + "get": { + "x-sdk": true, + "tags": [ + "Transfers" + ], + "summary": "Retrieve Transfers", + "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" + } + ], + "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" + } + }, + "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", + "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": [], + "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", + "value": { + "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" + } + } + } + } + } + }, + "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: `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" + } + } + } + } + } + } + } + }, + "post": { + "x-sdk": true, + "tags": [ + "Transfers" + ], + "summary": "Create Transfer", + "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": "Start transfer", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateTransferIn" + } + } + } + }, + "responses": { + "200": { + "description": "Transfer started with success", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateTransferOut" + } + } + } + }, + "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": [], + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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`, `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": [], + "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" + } + } + } + } + } + } + } + } + }, + "/v1/instances/{instance_id}/webhook-endpoints": { + "post": { + "x-sdk": true, + "tags": [ + "Webhook Endpoints" + ], + "summary": "Register Webhook", + "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 webhook endpoint", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WebhookEndpointIn" + } + } + } + }, + "responses": { + "200": { + "description": "Create webhook endpoint", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WebhookEndpointOut" + } + } + } + }, + "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", + "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" + } + }, + "WEBHOOKS_LIMIT_REACHED": { + "summary": "WEBHOOKS_LIMIT_REACHED", + "value": { + "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", + "value": { + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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: `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" + } + } + } + } + } + } + } + }, + "get": { + "x-sdk": true, + "tags": [ + "Webhook Endpoints" + ], + "summary": "Retrieve Webhooks", + "parameters": [ + { + "schema": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" + } + ], + "responses": { + "200": { + "description": "Get webhook endpoints", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/WebhookEndpoint" + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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: `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}/webhook-endpoints/{id}": { + "delete": { + "x-sdk": true, + "tags": [ + "Webhook Endpoints" + ], + "summary": "Remove Webhook", + "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" + }, + { + "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 webhook endpoint", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/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": { + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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: `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}/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" + } + }, + "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": { + "success": false, + "code": "VALIDATION_FAILED", + "message": "validation_failed", + "description": "The request contains invalid fields. Check the errors list for details.", + "errors": [], + "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", + "value": { + "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" + } + } + } + } + } + }, + "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: `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}/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" + }, + "required": true, + "name": "instance_id", + "in": "path" + } + ], + "responses": { + "200": { + "description": "Get webhook portal access url", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PortalAccessOut" + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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: `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}/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": [], + "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", + "value": { + "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": "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", + "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: `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}/partner-fees": { + "post": { + "x-sdk": true, + "tags": [ + "Partner Fees" + ], + "summary": "Add Partner Fee", + "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 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": { + "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" + ] + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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: `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" + } + } + } + } + } + } + } + }, + "get": { + "x-sdk": true, + "tags": [ + "Partner Fees" + ], + "summary": "Retrieve Partner Fees", + "parameters": [ + { + "schema": { + "type": "string", + "minLength": 15, + "maxLength": 15, + "example": "in_000000000000" + }, + "required": true, + "name": "instance_id", + "in": "path" + } + ], + "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" + ] + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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: `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}/partner-fees/{id}": { + "get": { + "x-sdk": true, + "tags": [ + "Partner Fees" + ], + "summary": "Retrieve Partner Fee", + "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": "fe_000000000000" + }, + "required": true, + "name": "id", + "in": "path" + } + ], + "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 + }, + "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" + ] + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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: `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" + } + } + } + } + } + } + } + }, + "delete": { + "x-sdk": true, + "tags": [ + "Partner Fees" + ], + "summary": "Remove Partner Fee", + "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": "fe_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 blockchain wallet", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/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": { + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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: `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/upload": { + "post": { + "x-sdk": true, + "tags": [ + "Upload" + ], + "summary": "Upload File", + "parameters": [ + { + "schema": { + "type": "string" + }, + "required": false, + "name": "instance_id", + "in": "query" + } + ], + "requestBody": { + "description": "Upload file to instance", + "content": { + "multipart/form-data": { + "schema": { + "$ref": "#/components/schemas/UploadIn" + } + } + } + }, + "responses": { + "200": { + "description": "File uploaded successfully", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UploadOut" + } + } + } + }, + "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", + "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": [], + "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", + "value": { + "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" + } + } + } + } + } + }, + "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", + "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" + } + } + } + } + } + } + } + } + }, + "/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": { + "success": false, + "code": "FILES_EMPTY", + "message": "file_empty", + "description": "The uploaded file is empty. Upload a valid file.", + "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" + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "422": { + "description": "Possible error codes: `FILES_ANALYSIS_FAILED`. See the Error responses section for retry semantics.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, + "examples": { + "FILES_ANALYSIS_FAILED": { + "summary": "FILES_ANALYSIS_FAILED", + "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.", + "errors": [], + "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: `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" + } + } + } + } + } + }, + "503": { + "description": "Possible error codes: `FILES_ANALYSIS_FAILED`. See the Error responses section for retry semantics.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, + "examples": { + "FILES_ANALYSIS_FAILED": { + "summary": "FILES_ANALYSIS_FAILED", + "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.", + "errors": [], + "trace_id": "0af7651916cd43dd8448eb211c80319c" + } + } + } + } + } + } + } + } + }, + "/v1/available/bank-details": { + "get": { + "x-sdk": true, + "tags": [ + "Available" + ], + "summary": "Bank Details", + "security": [], + "parameters": [ + { + "schema": { + "type": "string", + "enum": [ + "wire", + "ach", + "pix", + "pix_safe", + "ted", + "spei_bitso", + "transfers_bitso", + "ach_cop_bitso", + "international_swift", + "rtp", + "sepa" + ] + }, + "required": true, + "name": "rail", + "in": "query" + } + ], + "responses": { + "200": { + "description": "Retrieve bank details by rail", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AvailableBankDetails" + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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: `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/available/rails": { + "get": { + "x-sdk": true, + "tags": [ + "Available" + ], + "summary": "Rails", + "security": [], + "responses": { + "200": { + "description": "Retrieve available rails", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AvailableRails" + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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: `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/available/naics": { + "get": { + "x-sdk": true, + "tags": [ + "Available" + ], + "summary": "NAICS list", + "security": [], + "responses": { + "200": { + "description": "Retrieve NAICS (business industry) list", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AvailableNaicsList" + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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: `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/available/swift/{swift}": { + "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" + }, + "required": true, + "name": "swift", + "in": "path" + } + ], + "responses": { + "200": { + "description": "Swift code bank details", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SwiftCodeResponse" + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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: `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}/mint-usdb-solana": { + "post": { + "x-sdk": true, + "tags": [ + "Solana" + ], + "summary": "Mint USDB on Solana", + "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": { + "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": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "signature": { + "type": "string" + }, + "error": { + "type": "string" + } + }, + "required": [ + "success" + ] + } + } + } + }, + "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": [], + "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", + "value": { + "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" + } + } + } + } + } + }, + "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: `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}/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": [ + { + "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": { + "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": { + "success": { + "type": "boolean" + }, + "transaction": { + "type": "string" + }, + "debug": {} + }, + "required": [ + "success" + ] + } + } + } + }, + "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": { + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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: `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}/create-asset-trustline": { + "post": { + "x-sdk": true, + "tags": [ + "Stellar" + ], + "summary": "Create Asset Trustline", + "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": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "address": { + "type": "string" + } + }, + "required": [ + "address" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Create asset trustline", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "xdr": { + "type": "string" + } + }, + "required": [ + "xdr" + ] + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "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: `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}/mint-usdb-stellar": { + "post": { + "x-sdk": true, + "tags": [ + "Stellar" + ], + "summary": "Mint USDB on Stellar", + "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": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "address": { + "type": "string" + }, + "amount": { + "type": "string" + }, + "signedXdr": { + "type": "string" + } + }, + "required": [ + "address", + "amount" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Mint USDB", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Success" + } + } + } + }, + "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": [], + "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", + "value": { + "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" + } + } + } + } + } + }, + "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: `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" + } + } + } + } + } + } + } + } + } + }, + "webhooks": { + "bankAccount.new": { + "post": { + "requestBody": { + "description": "Add bank account from blindpay", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BankAccountWebhookOut" + } + } + } + }, + "responses": { + "200": { + "description": "Bank account created" + } + } + } + }, + "blockchainWallet.new": { + "post": { + "requestBody": { + "description": "Add blockchain wallet from blindpay", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BlockchainWalletWebhookOut" + } + } + } + }, + "responses": { + "200": { + "description": "Blockchain wallet created" + } + } + } + }, + "customer.new": { + "post": { + "requestBody": { + "description": "Create customer from blindpay", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomerNewWebhookOut" + } + } + } + }, + "responses": { + "200": { + "description": "Customer created" + } + } + } + }, + "customer.delete": { + "post": { + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomerDeleteWebhookOut" + } + } + } + }, + "responses": { + "200": { + "description": "Customer deleted" + } + } + } + }, + "customer.update": { + "post": { + "requestBody": { + "description": "Update customer from blindpay", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomerUpdateWebhookOut" + } + } + } + }, + "responses": { + "200": { + "description": "Customer updated" + } + } + } + }, + "limitIncrease.new": { + "post": { + "requestBody": { + "description": "Create limit increase from blindpay", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LimitIncreaseNewWebhookOut" + } + } + } + }, + "responses": { + "200": { + "description": "Limit increase requested" + } + } + } + }, + "limitIncrease.update": { + "post": { + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LimitIncreaseUpdateWebhookOut" + } + } + } + }, + "responses": { + "200": { + "description": "Limit increase updated" + } + } + } + }, + "payin.new": { + "post": { + "requestBody": { + "description": "Create payin from blindpay", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PayinNewWebhookOut" + } + } + } + }, + "responses": { + "200": { + "description": "Payin created" + } + } + } + }, + "payin.complete": { + "post": { + "requestBody": { + "description": "Update payin from blindpay", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PayinCompleteWebhookOut" + } + } + } + }, + "responses": { + "200": { + "description": "Payin completed" + } + } + } + }, + "payin.partnerFee": { + "post": { + "requestBody": { + "description": "Update payin from blindpay", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PayinPartnerFeeWebhookOut" + } + } + } + }, + "responses": { + "200": { + "description": "Payin partner fee" + } + } + } + }, + "payin.update": { + "post": { + "requestBody": { + "description": "Update payin from blindpay", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PayinUpdateWebhookOut" + } + } + } + }, + "responses": { + "200": { + "description": "Payin updated" + } + } + } + }, + "payout.new": { + "post": { + "requestBody": { + "description": "Create payout from blindpay", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PayoutNewWebhookOut" + } + } + } + }, + "responses": { + "200": { + "description": "Payout created" + } + } + } + }, + "payout.complete": { + "post": { + "requestBody": { + "description": "Update payout from blindpay", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PayoutCompleteWebhookOut" + } + } + } + }, + "responses": { + "200": { + "description": "Payout completed" + } + } + } + }, + "payout.partnerFee": { + "post": { + "requestBody": { + "description": "Update payout partner fee from blindpay", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PayoutPartnerFeeWebhookOut" + } + } + } + }, + "responses": { + "200": { + "description": "Payout partner fee" + } + } + } + }, + "payout.update": { + "post": { + "requestBody": { + "description": "Update payout from blindpay", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PayoutUpdateWebhookOut" + } + } + } + }, + "responses": { + "200": { + "description": "Payout updated" + } + } + } + }, + "tos.accept": { + "post": { + "requestBody": { + "description": "Accept terms of service", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TosAcceptWebhookOut" + } + } + } + }, + "responses": { + "200": { + "description": "Terms of service accepted" + } + } + } + }, + "transfer.new": { + "post": { + "requestBody": { + "description": "Create transfer from blindpay", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateTransferOut" + } + } + } + }, + "responses": { + "200": { + "description": "Transfer created" + } + } + } + }, + "transfer.complete": { + "post": { + "requestBody": { + "description": "Update transfer from blindpay", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateTransferOut" + } + } + } + }, + "responses": { + "200": { + "description": "Transfer completed" + } + } + } + }, + "transfer.update": { + "post": { + "requestBody": { + "description": "Update transfer from blindpay", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateTransferOut" + } + } + } + }, + "responses": { + "200": { + "description": "Transfer updated" + } + } + } + }, + "virtualAccount.new": { + "post": { + "requestBody": { + "description": "Virtual account created from blindpay", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VirtualAccountOut" + } + } + } + }, + "responses": { + "200": { + "description": "Virtual account created" + } + } + } + }, + "virtualAccount.complete": { + "post": { + "requestBody": { + "description": "Virtual account activated/complete from blindpay", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VirtualAccountOut" + } + } + } + }, + "responses": { + "200": { + "description": "Virtual account complete" + } + } + } + }, + "wallet.inbound": { + "post": { + "requestBody": { + "description": "Wallet inbound", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WalletInboundSchemaOut" + } + } + } + }, + "responses": { + "200": { + "description": "Wallet inbound" + } + } + } + }, + "wallet.new": { + "post": { + "requestBody": { + "description": "Create a wallet for a customer", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WalletOut" + } + } + } + }, + "responses": { + "200": { + "description": "Wallet created" + } + } + } + } + } +} diff --git a/.changeset/customers-wave-2.md b/.changeset/customers-wave-2.md new file mode 100644 index 0000000..91a6b00 --- /dev/null +++ b/.changeset/customers-wave-2.md @@ -0,0 +1,15 @@ +--- +"@blindpay/node": major +--- + +Complete the receiver -> customer rename now that blindpay-v2 #1799 has shipped: `receiver_id` -> `customer_id` (`Payout`, `Payin`, `Transfer`, `Owner`, terms-of-service initiate), `receiver_local_amount` -> `customer_local_amount` (quotes, payouts), `receiver_wallet_address`/`receiver_network`/`receiver_token` -> `customer_wallet_address`/`customer_network`/`customer_token` (transfers), `receiver_invite_redirect_url` -> `customer_invite_redirect_url` (instance settings). `receiver_amount` (singular, the receiving-side amount on quotes/payins/payouts/transfers) and `currency_type`'s `"sender" | "receiver"` values are unchanged. + +Remove the deprecated `receiver.new`/`receiver.update`/`receiver.delete` webhook events from `WebhookEvents` — they stop firing at the same cutover. + +Remove the `api-keys` resource (`blindpay.instances.apiKeys`) and its types; the API Keys surface is not part of the public API reference. + +`Owner.receiver_id` is removed; only `Owner.customer_id` remains (optional, matching the spec). + +Add a contract-check script (`bun run contract-check`) that fails CI when an SDK-declared field name doesn't exist anywhere in the committed OpenAPI snapshot, or when the spec's webhook event enum has a member the SDK doesn't model. + +Held until blindpay-v2 #1799 reaches production; the deployed API does not accept these names until then. diff --git a/.github/workflows/contract-check.yaml b/.github/workflows/contract-check.yaml new file mode 100644 index 0000000..a58edd4 --- /dev/null +++ b/.github/workflows/contract-check.yaml @@ -0,0 +1,16 @@ +name: Contract Check + +on: + workflow_call: + +jobs: + contract-check: + name: Verify wire contract against spec snapshot + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Run contract check + run: node scripts/contract-check.mjs diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 2186300..fa9ef14 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -13,6 +13,8 @@ permissions: jobs: lint: uses: ./.github/workflows/lint.yaml + contract-check: + uses: ./.github/workflows/contract-check.yaml type-checking: uses: ./.github/workflows/type-checking.yaml needs: [lint] diff --git a/CLAUDE.md b/CLAUDE.md index 2130a20..a97559c 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -52,7 +52,7 @@ blindpay-node/ ### File naming -- Resource directories: kebab-case matching the API path segment (`partner-fees`, `api-keys`, `bank-accounts`). +- Resource directories: kebab-case matching the API path segment (`partner-fees`, `virtual-accounts`, `bank-accounts`). - Single-file resources inside a directory: `index.ts`. - Grouped resources without their own parent: individual files (`wallets/blockchain.ts`, `wallets/custodial.ts`). - Sub-resource files: placed inside the parent resource directory (`payins/quotes.ts`). @@ -386,7 +386,7 @@ Types like `Currency`, `Network`, `StablecoinToken`, `TransactionStatus`, `Pagin ## How to: Add a Sub-Resource -A sub-resource is nested under a parent on the client (e.g., `blindpay.payins.quotes`, `blindpay.instances.apiKeys`). +A sub-resource is nested under a parent on the client (e.g., `blindpay.payins.quotes`, `blindpay.instances.webhookEndpoints`). ### Step 1: Create the sub-resource file diff --git a/biome.json b/biome.json index 3009fae..b89a069 100644 --- a/biome.json +++ b/biome.json @@ -7,7 +7,14 @@ }, "files": { "ignoreUnknown": false, - "includes": ["**", "!**/node_modules", "!**/dist", "!**/build", "!**/*.d.ts"] + "includes": [ + "**", + "!**/node_modules", + "!**/dist", + "!**/build", + "!**/*.d.ts", + "!.api-sync/spec-snapshot.json" + ] }, "formatter": { "enabled": true, diff --git a/package.json b/package.json index b2ce39c..7ac9d15 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@blindpay/node", - "version": "4.1.1", + "version": "5.0.0", "description": "Official Node.js SDK for Blindpay API - Stablecoin API for global payments", "keywords": [ "blindpay", @@ -48,6 +48,7 @@ "scripts": { "build": "tsup src/index.ts src/resources/ --format cjs,esm --dts", "check-types": "tsc --noEmit", + "contract-check": "node scripts/contract-check.mjs", "lint:check": "biome check .", "lint:fix": "biome check --write .", "test": "vitest run", diff --git a/scripts/contract-check.mjs b/scripts/contract-check.mjs new file mode 100644 index 0000000..435bc5a --- /dev/null +++ b/scripts/contract-check.mjs @@ -0,0 +1,289 @@ +#!/usr/bin/env node +/** + * Contract check: verifies the SDK's wire-facing type declarations match the + * committed OpenAPI spec snapshot at .api-sync/spec-snapshot.json. + * + * Direction A (hard fail): every snake_case property key the SDK declares in a + * resource type (or types/index.d.ts) must exist as a property name SOMEWHERE + * in the snapshot's schemas, unless allow-listed. + * + * Direction B (hard fail): every member of the snapshot's webhook events enum + * (WebhookEndpointIn.properties.events.items.enum) must exist in the SDK's + * WebhookEvents union. + * + * Direction B (warning, non-blocking): snapshot property names the SDK does + * not model anywhere are printed as a warning, not a failure. + * + * Run: node scripts/contract-check.mjs + */ + +import fs from "node:fs"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const REPO_ROOT = path.resolve(__dirname, ".."); + +const SNAPSHOT_PATH = path.join(REPO_ROOT, ".api-sync/spec-snapshot.json"); +const ALLOWLIST_PATH = path.join(REPO_ROOT, ".api-sync/contract-check-allowlist.json"); +const RESOURCES_DIR = path.join(REPO_ROOT, "src/resources"); +const SHARED_TYPES_PATH = path.join(REPO_ROOT, "types/index.d.ts"); + +function fail(message) { + console.error(`\n[contract-check] FAIL: ${message}\n`); + process.exitCode = 1; +} + +function loadJson(filePath, label) { + if (!fs.existsSync(filePath)) { + throw new Error(`${label} not found at ${filePath}`); + } + return JSON.parse(fs.readFileSync(filePath, "utf8")); +} + +// --------------------------------------------------------------------------- +// Snapshot indexing +// --------------------------------------------------------------------------- + +function collectAllPropertyNames(node, into) { + if (Array.isArray(node)) { + for (const item of node) collectAllPropertyNames(item, into); + return; + } + if (node && typeof node === "object") { + if (node.properties && typeof node.properties === "object") { + for (const key of Object.keys(node.properties)) into.add(key); + } + // OpenAPI Parameter objects (query/path params) carry their wire name + // in `name`, not under `properties`. + if (typeof node.name === "string" && typeof node.in === "string") { + into.add(node.name); + } + for (const value of Object.values(node)) collectAllPropertyNames(value, into); + } +} + +function collectWebhookEventEnum(spec) { + const schema = spec.components?.schemas?.WebhookEndpointIn; + const enumValues = schema?.properties?.events?.items?.enum; + if (!Array.isArray(enumValues) || enumValues.length === 0) { + throw new Error( + "Could not locate components.schemas.WebhookEndpointIn.properties.events.items.enum in the snapshot" + ); + } + return new Set(enumValues); +} + +// --------------------------------------------------------------------------- +// SDK source scanning +// --------------------------------------------------------------------------- + +function listResourceSourceFiles(dir, out = []) { + for (const entry of fs.readdirSync(dir, { withFileTypes: true })) { + if (entry.name.startsWith(".") || entry.name === "node_modules") continue; + const full = path.join(dir, entry.name); + if (entry.isDirectory()) { + listResourceSourceFiles(full, out); + } else if (entry.name.endsWith(".ts") && !entry.name.endsWith(".test.ts")) { + out.push(full); + } + } + return out; +} + +// Only the type-declaration section of a resource file is wire-contract +// surface. The factory function body builds/calls requests using values +// already typed above it, so we stop scanning at that boundary. +function typeDeclarationSection(content) { + const marker = content.indexOf("\nexport function create"); + return marker === -1 ? content : content.slice(0, marker); +} + +const TOP_LEVEL_TYPE_RE = /^export type ([A-Za-z_][A-Za-z0-9_]*)\b/; +const PROPERTY_KEY_RE = /^\s*(?:readonly\s+)?([A-Za-z_][A-Za-z0-9_]*)\??\s*:\s*\S/; + +/** + * Returns [{ file, line, schema, field }] for every property key declared in + * the type-declaration section of the given file's content. `schema` is the + * nearest enclosing top-level `export type` name (best-effort attribution, + * used only for allow-list scoping). + */ +function extractDeclaredWireKeys(filePath, content) { + const section = typeDeclarationSection(content); + const lines = section.split("\n"); + const found = []; + let currentSchema = null; + + for (let i = 0; i < lines.length; i++) { + const line = lines[i]; + const trimmed = line.trim(); + + // Union members ( | "value" ) and comments are never object keys. + if (trimmed.startsWith("|") || trimmed.startsWith("//") || trimmed.startsWith("*")) { + continue; + } + + const topLevelMatch = TOP_LEVEL_TYPE_RE.exec(line); + if (topLevelMatch) { + currentSchema = topLevelMatch[1]; + continue; + } + + const propMatch = PROPERTY_KEY_RE.exec(line); + if (propMatch) { + found.push({ + file: path.relative(REPO_ROOT, filePath), + line: i + 1, + schema: currentSchema ?? "(module-level)", + field: propMatch[1], + }); + } + } + + return found; +} + +// --------------------------------------------------------------------------- +// Allow-list +// --------------------------------------------------------------------------- + +function loadAllowList() { + if (!fs.existsSync(ALLOWLIST_PATH)) return []; + const raw = loadJson(ALLOWLIST_PATH, "allow-list"); + if (!Array.isArray(raw)) { + throw new Error(`${ALLOWLIST_PATH} must be a JSON array`); + } + for (const [i, entry] of raw.entries()) { + for (const key of ["schema", "field", "reason", "owner"]) { + if (typeof entry[key] !== "string" || entry[key].trim() === "") { + throw new Error(`${ALLOWLIST_PATH}[${i}] is missing a non-empty string "${key}"`); + } + } + } + return raw; +} + +function allowListKey(schema, field) { + return `${schema}.${field}`; +} + +// --------------------------------------------------------------------------- +// Main +// --------------------------------------------------------------------------- + +function main() { + const spec = loadJson(SNAPSHOT_PATH, "spec snapshot"); + const allowList = loadAllowList(); + const allowedKeys = new Set(allowList.map((e) => allowListKey(e.schema, e.field))); + + // Walk the whole document, not just components.schemas: list-endpoint + // envelopes ({ data, pagination }) and some request bodies are defined + // inline on the path item rather than as a reusable named schema. + const allWireProperties = new Set(); + collectAllPropertyNames(spec, allWireProperties); + + const webhookEventEnum = collectWebhookEventEnum(spec); + + const sourceFiles = [SHARED_TYPES_PATH, ...listResourceSourceFiles(RESOURCES_DIR)].filter((f) => + fs.existsSync(f) + ); + + const declaredKeys = []; + for (const file of sourceFiles) { + const content = fs.readFileSync(file, "utf8"); + declaredKeys.push(...extractDeclaredWireKeys(file, content)); + } + + // --- Direction A: every declared wire key must exist somewhere in the snapshot --- + const directionAViolations = []; + const usedAllowListKeys = new Set(); + for (const decl of declaredKeys) { + if (allWireProperties.has(decl.field)) continue; + const key = allowListKey(decl.schema, decl.field); + if (allowedKeys.has(key)) { + usedAllowListKeys.add(key); + continue; + } + directionAViolations.push(decl); + } + + // --- Direction B (hard fail): webhook events enum, explicitly mapped --- + let webhookEventsUnion; + { + const webhooksFile = path.join(RESOURCES_DIR, "webhooks/index.ts"); + const content = fs.readFileSync(webhooksFile, "utf8"); + const match = content.match(/export type WebhookEvents =\s*([\s\S]*?);/); + if (!match) { + throw new Error( + `Could not locate "export type WebhookEvents = ..." in ${webhooksFile}` + ); + } + webhookEventsUnion = new Set([...match[1].matchAll(/"([^"]+)"/g)].map((m) => m[1])); + } + + const missingWebhookEvents = [...webhookEventEnum].filter( + (evt) => !webhookEventsUnion.has(evt) + ); + + // --- Direction B (warning): spec fields the SDK does not model anywhere --- + const declaredFieldNames = new Set(declaredKeys.map((d) => d.field)); + const unmodeledSpecFields = [...allWireProperties] + .filter((name) => !declaredFieldNames.has(name)) + .sort(); + + // --- Report --- + let hasHardFailure = false; + + if (directionAViolations.length > 0) { + hasHardFailure = true; + fail( + `${directionAViolations.length} SDK-declared field(s) do not exist anywhere in the spec snapshot:` + ); + for (const v of directionAViolations) { + console.error(` ${v.file}:${v.line} ${v.schema}.${v.field}`); + } + console.error( + "\n Rename the field to match the snapshot, or add a justified entry to\n" + + ` ${path.relative(REPO_ROOT, ALLOWLIST_PATH)} (schema, field, reason, owner).` + ); + } + + if (missingWebhookEvents.length > 0) { + hasHardFailure = true; + fail( + `WebhookEvents is missing enum member(s) present in the snapshot: ${missingWebhookEvents.join(", ")}` + ); + } + + const staleAllowListEntries = allowList.filter( + (e) => !usedAllowListKeys.has(allowListKey(e.schema, e.field)) + ); + if (staleAllowListEntries.length > 0) { + hasHardFailure = true; + fail("Stale allow-list entries no longer needed (remove them):"); + for (const e of staleAllowListEntries) { + console.error(` ${e.schema}.${e.field}`); + } + } + + if (unmodeledSpecFields.length > 0) { + console.warn( + `\n[contract-check] WARNING: ${unmodeledSpecFields.length} spec field name(s) are not modeled by any SDK type ` + + "(non-blocking; this is expected for internal/ops-only and business-specific fields):" + ); + console.warn( + ` ${unmodeledSpecFields.slice(0, 25).join(", ")}${unmodeledSpecFields.length > 25 ? ", ..." : ""}` + ); + } + + if (!hasHardFailure) { + console.log( + `[contract-check] OK — ${declaredKeys.length} declared field(s) checked, ` + + `${webhookEventEnum.size} webhook event(s) checked, ${allowList.length} allow-list entr${allowList.length === 1 ? "y" : "ies"} in use.` + ); + } + + process.exit(hasHardFailure ? 1 : 0); +} + +main(); diff --git a/src/client.test.ts b/src/client.test.ts index b173d2e..b439f80 100644 --- a/src/client.test.ts +++ b/src/client.test.ts @@ -9,7 +9,7 @@ describe("BlindPay client", () => { it("handles successful empty JSON responses", async () => { fetchMock.mockResponseOnce("", { status: 200 }); - const { data, error } = await blindpay.instances.apiKeys.delete("ak_000000000000"); + const { data, error } = await blindpay.instances.webhookEndpoints.delete("wh_000000000000"); expect(error).toBeNull(); expect(data).toBeNull(); diff --git a/src/client.ts b/src/client.ts index 961ac01..fcc0132 100644 --- a/src/client.ts +++ b/src/client.ts @@ -3,7 +3,6 @@ import { version } from "../package.json"; import type { BlindpayApiResponse } from "../types"; import type { InternalApiClient } from "./internal/api-client"; import { BlindPayError } from "./internal/blindpay-error"; -import { createApiKeysResource } from "./resources/api-keys"; import { createAvailableResource } from "./resources/available"; import { createBankAccountsResource } from "./resources/bank-accounts"; import { createCustomersResource } from "./resources/customers"; @@ -47,7 +46,6 @@ export class BlindPay { bankAccounts: ReturnType; }; readonly instances: ReturnType & { - apiKeys: ReturnType; webhookEndpoints: ReturnType; tos: ReturnType; }; @@ -97,7 +95,6 @@ export class BlindPay { this.instances = { ...createInstancesResource(this.instanceId, this.api), - apiKeys: createApiKeysResource(this.instanceId, this.api), webhookEndpoints: createWebhookEndpointsResource(this.instanceId, this.api), tos: createTermsOfServiceResource(this.instanceId, this.api), }; diff --git a/src/index.ts b/src/index.ts index b27d4c1..58461ba 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,5 +1,4 @@ export * from "./client"; -export * from "./resources/api-keys"; export * from "./resources/available"; export * from "./resources/bank-accounts"; export * from "./resources/customers"; diff --git a/src/resources/api-keys/api-keys.test.ts b/src/resources/api-keys/api-keys.test.ts deleted file mode 100644 index fd0b15c..0000000 --- a/src/resources/api-keys/api-keys.test.ts +++ /dev/null @@ -1,104 +0,0 @@ -import { describe, expect, it } from "vitest"; -import { BlindPay } from "../../client"; -import type { CreateApiKeyResponse, GetApiKeyResponse, ListApiKeysResponse } from "."; - -describe("Api keys", () => { - afterEach(() => fetchMock.resetMocks()); - - const blindpay = new BlindPay({ apiKey: "test-key", instanceId: "in_000000000000" }); - - describe("Create api key", () => { - it("should create an api key", async () => { - const mockedApiKey: CreateApiKeyResponse = { - id: "ap_000000000000", - token: "token", - }; - - fetchMock.mockResponseOnce(JSON.stringify(mockedApiKey), { - headers: { "Content-Type": "application/json" }, - }); - - const { data, error } = await blindpay.instances.apiKeys.create({ - name: "test", - permission: "full_access", - }); - - expect(error).toBeNull(); - expect(data).toEqual(mockedApiKey); - }); - }); - - describe("Get api key", () => { - it("should get an api key", async () => { - const mockedApiKey: GetApiKeyResponse = { - id: "ap_000000000000", - token: "token", - name: "test", - permission: "full_access", - ip_whitelist: ["127.0.0.1"], - unkey_id: "key_123456789", - last_used_at: "2024-01-01T00:00:00.000Z", - instance_id: "in_000000000000", - created_at: "2021-01-01", - updated_at: "2021-01-01", - }; - - fetchMock.mockResponseOnce(JSON.stringify(mockedApiKey), { - headers: { "Content-Type": "application/json" }, - }); - - const { data, error } = await blindpay.instances.apiKeys.get("ap_000000000000"); - - expect(error).toBeNull(); - expect(data).toEqual(mockedApiKey); - }); - }); - - describe("List api keys", () => { - it("should list api keys", async () => { - const mockedApiKeys: ListApiKeysResponse = [ - { - id: "ap_000000000000", - token: "token", - name: "test", - permission: "full_access", - ip_whitelist: ["127.0.0.1"], - unkey_id: "key_123456789", - last_used_at: "2024-01-01T00:00:00.000Z", - instance_id: "in_000000000000", - created_at: "2021-01-01", - updated_at: "2021-01-01", - }, - ]; - - fetchMock.mockResponseOnce(JSON.stringify(mockedApiKeys), { - headers: { "Content-Type": "application/json" }, - }); - - const { data, error } = await blindpay.instances.apiKeys.list(); - - expect(error).toBeNull(); - expect(data).toEqual(mockedApiKeys); - }); - }); - - describe("Delete api key", () => { - it("should delete an api key", async () => { - fetchMock.mockResponseOnce( - JSON.stringify({ - data: null, - }), - { - headers: { "Content-Type": "application/json" }, - } - ); - - const { data, error } = await blindpay.instances.apiKeys.delete("ap_000000000000"); - - expect(error).toBeNull(); - expect(data).toEqual({ - data: null, - }); - }); - }); -}); diff --git a/src/resources/api-keys/index.ts b/src/resources/api-keys/index.ts deleted file mode 100644 index a3e1146..0000000 --- a/src/resources/api-keys/index.ts +++ /dev/null @@ -1,60 +0,0 @@ -import type { BlindpayApiResponse } from "../../../types"; -import type { InternalApiClient } from "../../internal/api-client"; - -export type ListApiKeysResponse = Array<{ - id: string; - name: string; - permission: "full_access"; - token: string; - ip_whitelist?: string[]; - unkey_id: string; - last_used_at: string | null; - instance_id: string; - created_at: string; - updated_at: string; -}>; - -export type CreateApiKeyInput = { - name: string; - permission: "full_access"; - ip_whitelist?: string[]; -}; - -export type CreateApiKeyResponse = { - id: string; - token: string; -}; - -export type GetApiKeyInput = string; - -export type GetApiKeyResponse = { - id: string; - name: string; - permission: "full_access"; - token: string; - ip_whitelist?: string[]; - unkey_id: string; - last_used_at: string | null; - instance_id: string; - created_at: string; - updated_at: string; -}; - -export type DeleteApiKeyInput = string; - -export function createApiKeysResource(instanceId: string, client: InternalApiClient) { - return { - list(): Promise> { - return client.get(`/instances/${instanceId}/api-keys`); - }, - create({ ...data }: CreateApiKeyInput): Promise> { - return client.post(`/instances/${instanceId}/api-keys`, data); - }, - get(id: GetApiKeyInput): Promise> { - return client.get(`/instances/${instanceId}/api-keys/${id}`); - }, - delete(id: DeleteApiKeyInput): Promise> { - return client.delete(`/instances/${instanceId}/api-keys/${id}`); - }, - }; -} diff --git a/src/resources/customers/index.ts b/src/resources/customers/index.ts index c438af9..c5b5fa6 100644 --- a/src/resources/customers/index.ts +++ b/src/resources/customers/index.ts @@ -73,7 +73,6 @@ export type Owner = { title: string | null; tax_type?: OwnerTaxType | null; instance_id?: string; - receiver_id?: string; customer_id?: string; }; diff --git a/src/resources/instances/index.ts b/src/resources/instances/index.ts index d3c57cd..9bab425 100644 --- a/src/resources/instances/index.ts +++ b/src/resources/instances/index.ts @@ -23,7 +23,7 @@ export type GetInstanceMembersResponse = Array<{ export type UpdateInstanceInput = { name: string; - receiver_invite_redirect_url?: string; + customer_invite_redirect_url?: string; email_notifications?: boolean; require_passkey?: boolean; }; diff --git a/src/resources/payins/index.ts b/src/resources/payins/index.ts index a3c529c..084972c 100644 --- a/src/resources/payins/index.ts +++ b/src/resources/payins/index.ts @@ -54,7 +54,7 @@ export type BlindpayBankDetails = { export type Payin = { id: string; - receiver_id: string; + customer_id: string; pix_code?: string | null; memo_code?: string | null; clabe?: string | null; @@ -98,7 +98,6 @@ export type Payin = { export type ListPayinsInput = PaginationParams & { status?: TransactionStatus; - receiver_id?: string; customer_id?: string; }; @@ -136,7 +135,7 @@ export type CreateEvmPayinResponse = Pick< | "tracking_partner_fee" > & { blindpay_bank_details: BlindpayBankDetails; - receiver_id?: string | null; + customer_id?: string | null; receiver_amount?: number | null; payment_method?: PayinPaymentMethod | null; billing_fee?: number | null; diff --git a/src/resources/payins/payins.test.ts b/src/resources/payins/payins.test.ts index bfe07d1..5f8690b 100644 --- a/src/resources/payins/payins.test.ts +++ b/src/resources/payins/payins.test.ts @@ -17,7 +17,7 @@ describe("Payins", () => { const mockedPayins: ListPayinsResponse = { data: [ { - receiver_id: "re_000000000000", + customer_id: "re_000000000000", id: "re_000000000000", pix_code: "00020101021226790014br.gov.bcb.pix2557brcode.starkinfra.com/v2/bcf07f6c4110454e9fd6f120bab13e835204000053039865802BR5915Blind Pay, Inc.6010Vila Velha62070503***6304BCAB", @@ -140,7 +140,7 @@ describe("Payins", () => { describe("Get payin", () => { it("should get a payin", async () => { const mockedPayin: GetPayinResponse = { - receiver_id: "re_000000000000", + customer_id: "re_000000000000", id: "re_000000000000", pix_code: "00020101021226790014br.gov.bcb.pix2557brcode.starkinfra.com/v2/bcf07f6c4110454e9fd6f120bab13e835204000053039865802BR5915Blind Pay, Inc.6010Vila Velha62070503***6304BCAB", @@ -256,7 +256,7 @@ describe("Payins", () => { describe("Get payin track", () => { it("should get payin tracking information", async () => { const mockedPayinTrack: GetPayinTrackResponse = { - receiver_id: "re_000000000000", + customer_id: "re_000000000000", id: "re_000000000000", pix_code: "00020101021226790014br.gov.bcb.pix2557brcode.starkinfra.com/v2/bcf07f6c4110454e9fd6f120bab13e835204000053039865802BR5915Blind Pay, Inc.6010Vila Velha62070503***6304BCAB", @@ -449,7 +449,7 @@ describe("Payins", () => { address_line_2: "San Francisco, CA 94129", }, }, - receiver_id: "re_000000000000", + customer_id: "re_000000000000", receiver_amount: 1010, }; diff --git a/src/resources/payouts/index.ts b/src/resources/payouts/index.ts index eac38cd..4493240 100644 --- a/src/resources/payouts/index.ts +++ b/src/resources/payouts/index.ts @@ -22,7 +22,7 @@ import type { InternalApiClient } from "../../internal/api-client"; export type SpeiProtocol = "clabe" | "debitcard" | "phonenum"; export type Payout = { - receiver_id: string; + customer_id: string; id: string; status: TransactionStatus; sender_wallet_address: string; @@ -50,7 +50,7 @@ export type Payout = { commercial_quotation: number; blindpay_quotation: number; total_fee_amount: number; - receiver_local_amount: number; + customer_local_amount: number; currency: Exclude; transaction_document_file: string; transaction_document_type: TransactionDocumentType; @@ -95,7 +95,6 @@ export type Payout = { }; export type ListPayoutsInput = PaginationParams & { - receiver_id?: string; customer_id?: string; }; @@ -105,7 +104,7 @@ export type ListPayoutsResponse = { }; export type CreatePayoutInput = { - receiver_id: string; + customer_id: string; bank_account_id: string; amount: number; currency: Currency; @@ -159,7 +158,7 @@ export type CreateStellarPayoutResponse = { tracking_transaction?: PayoutTrackingTransaction; tracking_partner_fee?: PayoutTrackingPartnerFee; tracking_liquidity?: PayoutTrackingLiquidity; - receiver_id: string; + customer_id: string; }; export type CreateEvmPayoutInput = { @@ -176,7 +175,7 @@ export type CreateEvmPayoutResponse = { tracking_transaction?: PayoutTrackingTransaction; tracking_partner_fee?: PayoutTrackingPartnerFee; tracking_liquidity?: PayoutTrackingLiquidity; - receiver_id: string; + customer_id: string; }; export type CreateSolanaPayoutInput = { @@ -194,7 +193,7 @@ export type CreateSolanaPayoutResponse = { tracking_transaction: PayoutTrackingTransaction; tracking_partner_fee?: PayoutTrackingPartnerFee | null; tracking_liquidity?: PayoutTrackingLiquidity | null; - receiver_id: string | null; + customer_id: string | null; }; export function createPayoutsResource(instanceId: string, client: InternalApiClient) { diff --git a/src/resources/payouts/payouts.test.ts b/src/resources/payouts/payouts.test.ts index bb58903..f13f006 100644 --- a/src/resources/payouts/payouts.test.ts +++ b/src/resources/payouts/payouts.test.ts @@ -21,7 +21,7 @@ describe("Payouts", () => { const mockedPayouts: ListPayoutsResponse = { data: [ { - receiver_id: "re_000000000000", + customer_id: "re_000000000000", id: "pa_000000000000", status: "processing", sender_wallet_address: "0x123...890", @@ -81,7 +81,7 @@ describe("Payouts", () => { commercial_quotation: 495, blindpay_quotation: 485, total_fee_amount: 1.5, - receiver_local_amount: 1000, + customer_local_amount: 1000, currency: "BRL", transaction_document_file: "https://example.com/image.png", transaction_document_type: "invoice", @@ -140,7 +140,7 @@ describe("Payouts", () => { describe("Get payout", () => { it("should get a payout", async () => { const mockedPayout: GetPayoutResponse = { - receiver_id: "re_000000000000", + customer_id: "re_000000000000", id: "pa_000000000000", status: "processing", sender_wallet_address: "0x123...890", @@ -200,7 +200,7 @@ describe("Payouts", () => { commercial_quotation: 495, blindpay_quotation: 485, total_fee_amount: 1.5, - receiver_local_amount: 1000, + customer_local_amount: 1000, currency: "BRL", transaction_document_file: "https://example.com/image.png", transaction_document_type: "invoice", @@ -252,7 +252,7 @@ describe("Payouts", () => { describe("Get payout track", () => { it("should get payout tracking information", async () => { const mockedPayoutTrack: GetPayoutTrackResponse = { - receiver_id: "re_000000000000", + customer_id: "re_000000000000", id: "pa_000000000000", status: "processing", sender_wallet_address: "0x123...890", @@ -312,7 +312,7 @@ describe("Payouts", () => { commercial_quotation: 495, blindpay_quotation: 485, total_fee_amount: 1.5, - receiver_local_amount: 1000, + customer_local_amount: 1000, currency: "BRL", transaction_document_file: "https://example.com/image.png", transaction_document_type: "invoice", @@ -425,7 +425,7 @@ describe("Payouts", () => { estimated_time_of_arrival: "1_business_day", completed_at: "2011-10-05T14:48:00.000Z", }, - receiver_id: "re_000000000000", + customer_id: "re_000000000000", }; fetchMock.mockResponseOnce(JSON.stringify(mockedStellarPayout), { @@ -486,7 +486,7 @@ describe("Payouts", () => { estimated_time_of_arrival: "1_business_day", completed_at: "2011-10-05T14:48:00.000Z", }, - receiver_id: "re_000000000000", + customer_id: "re_000000000000", }; fetchMock.mockResponseOnce(JSON.stringify(mockedEvmPayout), { @@ -547,7 +547,7 @@ describe("Payouts", () => { estimated_time_of_arrival: "1_business_day", completed_at: "2011-10-05T14:48:00.000Z", }, - receiver_id: "re_000000000000", + customer_id: "re_000000000000", }; fetchMock.mockResponseOnce(JSON.stringify(mockedSolanaPayout), { diff --git a/src/resources/quotes/index.ts b/src/resources/quotes/index.ts index 76b709e..e0563e0 100644 --- a/src/resources/quotes/index.ts +++ b/src/resources/quotes/index.ts @@ -37,7 +37,7 @@ export type CreateQuoteResponse = { chainId: number; }; } | null; - receiver_local_amount?: number | null; + customer_local_amount?: number | null; description?: string | null; }; diff --git a/src/resources/quotes/quotes.test.ts b/src/resources/quotes/quotes.test.ts index fcd667f..668c2d4 100644 --- a/src/resources/quotes/quotes.test.ts +++ b/src/resources/quotes/quotes.test.ts @@ -29,7 +29,7 @@ describe("Quotes", () => { chainId: 1, }, }, - receiver_local_amount: 1000, + customer_local_amount: 1000, description: "Memo code or description, only works with USD and BRL", }; diff --git a/src/resources/terms-of-service/index.ts b/src/resources/terms-of-service/index.ts index 1e6cd64..088096d 100644 --- a/src/resources/terms-of-service/index.ts +++ b/src/resources/terms-of-service/index.ts @@ -3,7 +3,7 @@ import type { InternalApiClient } from "../../internal/api-client"; export type InitiateInput = { idempotency_key: string; - receiver_id: string | null; + customer_id: string | null; redirect_url: string | null; }; @@ -15,12 +15,12 @@ export function createTermsOfServiceResource(instanceId: string, client: Interna return { initiate({ idempotency_key, - receiver_id, + customer_id, redirect_url, }: InitiateInput): Promise> { return client.post(`/e/instances/${instanceId}/tos`, { idempotency_key, - receiver_id, + customer_id, redirect_url, }); }, diff --git a/src/resources/terms-of-service/terms-of-service.test.ts b/src/resources/terms-of-service/terms-of-service.test.ts index d184480..aede016 100644 --- a/src/resources/terms-of-service/terms-of-service.test.ts +++ b/src/resources/terms-of-service/terms-of-service.test.ts @@ -19,7 +19,7 @@ describe("Terms of Service", () => { const { data, error } = await blindpay.instances.tos.initiate({ idempotency_key: "123e4567-e89b-12d3-a456-426614174000", - receiver_id: null, + customer_id: null, redirect_url: null, }); diff --git a/src/resources/transfers/index.ts b/src/resources/transfers/index.ts index 500d452..2e15cb3 100644 --- a/src/resources/transfers/index.ts +++ b/src/resources/transfers/index.ts @@ -44,11 +44,11 @@ export type Transfer = { sender_token: StablecoinToken; sender_amount: number; receiver_amount: number; - receiver_network: Network; - receiver_token: StablecoinToken; - receiver_wallet_address: string; + customer_network: Network; + customer_token: StablecoinToken; + customer_wallet_address: string; partner_fee_amount: number | null; - receiver_id: string; + customer_id: string; address: string; network: Network; }; @@ -56,9 +56,9 @@ export type Transfer = { export type CreateTransferQuoteInput = { wallet_id: string; sender_token: StablecoinToken; - receiver_wallet_address: string; - receiver_token: StablecoinToken; - receiver_network: Network; + customer_wallet_address: string; + customer_token: StablecoinToken; + customer_network: Network; request_amount: number; cover_fees?: boolean | null; amount_reference: "sender" | "receiver"; diff --git a/src/resources/transfers/transfers.test.ts b/src/resources/transfers/transfers.test.ts index 51e7285..10c197b 100644 --- a/src/resources/transfers/transfers.test.ts +++ b/src/resources/transfers/transfers.test.ts @@ -40,11 +40,11 @@ const mockTransfer: Transfer = { sender_token: "USDC", sender_amount: 10000, receiver_amount: 9950, - receiver_network: "polygon", - receiver_token: "USDC", - receiver_wallet_address: "0xDD6a3aD0949396e57C7738ba8FC1A46A5a1C372C", + customer_network: "polygon", + customer_token: "USDC", + customer_wallet_address: "0xDD6a3aD0949396e57C7738ba8FC1A46A5a1C372C", partner_fee_amount: null, - receiver_id: "re_000000000000", + customer_id: "re_000000000000", address: "0xDD6a3aD0949396e57C7738ba8FC1A46A5a1C372C", network: "polygon", }; @@ -74,9 +74,9 @@ describe("Transfers", () => { const { data, error } = await blindpay.transfers.quotes.create({ wallet_id: "wa_000000000000", sender_token: "USDC", - receiver_wallet_address: "0xDD6a3aD0949396e57C7738ba8FC1A46A5a1C372C", - receiver_token: "USDC", - receiver_network: "polygon", + customer_wallet_address: "0xDD6a3aD0949396e57C7738ba8FC1A46A5a1C372C", + customer_token: "USDC", + customer_network: "polygon", request_amount: 10000, cover_fees: true, amount_reference: "sender", diff --git a/src/resources/webhooks/index.ts b/src/resources/webhooks/index.ts index c233966..7cfd610 100644 --- a/src/resources/webhooks/index.ts +++ b/src/resources/webhooks/index.ts @@ -2,8 +2,6 @@ import type { BlindpayApiResponse } from "../../../types"; import type { InternalApiClient } from "../../internal/api-client"; export type WebhookEvents = - | "receiver.new" // @deprecated use "customer.new" instead - | "receiver.update" // @deprecated use "customer.update" instead | "bankAccount.new" | "payout.new" | "payout.update" @@ -24,7 +22,6 @@ export type WebhookEvents = | "transfer.complete" | "wallet.new" | "wallet.inbound" - | "receiver.delete" // @deprecated use "customer.delete" instead | "customer.new" | "customer.update" | "customer.delete"; diff --git a/src/resources/webhooks/webhooks.test.ts b/src/resources/webhooks/webhooks.test.ts index 0db19aa..49cd408 100644 --- a/src/resources/webhooks/webhooks.test.ts +++ b/src/resources/webhooks/webhooks.test.ts @@ -18,7 +18,7 @@ describe("Webhooks", () => { const { data, error } = await blindpay.instances.webhookEndpoints.create({ url: "https://example.com/webhook", - events: ["receiver.new"], + events: ["customer.new"], }); expect(error).toBeNull(); @@ -32,7 +32,7 @@ describe("Webhooks", () => { { id: "we_000000000000", url: "https://example.com/webhook", - events: ["receiver.new"], + events: ["customer.new"], last_event_at: "2024-01-01T00:00:00.000Z", instance_id: "in_000000000000", created_at: "2021-01-01T00:00:00Z",