{"openapi":"3.1.0","info":{"title":"Swipelux API","description":"The Swipelux API enables you to create customers, manage bank accounts and wallets, and initiate pay-ins, payouts, and transfers across supported fiat and blockchain networks.\n\nThe beta v2 API models fiat connectivity around financial institution relationships and payment capabilities instead of rail-specific primitives. Start with a customer, discover supported institutions and payment methods, request the required account capabilities, manage issued or external accounts, submit documents, and create quotes and transfers through one consistent workflow. Account-scoped pay-in developer fees live on issued bank accounts in the Accounts surface, not on internal rails.","version":"1.0.0"},"servers":[{"url":"https://platform.swipelux.com","description":"Production and sandbox; environment selected by API key"}],"components":{"schemas":{"Customer":{"oneOf":[{"type":"object","additionalProperties":false,"required":["id","type","externalId","individual","financialProfile","metadata","createdAt","updatedAt"],"properties":{"id":{"type":"string","description":"Immutable cus_ customer identifier.","example":"cus_9y1zvKQvGWX0altPGIqM6O"},"externalId":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[\\x20-\\x7E]+$","description":"Developer correlation identifier using 1-256 printable ASCII characters.","nullable":true},"financialProfile":{"type":"object","additionalProperties":false,"properties":{"accountPurposes":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["business_expenses","charitable_donations","cross_border_remittance","ecommerce","family_support","investment","payroll","operate_company","personal_expenses","purchase_goods_and_services","receive_freelance_payments","receive_payments","receive_salary","tax_optimization","tax_payments","third_party_money_transmission","treasury_management","wealth_preservation","other"]}},"accountPurposeDescription":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected."},"expectedTransactionPurposes":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["business_payments","charitable_donations","cross_border_remittance","family_support","goods_and_services","investment","payroll","personal_expenses","receive_freelance_payments","receive_salary","wealth_preservation","other"]}},"expectedTransactionPurposeDescription":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected."},"expectedActivityDescription":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected."},"sourcesOfFunds":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["salary","savings","business_revenue","investment_income","asset_sale","inheritance","gift","pension","government_benefits","loan","owner_contribution","investor_contribution","company_funds","intercompany_funds","investment_proceeds","legal_settlement","tax_refund","treasury_reserves","insurance_proceeds","equity_compensation","grants_and_donations","third_party_funds","gambling","other"]}},"sourceOfFundsDescription":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected."},"sourcesOfWealth":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["employment_income","business_ownership","investments","business_dividends_or_profits","client_or_investor_contributions","charitable_contributions","affiliate_income","real_estate","asset_sale","inheritance","gift","gambling","royalties","other"]}},"sourceOfWealthDescription":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected."},"estimatedAnnualRevenue":{"type":"object","additionalProperties":false,"required":["amount","currency"],"properties":{"amount":{"type":"string","pattern":"^(0|[1-9][0-9]*)(\\.[0-9]+)?$","description":"Non-negative major-unit decimal string with at most 38 digits; currency scale is validated without rounding."},"currency":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$","description":"ISO 4217 alpha-3 code or documented stablecoin symbol."}}},"expectedMonthlyVolume":{"type":"object","additionalProperties":false,"required":["amount","currency"],"properties":{"amount":{"type":"string","pattern":"^(0|[1-9][0-9]*)(\\.[0-9]+)?$","description":"Non-negative major-unit decimal string with at most 38 digits; currency scale is validated without rounding."},"currency":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$","description":"ISO 4217 alpha-3 code or documented stablecoin symbol."}}},"expectedMonthlyPayinVolume":{"type":"object","additionalProperties":false,"required":["amount","currency"],"properties":{"amount":{"type":"string","pattern":"^(0|[1-9][0-9]*)(\\.[0-9]+)?$","description":"Non-negative major-unit decimal string with at most 38 digits; currency scale is validated without rounding."},"currency":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$","description":"ISO 4217 alpha-3 code or documented stablecoin symbol."}}},"expectedMonthlyPayoutVolume":{"type":"object","additionalProperties":false,"required":["amount","currency"],"properties":{"amount":{"type":"string","pattern":"^(0|[1-9][0-9]*)(\\.[0-9]+)?$","description":"Non-negative major-unit decimal string with at most 38 digits; currency scale is validated without rounding."},"currency":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$","description":"ISO 4217 alpha-3 code or documented stablecoin symbol."}}},"expectedMonthlyTransactionCount":{"type":"integer","minimum":0,"maximum":2147483647},"typicalTransactionAmount":{"type":"object","additionalProperties":false,"required":["amount","currency"],"properties":{"amount":{"type":"string","pattern":"^(0|[1-9][0-9]*)(\\.[0-9]+)?$","description":"Non-negative major-unit decimal string with at most 38 digits; currency scale is validated without rounding."},"currency":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$","description":"ISO 4217 alpha-3 code or documented stablecoin symbol."}}},"maximumTransactionAmount":{"type":"object","additionalProperties":false,"required":["amount","currency"],"properties":{"amount":{"type":"string","pattern":"^(0|[1-9][0-9]*)(\\.[0-9]+)?$","description":"Non-negative major-unit decimal string with at most 38 digits; currency scale is validated without rounding."},"currency":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$","description":"ISO 4217 alpha-3 code or documented stablecoin symbol."}}},"expectedCurrencies":{"type":"array","uniqueItems":true,"items":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$"}},"expectedCorridors":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["fromCountry","toCountry"],"properties":{"fromCountry":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"toCountry":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"fromCurrency":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$"},"toCurrency":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$"}}}},"expectedCounterpartyEntityTypes":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["individual","business","financial_institution","government","nonprofit","exchange","own_account","other"]}},"expectedCounterpartyEntityTypeDescription":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected."},"expectedCounterpartyRelationships":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["employee","contractor","vendor","subsidiary","merchant","customer","landlord","family","other"]}},"expectedCounterpartyRelationshipDescription":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected."},"flows":{"type":"object","additionalProperties":false,"properties":{"payin":{"type":"object","additionalProperties":false,"required":["firstParty","thirdParty"],"properties":{"firstParty":{"type":"boolean"},"thirdParty":{"type":"boolean"}}},"payout":{"type":"object","additionalProperties":false,"required":["firstParty","thirdParty"],"properties":{"firstParty":{"type":"boolean"},"thirdParty":{"type":"boolean"}}}}},"fundsHandlingActivities":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["receive","hold","pool","aggregate","convert","settle","forward","disburse","custody","other"]}},"fundsHandlingActivityDescription":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected."},"actsAsIntermediary":{"type":"boolean"},"ownAccountTreasuryOnly":{"type":"boolean"}},"description":"Provider-neutral expected financial activity and funds-handling facts."},"metadata":{"type":"object","maxProperties":50,"additionalProperties":{"anyOf":[{"type":"string","maxLength":1024},{"type":"number"},{"type":"boolean"}]},"description":"Developer-owned scalar metadata map with at most 50 entries."},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"type":{"type":"string","enum":["individual"]},"individual":{"type":"object","additionalProperties":false,"properties":{"firstName":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"middleName":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"lastName":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"birthDate":{"type":"string","format":"date"},"birthCountry":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"nationalities":{"type":"array","uniqueItems":true,"items":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"residenceCountry":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"email":{"type":"string","format":"email","maxLength":254},"phone":{"type":"string","pattern":"^\\+[1-9][0-9]{1,14}$"},"residentialAddress":{"type":"object","additionalProperties":false,"minProperties":1,"properties":{"streetLine1":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"streetLine2":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"city":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"state":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"postalCode":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"description":"Progressively collected address with at least one supplied fact."},"mailingAddress":{"type":"object","additionalProperties":false,"minProperties":1,"properties":{"streetLine1":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"streetLine2":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"city":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"state":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"postalCode":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"description":"Progressively collected address with at least one supplied fact."},"taxResidencies":{"type":"array","uniqueItems":true,"items":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"taxIdentifiers":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["type","country","value"],"properties":{"type":{"type":"string","enum":["ssn","itin","ein","tin","vat","cpf","cnpj","other"]},"typeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"value":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."}},"description":"Tax identifier. typeDescription is required and allowed only for type other."}},"identityDocuments":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["type","issuingCountry"],"properties":{"type":{"type":"string","enum":["passport","national_id","drivers_license","residence_permit","government_id","state_or_provincial_id","other"]},"typeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"issuingCountry":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"issuingRegion":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"number":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"issuedOn":{"type":"string","format":"date"},"expiresOn":{"type":"string","format":"date"},"doesNotExpire":{"type":"boolean"}},"description":"Identity-document metadata; number is optional and expiry facts are mutually consistent."}},"employment":{"type":"object","additionalProperties":false,"minProperties":1,"properties":{"status":{"type":"string","enum":["employed","self_employed","unemployed","student","retired","homemaker","other"]},"statusDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"occupation":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."}},"description":"Employment requires status or occupation; statusDescription is exclusive to other."}},"description":"Reusable progressively collected individual identity facts."}}},{"type":"object","additionalProperties":false,"required":["id","type","externalId","business","financialProfile","relatedParties","metadata","createdAt","updatedAt"],"properties":{"id":{"type":"string","description":"Immutable cus_ customer identifier.","example":"cus_9y1zvKQvGWX0altPGIqM6O"},"externalId":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[\\x20-\\x7E]+$","description":"Developer correlation identifier using 1-256 printable ASCII characters.","nullable":true},"financialProfile":{"type":"object","additionalProperties":false,"properties":{"accountPurposes":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["business_expenses","charitable_donations","cross_border_remittance","ecommerce","family_support","investment","payroll","operate_company","personal_expenses","purchase_goods_and_services","receive_freelance_payments","receive_payments","receive_salary","tax_optimization","tax_payments","third_party_money_transmission","treasury_management","wealth_preservation","other"]}},"accountPurposeDescription":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected."},"expectedTransactionPurposes":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["business_payments","charitable_donations","cross_border_remittance","family_support","goods_and_services","investment","payroll","personal_expenses","receive_freelance_payments","receive_salary","wealth_preservation","other"]}},"expectedTransactionPurposeDescription":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected."},"expectedActivityDescription":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected."},"sourcesOfFunds":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["salary","savings","business_revenue","investment_income","asset_sale","inheritance","gift","pension","government_benefits","loan","owner_contribution","investor_contribution","company_funds","intercompany_funds","investment_proceeds","legal_settlement","tax_refund","treasury_reserves","insurance_proceeds","equity_compensation","grants_and_donations","third_party_funds","gambling","other"]}},"sourceOfFundsDescription":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected."},"sourcesOfWealth":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["employment_income","business_ownership","investments","business_dividends_or_profits","client_or_investor_contributions","charitable_contributions","affiliate_income","real_estate","asset_sale","inheritance","gift","gambling","royalties","other"]}},"sourceOfWealthDescription":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected."},"estimatedAnnualRevenue":{"type":"object","additionalProperties":false,"required":["amount","currency"],"properties":{"amount":{"type":"string","pattern":"^(0|[1-9][0-9]*)(\\.[0-9]+)?$","description":"Non-negative major-unit decimal string with at most 38 digits; currency scale is validated without rounding."},"currency":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$","description":"ISO 4217 alpha-3 code or documented stablecoin symbol."}}},"expectedMonthlyVolume":{"type":"object","additionalProperties":false,"required":["amount","currency"],"properties":{"amount":{"type":"string","pattern":"^(0|[1-9][0-9]*)(\\.[0-9]+)?$","description":"Non-negative major-unit decimal string with at most 38 digits; currency scale is validated without rounding."},"currency":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$","description":"ISO 4217 alpha-3 code or documented stablecoin symbol."}}},"expectedMonthlyPayinVolume":{"type":"object","additionalProperties":false,"required":["amount","currency"],"properties":{"amount":{"type":"string","pattern":"^(0|[1-9][0-9]*)(\\.[0-9]+)?$","description":"Non-negative major-unit decimal string with at most 38 digits; currency scale is validated without rounding."},"currency":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$","description":"ISO 4217 alpha-3 code or documented stablecoin symbol."}}},"expectedMonthlyPayoutVolume":{"type":"object","additionalProperties":false,"required":["amount","currency"],"properties":{"amount":{"type":"string","pattern":"^(0|[1-9][0-9]*)(\\.[0-9]+)?$","description":"Non-negative major-unit decimal string with at most 38 digits; currency scale is validated without rounding."},"currency":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$","description":"ISO 4217 alpha-3 code or documented stablecoin symbol."}}},"expectedMonthlyTransactionCount":{"type":"integer","minimum":0,"maximum":2147483647},"typicalTransactionAmount":{"type":"object","additionalProperties":false,"required":["amount","currency"],"properties":{"amount":{"type":"string","pattern":"^(0|[1-9][0-9]*)(\\.[0-9]+)?$","description":"Non-negative major-unit decimal string with at most 38 digits; currency scale is validated without rounding."},"currency":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$","description":"ISO 4217 alpha-3 code or documented stablecoin symbol."}}},"maximumTransactionAmount":{"type":"object","additionalProperties":false,"required":["amount","currency"],"properties":{"amount":{"type":"string","pattern":"^(0|[1-9][0-9]*)(\\.[0-9]+)?$","description":"Non-negative major-unit decimal string with at most 38 digits; currency scale is validated without rounding."},"currency":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$","description":"ISO 4217 alpha-3 code or documented stablecoin symbol."}}},"expectedCurrencies":{"type":"array","uniqueItems":true,"items":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$"}},"expectedCorridors":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["fromCountry","toCountry"],"properties":{"fromCountry":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"toCountry":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"fromCurrency":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$"},"toCurrency":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$"}}}},"expectedCounterpartyEntityTypes":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["individual","business","financial_institution","government","nonprofit","exchange","own_account","other"]}},"expectedCounterpartyEntityTypeDescription":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected."},"expectedCounterpartyRelationships":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["employee","contractor","vendor","subsidiary","merchant","customer","landlord","family","other"]}},"expectedCounterpartyRelationshipDescription":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected."},"flows":{"type":"object","additionalProperties":false,"properties":{"payin":{"type":"object","additionalProperties":false,"required":["firstParty","thirdParty"],"properties":{"firstParty":{"type":"boolean"},"thirdParty":{"type":"boolean"}}},"payout":{"type":"object","additionalProperties":false,"required":["firstParty","thirdParty"],"properties":{"firstParty":{"type":"boolean"},"thirdParty":{"type":"boolean"}}}}},"fundsHandlingActivities":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["receive","hold","pool","aggregate","convert","settle","forward","disburse","custody","other"]}},"fundsHandlingActivityDescription":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected."},"actsAsIntermediary":{"type":"boolean"},"ownAccountTreasuryOnly":{"type":"boolean"}},"description":"Provider-neutral expected financial activity and funds-handling facts."},"metadata":{"type":"object","maxProperties":50,"additionalProperties":{"anyOf":[{"type":"string","maxLength":1024},{"type":"number"},{"type":"boolean"}]},"description":"Developer-owned scalar metadata map with at most 50 entries."},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"type":{"type":"string","enum":["business"]},"business":{"type":"object","additionalProperties":false,"required":["legalName"],"properties":{"legalName":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"tradeNames":{"type":"array","uniqueItems":true,"items":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."}},"legalForm":{"type":"string","enum":["corporation","limited_liability_company","partnership","limited_partnership","sole_proprietorship","nonprofit","cooperative","association","professional_association","foundation","trust","investment_fund","society","dao","government_entity","other"]},"legalFormDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"email":{"type":"string","format":"email","maxLength":254},"complianceEmail":{"type":"string","format":"email","maxLength":254},"phone":{"type":"string","pattern":"^\\+[1-9][0-9]{1,14}$"},"websites":{"type":"array","uniqueItems":true,"items":{"type":"string","format":"uri","maxLength":2048}},"description":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected."},"productsAndServices":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected."},"industryClassifications":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["scheme","code"],"properties":{"scheme":{"type":"string","enum":["naics","sic","nace","isic","mcc","other"]},"schemeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"code":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."}}}},"customerTypes":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["individual","business","financial_institution","government","nonprofit","other"]}},"customerTypeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"salesChannels":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["online","in_person","marketplace","mobile_app","business_to_business","other"]}},"salesChannelDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"registration":{"type":"object","additionalProperties":false,"minProperties":1,"properties":{"jurisdiction":{"type":"object","additionalProperties":false,"required":["country"],"properties":{"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"region":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."}},"description":"Country and optional country-specific registration region."},"number":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"formationDate":{"type":"string","format":"date"}}},"registeredAddress":{"type":"object","additionalProperties":false,"minProperties":1,"properties":{"streetLine1":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"streetLine2":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"city":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"state":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"postalCode":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"description":"Progressively collected address with at least one supplied fact."},"operatingAddress":{"type":"object","additionalProperties":false,"minProperties":1,"properties":{"streetLine1":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"streetLine2":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"city":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"state":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"postalCode":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"description":"Progressively collected address with at least one supplied fact."},"mailingAddress":{"type":"object","additionalProperties":false,"minProperties":1,"properties":{"streetLine1":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"streetLine2":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"city":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"state":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"postalCode":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"description":"Progressively collected address with at least one supplied fact."},"operatingCountries":{"type":"array","uniqueItems":true,"items":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"taxResidencies":{"type":"array","uniqueItems":true,"items":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"taxIdentifiers":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["type","country","value"],"properties":{"type":{"type":"string","enum":["ssn","itin","ein","tin","vat","cpf","cnpj","other"]},"typeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"value":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."}},"description":"Tax identifier. typeDescription is required and allowed only for type other."}},"publicListing":{"type":"object","additionalProperties":false,"minProperties":1,"properties":{"exchange":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"ticker":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"jurisdiction":{"type":"object","additionalProperties":false,"required":["country"],"properties":{"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"region":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."}},"description":"Country and optional country-specific registration region."}}},"regulatoryStatus":{"type":"string","enum":["regulated","pending","unregulated","exempt"]},"regulatoryRegistrations":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["type","jurisdiction"],"properties":{"type":{"type":"string","enum":["money_transmitter","money_services_business","bank","electronic_money_institution","payment_institution","virtual_asset_service_provider","broker_dealer","investment_adviser","lender","other"]},"typeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"jurisdiction":{"type":"object","additionalProperties":false,"required":["country"],"properties":{"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"region":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."}},"description":"Country and optional country-specific registration region."},"authority":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"number":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"status":{"type":"string","enum":["active","pending","suspended","revoked","expired"]},"issuedOn":{"type":"string","format":"date"},"expiresOn":{"type":"string","format":"date"}}}},"ownershipStructure":{"type":"object","additionalProperties":false,"required":["type"],"properties":{"type":{"type":"string","enum":["privately_held","publicly_traded","government_owned","subsidiary","trust","fund","other"]},"description":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"parentType":{"type":"string","enum":["publicly_traded_company","financial_institution","other"]},"parentTypeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"parentOwnershipPercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$"}}}},"description":"Reusable business identity; legalName is the required anchor."},"relatedParties":{"type":"array","items":{"$ref":"#/components/schemas/RelatedParty"}}}}],"discriminator":{"propertyName":"type"}},"RelatedParty":{"oneOf":[{"type":"object","additionalProperties":false,"required":["id","customerId","partyType","roles","person","createdAt","updatedAt"],"properties":{"partyType":{"type":"string","enum":["person"]},"roles":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["control_person","director","officer","authorized_signer","authorized_representative","compliance_officer","primary_contact","account_administrator","trustee","settlor","protector","beneficiary","general_partner","limited_partner","other"]}},"roleDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"title":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"ownership":{"type":"object","additionalProperties":false,"minProperties":1,"properties":{"declared":{"type":"boolean"},"directPercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$"},"indirectPercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$"},"effectivePercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$"}}},"votingRights":{"type":"object","additionalProperties":false,"minProperties":1,"properties":{"declared":{"type":"boolean"},"directPercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$"},"indirectPercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$"},"effectivePercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$"}}},"control":{"type":"object","additionalProperties":false,"properties":{"declared":{"type":"boolean"},"direct":{"type":"boolean"},"indirect":{"type":"boolean"},"description":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected."}}},"person":{"type":"object","additionalProperties":false,"properties":{"firstName":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"middleName":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"lastName":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"birthDate":{"type":"string","format":"date"},"birthCountry":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"nationalities":{"type":"array","uniqueItems":true,"items":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"residenceCountry":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"email":{"type":"string","format":"email","maxLength":254},"phone":{"type":"string","pattern":"^\\+[1-9][0-9]{1,14}$"},"residentialAddress":{"type":"object","additionalProperties":false,"minProperties":1,"properties":{"streetLine1":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"streetLine2":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"city":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"state":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"postalCode":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"description":"Progressively collected address with at least one supplied fact."},"mailingAddress":{"type":"object","additionalProperties":false,"minProperties":1,"properties":{"streetLine1":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"streetLine2":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"city":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"state":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"postalCode":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"description":"Progressively collected address with at least one supplied fact."},"taxResidencies":{"type":"array","uniqueItems":true,"items":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"taxIdentifiers":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["type","country","value"],"properties":{"type":{"type":"string","enum":["ssn","itin","ein","tin","vat","cpf","cnpj","other"]},"typeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"value":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."}},"description":"Tax identifier. typeDescription is required and allowed only for type other."}},"identityDocuments":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["type","issuingCountry"],"properties":{"type":{"type":"string","enum":["passport","national_id","drivers_license","residence_permit","government_id","state_or_provincial_id","other"]},"typeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"issuingCountry":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"issuingRegion":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"number":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"issuedOn":{"type":"string","format":"date"},"expiresOn":{"type":"string","format":"date"},"doesNotExpire":{"type":"boolean"}},"description":"Identity-document metadata; number is optional and expiry facts are mutually consistent."}},"employment":{"type":"object","additionalProperties":false,"minProperties":1,"properties":{"status":{"type":"string","enum":["employed","self_employed","unemployed","student","retired","homemaker","other"]},"statusDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"occupation":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."}},"description":"Employment requires status or occupation; statusDescription is exclusive to other."}},"description":"Reusable progressively collected individual identity facts."},"id":{"type":"string","pattern":"^rp_[0-9A-Za-z]+$","example":"rp_5rW7cQvGWX0altPGIqM6O"},"customerId":{"type":"string","pattern":"^cus_[0-9A-Za-z]+$"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},{"type":"object","additionalProperties":false,"required":["id","customerId","partyType","roles","entity","createdAt","updatedAt"],"properties":{"partyType":{"type":"string","enum":["entity"]},"roles":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["control_person","director","officer","authorized_signer","authorized_representative","compliance_officer","primary_contact","account_administrator","trustee","settlor","protector","beneficiary","general_partner","limited_partner","other"]}},"roleDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"title":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"ownership":{"type":"object","additionalProperties":false,"minProperties":1,"properties":{"declared":{"type":"boolean"},"directPercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$"},"indirectPercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$"},"effectivePercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$"}}},"votingRights":{"type":"object","additionalProperties":false,"minProperties":1,"properties":{"declared":{"type":"boolean"},"directPercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$"},"indirectPercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$"},"effectivePercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$"}}},"control":{"type":"object","additionalProperties":false,"properties":{"declared":{"type":"boolean"},"direct":{"type":"boolean"},"indirect":{"type":"boolean"},"description":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected."}}},"entity":{"type":"object","additionalProperties":false,"required":["legalName"],"properties":{"legalName":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"tradeNames":{"type":"array","uniqueItems":true,"items":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."}},"legalForm":{"type":"string","enum":["corporation","limited_liability_company","partnership","limited_partnership","sole_proprietorship","nonprofit","cooperative","association","professional_association","foundation","trust","investment_fund","society","dao","government_entity","other"]},"legalFormDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"email":{"type":"string","format":"email","maxLength":254},"complianceEmail":{"type":"string","format":"email","maxLength":254},"phone":{"type":"string","pattern":"^\\+[1-9][0-9]{1,14}$"},"websites":{"type":"array","uniqueItems":true,"items":{"type":"string","format":"uri","maxLength":2048}},"description":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected."},"productsAndServices":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected."},"industryClassifications":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["scheme","code"],"properties":{"scheme":{"type":"string","enum":["naics","sic","nace","isic","mcc","other"]},"schemeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"code":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."}}}},"customerTypes":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["individual","business","financial_institution","government","nonprofit","other"]}},"customerTypeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"salesChannels":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["online","in_person","marketplace","mobile_app","business_to_business","other"]}},"salesChannelDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"registration":{"type":"object","additionalProperties":false,"minProperties":1,"properties":{"jurisdiction":{"type":"object","additionalProperties":false,"required":["country"],"properties":{"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"region":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."}},"description":"Country and optional country-specific registration region."},"number":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"formationDate":{"type":"string","format":"date"}}},"registeredAddress":{"type":"object","additionalProperties":false,"minProperties":1,"properties":{"streetLine1":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"streetLine2":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"city":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"state":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"postalCode":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"description":"Progressively collected address with at least one supplied fact."},"operatingAddress":{"type":"object","additionalProperties":false,"minProperties":1,"properties":{"streetLine1":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"streetLine2":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"city":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"state":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"postalCode":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"description":"Progressively collected address with at least one supplied fact."},"mailingAddress":{"type":"object","additionalProperties":false,"minProperties":1,"properties":{"streetLine1":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"streetLine2":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"city":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"state":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"postalCode":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"description":"Progressively collected address with at least one supplied fact."},"operatingCountries":{"type":"array","uniqueItems":true,"items":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"taxResidencies":{"type":"array","uniqueItems":true,"items":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"taxIdentifiers":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["type","country","value"],"properties":{"type":{"type":"string","enum":["ssn","itin","ein","tin","vat","cpf","cnpj","other"]},"typeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"value":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."}},"description":"Tax identifier. typeDescription is required and allowed only for type other."}},"publicListing":{"type":"object","additionalProperties":false,"minProperties":1,"properties":{"exchange":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"ticker":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"jurisdiction":{"type":"object","additionalProperties":false,"required":["country"],"properties":{"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"region":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."}},"description":"Country and optional country-specific registration region."}}},"regulatoryStatus":{"type":"string","enum":["regulated","pending","unregulated","exempt"]},"regulatoryRegistrations":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["type","jurisdiction"],"properties":{"type":{"type":"string","enum":["money_transmitter","money_services_business","bank","electronic_money_institution","payment_institution","virtual_asset_service_provider","broker_dealer","investment_adviser","lender","other"]},"typeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"jurisdiction":{"type":"object","additionalProperties":false,"required":["country"],"properties":{"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"region":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."}},"description":"Country and optional country-specific registration region."},"authority":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"number":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"status":{"type":"string","enum":["active","pending","suspended","revoked","expired"]},"issuedOn":{"type":"string","format":"date"},"expiresOn":{"type":"string","format":"date"}}}}},"description":"Reusable business identity; legalName is the required anchor."},"id":{"type":"string","pattern":"^rp_[0-9A-Za-z]+$","example":"rp_5rW7cQvGWX0altPGIqM6O"},"customerId":{"type":"string","pattern":"^cus_[0-9A-Za-z]+$"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}],"discriminator":{"propertyName":"partyType"}},"CustomerSummary":{"type":"object","description":"Field-selected customer list item. It is not a masked detail resource and never embeds related parties.","additionalProperties":false,"required":["id","type","externalId","displayName","email","country","createdAt","updatedAt"],"properties":{"id":{"type":"string","description":"Immutable cus_ customer identifier."},"type":{"type":"string","enum":["individual","business"],"description":"Immutable customer union discriminator."},"externalId":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[\\x20-\\x7E]+$","description":"Exact, case-sensitive developer correlation value; null when unset.","nullable":true},"displayName":{"type":"string","nullable":true,"description":"Derived business legal name or joined available individual name parts; never accepted on writes."},"email":{"type":"string","nullable":true,"description":"Canonical individual or business email; null when it has not been collected."},"country":{"type":"string","nullable":true,"pattern":"^[A-Z]{2}$","description":"Resolved ISO 3166-1 alpha-2 customer country; null when no valid source is available."},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"capabilities":{"type":"array","description":"Opt-in capability summaries returned only for include=capabilities. Active v3 capability status takes precedence over the legacy rail projection.","items":{"type":"object","additionalProperties":false,"required":["id","method","accountType","status"],"properties":{"id":{"type":"string","enum":["stablecoin_transfers","ach_pooled","ach_named","wire_pooled","wire_named","rtp_pooled","rtp_named","sepa_pooled","sepa_named","swift_pooled","swift_named","pix_pooled","spei_pooled","pse_pooled","transfers_3_0_pooled","uaefts_pooled","faster_payments_pooled","faster_payments_named","sepa_instant_pooled","sepa_instant_named","ipp_pooled","ipp_named","pix_named","uaefts_named","card"],"description":"Permanent capability id."},"method":{"type":"string","enum":["ach","wire","rtp","pix","sepa","swift","spei","pse","transfers_3_0","uaefts","faster_payments","sepa_instant","ipp","card","stablecoin_transfers"],"description":"Public payment method."},"accountType":{"type":"string","enum":["pooled","named"],"nullable":true,"description":"Bank account type, or null for a non-bank capability."},"status":{"type":"string","enum":["pending","ready","restricted","rejected","canceled"],"description":"Current canonical capability status."}}}}}},"RelatedPartySummary":{"type":"object","additionalProperties":false,"description":"Field-selected related-party list item without contact, tax, address, document, or answer values.","required":["id","customerId","partyType","roles","displayName","hasOwnership","hasVotingRights","hasControl","createdAt","updatedAt"],"properties":{"id":{"type":"string","pattern":"^rp_[0-9A-Za-z]+$","description":"Immutable rp_ related-party identifier."},"customerId":{"type":"string","pattern":"^cus_[0-9A-Za-z]+$"},"partyType":{"type":"string","enum":["person","entity"]},"roles":{"type":"array","items":{"type":"string"},"uniqueItems":true},"displayName":{"type":"string","nullable":true},"hasOwnership":{"type":"boolean"},"hasVotingRights":{"type":"boolean"},"hasControl":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"Application":{"type":"object","required":["id","institution","status","statusReason","openTaskIds","submittedAt","createdAt","updatedAt"],"properties":{"id":{"type":"string","example":"apl_7mA9sL1kBc6dV8xN2pQ4rT"},"institution":{"type":"object","required":["id","name","bic"],"properties":{"id":{"type":"string","description":"Opaque public institution id to send in `institutions`."},"name":{"type":"string","description":"Public institution name."},"bic":{"type":"string","nullable":true,"description":"BIC/SWIFT code when known."}}},"status":{"type":"string","enum":["requested","in_review","action_required","ready","rejected","disabled","canceled"],"description":"Institution application status. Closed enum — exhaustive; additions would be a breaking change."},"statusReason":{"allOf":[{"$ref":"#/components/schemas/StatusReason"}],"nullable":true,"description":"Structured reason for the current status. `in_review` always returns a stored or synthesized reason; self-explanatory statuses may return null."},"openTaskIds":{"type":"array","items":{"type":"string"},"description":"Ids of open tasks associated with this application, including shared customer tasks reached through an active dependency, ordered by creation time and then task id. Empty when nothing is open."},"submittedAt":{"type":"string","format":"date-time","nullable":true,"description":"Submitted at."},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"Capability":{"type":"object","required":["id","customerId","method","accountType","status","openTaskIds","applications","submittedAt","createdAt","updatedAt"],"properties":{"id":{"type":"string","enum":["stablecoin_transfers","ach_pooled","ach_named","wire_pooled","wire_named","rtp_pooled","rtp_named","sepa_pooled","sepa_named","swift_pooled","swift_named","pix_pooled","spei_pooled","pse_pooled","transfers_3_0_pooled","uaefts_pooled","faster_payments_pooled","faster_payments_named","sepa_instant_pooled","sepa_instant_named","ipp_pooled","ipp_named","pix_named","uaefts_named","card"],"description":"Permanent capability id. Open enum — values are added over time; clients must tolerate unknown values."},"customerId":{"type":"string","example":"cus_7mA9sL1kBc6dV8xN2pQ4rT"},"method":{"type":"string","enum":["ach","wire","rtp","pix","sepa","swift","spei","pse","transfers_3_0","uaefts","faster_payments","sepa_instant","ipp","card","stablecoin_transfers"],"description":"Single payment method represented by this capability. Open enum — values are added over time; clients must tolerate unknown values."},"accountType":{"type":"string","enum":["pooled","named"],"nullable":true,"description":"Bank account type when the capability is bank-account based."},"status":{"type":"string","enum":["pending","ready","restricted","rejected","canceled"],"description":"Capability status. Closed enum — exhaustive; additions would be a breaking change."},"statusReason":{"type":"object","additionalProperties":false,"required":["code","resolution","message"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code."},"resolution":{"type":"string","enum":["complete_tasks","wait","contact_support","none"],"description":"Action that can move the capability forward."},"message":{"type":"string","description":"Public status explanation."}}},"openTaskIds":{"type":"array","items":{"type":"string"},"description":"Ids of open tasks associated with this capability or one of its applications, including shared customer tasks reached through an active dependency, ordered by creation time and then task id. Empty when nothing is open."},"applications":{"type":"array","items":{"$ref":"#/components/schemas/Application"},"description":"Institution compliance flows for this capability."},"submittedAt":{"type":"string","format":"date-time","nullable":true,"description":"Submitted at."},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"oneOf":[{"not":{"required":["statusReason"]},"properties":{"status":{"type":"string","enum":["ready"]}}},{"required":["statusReason"],"properties":{"status":{"type":"string","enum":["pending","restricted","rejected","canceled"]}}}]},"Account":{"type":"object","required":["id","type","origin","status","openTaskIds","currency","details","fees","createdAt","updatedAt","archivedAt"],"properties":{"id":{"type":"string","example":"acc_7mA9sL1kBc6dV8xN2pQ4rT"},"type":{"type":"string","enum":["wallet","bank"]},"method":{"type":"string","enum":["ach","wire","sepa","swift","uaefts","faster_payments","sepa_instant","ipp"],"description":"Payment method for issued bank accounts. External bank accounts use `methods`."},"methods":{"type":"array","minItems":1,"uniqueItems":true,"items":{"type":"string","enum":["ach","wire","sepa","swift"]},"description":"Payment methods supported by an external bank account. Present on external bank accounts; issued bank accounts use single `method`. Values must be unique and share one details shape: any subset of ach/wire uses US routing details; sepa uses IBAN details; swift uses SWIFT details."},"institutionId":{"type":"string","description":"Institution id recorded at issuance. Omitted when no institution was recorded."},"capabilityId":{"type":"string","description":"Capability id recorded at issuance. Omitted when no capability was recorded."},"accountType":{"type":"string","enum":["pooled","named"],"description":"Account type recorded at issuance. Omitted when no account type was recorded."},"network":{"type":"string","enum":["polygon","ethereum","base","arbitrum","optimism","bsc","avalanche"],"description":"`details.network` is the canonical network field for wallet accounts. This top-level `network` field is a compatibility duplicate; its removal is deferred. Open enum — values are added over time; clients must tolerate unknown values."},"origin":{"type":"string","enum":["issued","external"],"description":"Account origin. Closed enum — exhaustive; additions would be a breaking change."},"status":{"type":"string","enum":["provisioning","in_review","ready","action_required","suspended","rejected","archived"],"description":"Account status. Closed enum — exhaustive; additions would be a breaking change."},"statusReason":{"type":"object","description":"Why the account is `provisioning`, `in_review`, `action_required`, `suspended`, or `rejected`; absent on `ready` and `archived` accounts. Current account reason codes are `account_holder_name_mismatch`, `awaiting_assignment`, `provider_provisioning`, `provisioning_failed`, `temporarily_unsupported`, and `verification_pending`; `awaiting_assignment` means a pooled account receives concrete details when its first payin is created. Clients must tolerate unknown future codes.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"openTaskIds":{"type":"array","items":{"type":"string","example":"tsk_7mA9sL1kBc6dV8xN2pQ4rT"},"description":"Ids of account-scoped tasks with status `action_required` or `in_review`, ordered by creation time and id. Empty when nothing is open."},"currency":{"type":"string"},"label":{"type":"string"},"isDefault":{"type":"boolean"},"details":{"description":"Typed wallet or bank details when available; some issued bank accounts return null while provisioning.","oneOf":[{"type":"object","required":["network","address"],"properties":{"network":{"type":"string","enum":["polygon","ethereum","base","arbitrum","optimism","bsc","avalanche"],"description":"`details.network` is the canonical network field for wallet accounts. The top-level `network` field is a compatibility duplicate; its removal is deferred. Open enum — values are added over time; clients must tolerate unknown values."},"address":{"type":"string"}}},{"type":"object","required":["routingNumber","accountNumber","accountType","bankName","accountHolderName"],"properties":{"routingNumber":{"type":"string"},"accountNumber":{"type":"string"},"accountType":{"type":"string"},"bankName":{"type":"string"},"accountHolderName":{"type":"string"},"bankAddress":{"type":"string"},"reference":{"type":"string","description":"Wire reference or memo the sender must include for funds to match this issued account."},"referenceRequired":{"type":"boolean","description":"True when omitting `reference` can leave inbound funds unmatched at the receiving bank."}}},{"type":"object","required":["sortCode","accountNumber","bankName","accountHolderName"],"properties":{"sortCode":{"type":"string"},"accountNumber":{"type":"string"},"bankName":{"type":"string"},"accountHolderName":{"type":"string"},"reference":{"type":"string","description":"Wire reference or memo the sender must include for funds to match this issued account."},"referenceRequired":{"type":"boolean","description":"True when omitting `reference` can leave inbound funds unmatched at the receiving bank."}}},{"type":"object","required":["iban","accountHolderName"],"properties":{"iban":{"type":"string"},"bic":{"type":"string"},"bankName":{"type":"string"},"bankAddress":{"type":"string"},"accountHolderName":{"type":"string"},"reference":{"type":"string","description":"Wire reference or memo the sender must include for funds to match this issued account."},"referenceRequired":{"type":"boolean","description":"True when omitting `reference` can leave inbound funds unmatched at the receiving bank."}}},{"type":"object","required":["swiftCode","accountNumber","bankName","accountHolderName"],"properties":{"swiftCode":{"type":"string"},"accountNumber":{"type":"string"},"bankName":{"type":"string"},"accountHolderName":{"type":"string"},"bankAddress":{"type":"string"},"routingNumber":{"type":"string"},"intermediaryBankSwift":{"type":"string"},"intermediaryBankName":{"type":"string"},"intermediaryBankAddress":{"type":"string"},"reference":{"type":"string","description":"Wire reference or memo the sender must include for funds to match this issued account."},"referenceRequired":{"type":"boolean","description":"True when omitting `reference` can leave inbound funds unmatched at the receiving bank."}}}],"nullable":true},"routing":{"type":"object","description":"Current routing-detail version for issued bank accounts. Present only when concrete issued bank details are served; external bank details are customer-owned and are not versioned. Re-fetch the account when this block changes before sending further wires.","required":["version","validFrom","validUntil"],"properties":{"version":{"type":"integer","minimum":1,"description":"Monotonic version token for the served bank details."},"validFrom":{"type":"string","format":"date-time","description":"When the current served details became effective."},"validUntil":{"type":"string","format":"date-time","nullable":true,"description":"Always null for the currently served details."}}},"settlement":{"type":"object","required":["accountId"],"properties":{"accountId":{"type":"string","example":"acc_7mA9sL1kBc6dV8xN2pQ4rT"}}},"fees":{"type":"object","description":"Pay-in fee configuration for this account. Fixed amounts are major-unit decimal strings in the account currency.","required":["breakdown"],"properties":{"breakdown":{"type":"object","description":"Account fee rules grouped by beneficiary.","required":["developer"],"properties":{"developer":{"type":"object","nullable":true,"description":"Configured developer fee, or null when none is set.","required":["fixed","bips"],"properties":{"fixed":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,2})?$","description":"Fixed developer fee in the account currency, represented as a major-unit decimal string with at most 2 decimal places."},"bips":{"type":"integer","minimum":0,"maximum":9999,"description":"Developer fee in basis points. 50 means 0.50%."}}}}}}},"balances":{"type":"array","description":"Balances returned on account detail. External wallets return an empty array; `pending` is currently `\"0\"`.","items":{"type":"object","required":["currency","available","pending"],"properties":{"currency":{"type":"string"},"available":{"type":"string","description":"Available balance from the configured balance source as a decimal string in `currency`."},"pending":{"type":"string","description":"Currently returned as `\"0\"`."}}}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"archivedAt":{"type":"string","format":"date-time","nullable":true}}},"Recipient":{"oneOf":[{"type":"object","title":"Individual recipient","required":["id","customerId","type","relationship","status","createdAt","updatedAt","archivedAt","firstName","lastName"],"additionalProperties":false,"properties":{"id":{"type":"string","example":"rcp_7mA9sL1kBc6dV8xN2pQ4rT"},"customerId":{"type":"string","example":"cus_7mA9sL1kBc6dV8xN2pQ4rT"},"relationship":{"type":"string","enum":["employee","contractor","vendor","subsidiary","merchant","customer","landlord","family","other"]},"externalId":{"type":"string"},"status":{"type":"string","enum":["active","rejected","archived"],"description":"Recipient status. Closed enum — active is usable, rejected means a provider rejected the recipient, and archived is no longer usable; additions would be a breaking change."},"email":{"type":"string"},"phone":{"type":"string"},"address":{"type":"object","required":["streetLine1","city","postalCode","country"],"additionalProperties":false,"properties":{"streetLine1":{"type":"string"},"streetLine2":{"type":"string"},"city":{"type":"string"},"state":{"type":"string"},"postalCode":{"type":"string"},"country":{"type":"string"}}},"label":{"type":"string"},"metadata":{"type":"object","additionalProperties":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"archivedAt":{"type":"string","format":"date-time","nullable":true,"description":"Archive timestamp set by DELETE; null while the recipient is active."},"type":{"type":"string","enum":["individual"]},"firstName":{"type":"string"},"lastName":{"type":"string"}}},{"type":"object","title":"Business recipient","required":["id","customerId","type","relationship","status","createdAt","updatedAt","archivedAt","companyName"],"additionalProperties":false,"properties":{"id":{"type":"string","example":"rcp_7mA9sL1kBc6dV8xN2pQ4rT"},"customerId":{"type":"string","example":"cus_7mA9sL1kBc6dV8xN2pQ4rT"},"relationship":{"type":"string","enum":["employee","contractor","vendor","subsidiary","merchant","customer","landlord","family","other"]},"externalId":{"type":"string"},"status":{"type":"string","enum":["active","rejected","archived"],"description":"Recipient status. Closed enum — active is usable, rejected means a provider rejected the recipient, and archived is no longer usable; additions would be a breaking change."},"email":{"type":"string"},"phone":{"type":"string"},"address":{"type":"object","required":["streetLine1","city","postalCode","country"],"additionalProperties":false,"properties":{"streetLine1":{"type":"string"},"streetLine2":{"type":"string"},"city":{"type":"string"},"state":{"type":"string"},"postalCode":{"type":"string"},"country":{"type":"string"}}},"label":{"type":"string"},"metadata":{"type":"object","additionalProperties":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"archivedAt":{"type":"string","format":"date-time","nullable":true,"description":"Archive timestamp set by DELETE; null while the recipient is active."},"type":{"type":"string","enum":["business"]},"companyName":{"type":"string"},"businessIndustry":{"type":"string","description":"6-digit NAICS code used for provider-backed ACH readiness checks on business recipients."}}}],"discriminator":{"propertyName":"type"}},"Destination":{"oneOf":[{"type":"object","title":"sepa destination","required":["id","type","currency","status","details","createdAt","updatedAt","archivedAt"],"additionalProperties":false,"properties":{"id":{"type":"string","example":"dst_7mA9sL1kBc6dV8xN2pQ4rT"},"type":{"type":"string","enum":["sepa"],"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change."},"currency":{"type":"string","minLength":3,"maxLength":3},"label":{"type":"string"},"status":{"type":"string","enum":["in_review","ready","action_required","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when they use the same network and asset as the source. Closed enum — exhaustive; additions would be a breaking change."},"statusReason":{"allOf":[{"$ref":"#/components/schemas/StatusReason"}],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."},"details":{"type":"object","required":["iban","accountHolderName","country"],"additionalProperties":false,"properties":{"iban":{"type":"string","minLength":15,"maxLength":34},"bic":{"type":"string","minLength":8,"maxLength":11},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2}}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"archivedAt":{"type":"string","format":"date-time","nullable":true}},"oneOf":[{"required":["statusReason"],"properties":{"status":{"type":"string","enum":["action_required"]}}},{"not":{"required":["statusReason"]},"properties":{"status":{"type":"string","enum":["in_review","ready","archived"]}}}]},{"type":"object","title":"swift destination","required":["id","type","currency","status","details","createdAt","updatedAt","archivedAt"],"additionalProperties":false,"properties":{"id":{"type":"string","example":"dst_7mA9sL1kBc6dV8xN2pQ4rT"},"type":{"type":"string","enum":["swift"],"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change."},"currency":{"type":"string","minLength":3,"maxLength":3},"label":{"type":"string"},"status":{"type":"string","enum":["in_review","ready","action_required","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when they use the same network and asset as the source. Closed enum — exhaustive; additions would be a breaking change."},"statusReason":{"allOf":[{"$ref":"#/components/schemas/StatusReason"}],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."},"details":{"type":"object","required":["swiftCode","accountNumber","bankName","accountHolderName","country"],"additionalProperties":false,"properties":{"swiftCode":{"type":"string","minLength":8,"maxLength":11},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2},"routingNumber":{"type":"string","minLength":9,"maxLength":9},"intermediaryBankSwift":{"type":"string","minLength":8,"maxLength":11},"intermediaryBankName":{"type":"string","minLength":1,"maxLength":255},"intermediaryBankAddress":{"type":"string","minLength":1,"maxLength":512}}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"archivedAt":{"type":"string","format":"date-time","nullable":true}},"oneOf":[{"required":["statusReason"],"properties":{"status":{"type":"string","enum":["action_required"]}}},{"not":{"required":["statusReason"]},"properties":{"status":{"type":"string","enum":["in_review","ready","archived"]}}}]},{"type":"object","title":"ach destination","required":["id","type","currency","status","details","createdAt","updatedAt","archivedAt"],"additionalProperties":false,"properties":{"id":{"type":"string","example":"dst_7mA9sL1kBc6dV8xN2pQ4rT"},"type":{"type":"string","enum":["ach"],"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change."},"currency":{"type":"string","minLength":3,"maxLength":3},"label":{"type":"string"},"status":{"type":"string","enum":["in_review","ready","action_required","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when they use the same network and asset as the source. Closed enum — exhaustive; additions would be a breaking change."},"statusReason":{"allOf":[{"$ref":"#/components/schemas/StatusReason"}],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."},"details":{"type":"object","required":["routingNumber","accountNumber","bankName","accountHolderName","country"],"additionalProperties":false,"properties":{"routingNumber":{"type":"string","minLength":9,"maxLength":9},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"accountType":{"type":"string","enum":["checking","savings"]},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2}}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"archivedAt":{"type":"string","format":"date-time","nullable":true}},"oneOf":[{"required":["statusReason"],"properties":{"status":{"type":"string","enum":["action_required"]}}},{"not":{"required":["statusReason"]},"properties":{"status":{"type":"string","enum":["in_review","ready","archived"]}}}]},{"type":"object","title":"wire destination","required":["id","type","currency","status","details","createdAt","updatedAt","archivedAt"],"additionalProperties":false,"properties":{"id":{"type":"string","example":"dst_7mA9sL1kBc6dV8xN2pQ4rT"},"type":{"type":"string","enum":["wire"],"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change."},"currency":{"type":"string","minLength":3,"maxLength":3},"label":{"type":"string"},"status":{"type":"string","enum":["in_review","ready","action_required","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when they use the same network and asset as the source. Closed enum — exhaustive; additions would be a breaking change."},"statusReason":{"allOf":[{"$ref":"#/components/schemas/StatusReason"}],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."},"details":{"type":"object","required":["routingNumber","accountNumber","bankName","accountHolderName","country"],"additionalProperties":false,"properties":{"routingNumber":{"type":"string","minLength":9,"maxLength":9},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"accountType":{"type":"string","enum":["checking","savings"]},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2}}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"archivedAt":{"type":"string","format":"date-time","nullable":true}},"oneOf":[{"required":["statusReason"],"properties":{"status":{"type":"string","enum":["action_required"]}}},{"not":{"required":["statusReason"]},"properties":{"status":{"type":"string","enum":["in_review","ready","archived"]}}}]},{"type":"object","title":"spei destination","required":["id","type","currency","status","details","createdAt","updatedAt","archivedAt"],"additionalProperties":false,"properties":{"id":{"type":"string","example":"dst_7mA9sL1kBc6dV8xN2pQ4rT"},"type":{"type":"string","enum":["spei"],"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change."},"currency":{"type":"string","minLength":3,"maxLength":3},"label":{"type":"string"},"status":{"type":"string","enum":["in_review","ready","action_required","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when they use the same network and asset as the source. Closed enum — exhaustive; additions would be a breaking change."},"statusReason":{"allOf":[{"$ref":"#/components/schemas/StatusReason"}],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."},"details":{"type":"object","required":["clabe","accountHolderName"],"additionalProperties":false,"properties":{"clabe":{"type":"string","minLength":18,"maxLength":18},"institutionName":{"type":"string","minLength":1,"maxLength":255},"bankName":{"type":"string","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2}}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"archivedAt":{"type":"string","format":"date-time","nullable":true}},"oneOf":[{"required":["statusReason"],"properties":{"status":{"type":"string","enum":["action_required"]}}},{"not":{"required":["statusReason"]},"properties":{"status":{"type":"string","enum":["in_review","ready","archived"]}}}]},{"type":"object","title":"pse destination","required":["id","type","currency","status","details","createdAt","updatedAt","archivedAt"],"additionalProperties":false,"properties":{"id":{"type":"string","example":"dst_7mA9sL1kBc6dV8xN2pQ4rT"},"type":{"type":"string","enum":["pse"],"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change."},"currency":{"type":"string","minLength":3,"maxLength":3},"label":{"type":"string"},"status":{"type":"string","enum":["in_review","ready","action_required","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when they use the same network and asset as the source. Closed enum — exhaustive; additions would be a breaking change."},"statusReason":{"allOf":[{"$ref":"#/components/schemas/StatusReason"}],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."},"details":{"type":"object","required":["bankCode","accountNumber","documentType","documentNumber","email","accountHolderName"],"additionalProperties":false,"properties":{"bankCode":{"type":"string","minLength":1,"maxLength":64},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"documentType":{"type":"string","minLength":1,"maxLength":32},"documentNumber":{"type":"string","minLength":1,"maxLength":64},"email":{"type":"string","format":"email"},"bankName":{"type":"string","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2}}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"archivedAt":{"type":"string","format":"date-time","nullable":true}},"oneOf":[{"required":["statusReason"],"properties":{"status":{"type":"string","enum":["action_required"]}}},{"not":{"required":["statusReason"]},"properties":{"status":{"type":"string","enum":["in_review","ready","archived"]}}}]},{"type":"object","title":"transfers_3_0 destination","required":["id","type","currency","status","details","createdAt","updatedAt","archivedAt"],"additionalProperties":false,"properties":{"id":{"type":"string","example":"dst_7mA9sL1kBc6dV8xN2pQ4rT"},"type":{"type":"string","enum":["transfers_3_0"],"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change."},"currency":{"type":"string","minLength":3,"maxLength":3},"label":{"type":"string"},"status":{"type":"string","enum":["in_review","ready","action_required","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when they use the same network and asset as the source. Closed enum — exhaustive; additions would be a breaking change."},"statusReason":{"allOf":[{"$ref":"#/components/schemas/StatusReason"}],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."},"details":{"type":"object","required":["cbu","accountHolderName"],"additionalProperties":false,"properties":{"cbu":{"type":"string","minLength":22,"maxLength":22},"alias":{"type":"string","minLength":1,"maxLength":255},"bankName":{"type":"string","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"taxId":{"type":"string","minLength":1,"maxLength":64},"country":{"type":"string","minLength":2,"maxLength":2}}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"archivedAt":{"type":"string","format":"date-time","nullable":true}},"oneOf":[{"required":["statusReason"],"properties":{"status":{"type":"string","enum":["action_required"]}}},{"not":{"required":["statusReason"]},"properties":{"status":{"type":"string","enum":["in_review","ready","archived"]}}}]},{"type":"object","title":"wallet destination","required":["id","type","currency","status","details","createdAt","updatedAt","archivedAt","ownership"],"additionalProperties":false,"properties":{"id":{"type":"string","example":"dst_7mA9sL1kBc6dV8xN2pQ4rT"},"type":{"type":"string","enum":["wallet"],"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change."},"currency":{"type":"string","minLength":2,"maxLength":10},"label":{"type":"string"},"ownership":{"description":"Who controls this wallet destination. Present only on wallet destinations.","oneOf":[{"type":"object","title":"Self-custodied wallet","required":["type"],"additionalProperties":false,"properties":{"type":{"type":"string","enum":["self_custodied"]}}},{"type":"object","title":"Custodial wallet","required":["type","custodianName"],"additionalProperties":false,"properties":{"type":{"type":"string","enum":["custodial"]},"custodianName":{"type":"string","minLength":1,"maxLength":255}}}],"discriminator":{"propertyName":"type"}},"status":{"type":"string","enum":["in_review","ready","action_required","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when they use the same network and asset as the source. Closed enum — exhaustive; additions would be a breaking change."},"statusReason":{"allOf":[{"$ref":"#/components/schemas/StatusReason"}],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."},"details":{"type":"object","required":["network","address"],"additionalProperties":false,"properties":{"network":{"type":"string","enum":["polygon","ethereum","base","arbitrum","optimism","bsc","avalanche"],"description":"Blockchain network. Open enum — values are added over time; clients must tolerate unknown values."},"address":{"type":"string","minLength":1,"maxLength":255},"label":{"type":"string","maxLength":255}}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"archivedAt":{"type":"string","format":"date-time","nullable":true}},"oneOf":[{"required":["statusReason"],"properties":{"status":{"type":"string","enum":["action_required"]}}},{"not":{"required":["statusReason"]},"properties":{"status":{"type":"string","enum":["in_review","ready","archived"]}}}]}],"discriminator":{"propertyName":"type"}},"MovementLeg":{"type":"object","required":["amount","currency"],"properties":{"amount":{"type":"string","example":"100.00"},"currency":{"type":"string","example":"USDC"},"network":{"type":"string","enum":["polygon","ethereum","base","arbitrum","optimism","bsc","avalanche"],"description":"Blockchain network for a crypto leg. Absent for fiat legs and uncatalogued networks. Blockchain network id. Open enum — values are added over time; clients must tolerate unknown values."}}},"MovementSource":{"description":"Resolved movement funding source. May be absent on older stablecoin-funded quotes.","discriminator":{"propertyName":"type"},"oneOf":[{"type":"object","required":["type"],"properties":{"type":{"type":"string","enum":["external"]}}},{"type":"object","required":["type","id"],"properties":{"type":{"type":"string","enum":["account"]},"id":{"type":"string","example":"acc_7mA9sL1kBc6dV8xN2pQ4rT"}}}]},"Quote":{"type":"object","required":["id","customerId","capabilityId","mode","direction","destination","in","out","rate","fees","status","transferId","createdAt","expiresAt"],"properties":{"id":{"type":"string","example":"quo_7mA9sL1kBc6dV8xN2pQ4rT"},"customerId":{"type":"string","example":"cus_7mA9sL1kBc6dV8xN2pQ4rT"},"capabilityId":{"type":"string","example":"ach_pooled"},"institutionId":{"type":"string"},"externalId":{"type":"string"},"mode":{"type":"string","enum":["exact_in","exact_out"],"description":"Quote pricing mode. Closed enum — exhaustive; additions would be a breaking change."},"direction":{"type":"string","enum":["fiat_to_stablecoin","stablecoin_to_fiat","stablecoin_move"],"description":"Quote direction. Closed enum — exhaustive; additions would be a breaking change."},"source":{"$ref":"#/components/schemas/MovementSource"},"destination":{"description":"Account or recipient destination for movement output.","oneOf":[{"type":"object","required":["type","id"],"properties":{"type":{"type":"string","enum":["account"]},"id":{"type":"string","pattern":"^acc_[a-zA-Z0-9]+$","description":"Account id. Wallet accounts receive fiat-to-stablecoin and stablecoin-move output; external bank accounts receive stablecoin-to-fiat output. A stablecoin-move destination may be any active Swipelux account on the same network and asset as the source."}}},{"type":"object","required":["type","id"],"properties":{"type":{"type":"string","enum":["destination"]},"id":{"type":"string","pattern":"^dst_[a-zA-Z0-9]+$","description":"Recipient destination id. Bank destinations receive stablecoin-to-fiat output. A ready wallet destination owned by the request customer can receive stablecoin-move output when it uses the same network and asset as the source. Raw inline addresses are not accepted; create a wallet destination for an external address."}}}],"discriminator":{"propertyName":"type"}},"in":{"$ref":"#/components/schemas/MovementLeg"},"out":{"$ref":"#/components/schemas/MovementLeg"},"rate":{"type":"string"},"fees":{"type":"array","items":{"type":"object","required":["beneficiary","amount","currency"],"properties":{"beneficiary":{"type":"string","enum":["developer","service"],"description":"Fee beneficiary. Closed enum — exhaustive; additions would be a breaking change."},"amount":{"type":"string"},"currency":{"type":"string"},"rule":{"type":"object","required":["fixed","bips"],"properties":{"fixed":{"type":"string"},"bips":{"type":"number"}}}}}},"status":{"type":"string","enum":["active","executed","expired","failed"],"description":"Quote status. Closed enum — exhaustive; additions would be a breaking change."},"transferId":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"}}},"Transfer":{"type":"object","required":["id","origin","customerId","openTaskIds","method","direction","state","stateDetail","amounts","fees","source","destination","references","instructions","timestamps"],"properties":{"id":{"type":"string","example":"tr_7mA9sL1kBc6dV8xN2pQ4rT"},"origin":{"type":"string","enum":["quoted","inbound_deposit"],"description":"How the transfer was created. `quoted` comes from a v3 quote; `inbound_deposit` comes from reconciliation. Open enum — values are added over time; clients must tolerate unknown values."},"quoteId":{"type":"string"},"customerId":{"type":"string"},"capabilityId":{"type":"string"},"openTaskIds":{"type":"array","items":{"type":"string"},"description":"Open transfer-scoped task ids ordered by creation time and id."},"sender":{"type":"object","description":"Sender evidence when available on merchant transfer GET responses. Omitted from webhook payloads.","properties":{"name":{"type":"string"},"bankName":{"type":"string"},"accountLast4":{"type":"string","pattern":"^\\d{4}$"}}},"institutionId":{"type":"string"},"externalId":{"type":"string"},"method":{"type":"string","description":"Movement method. Open enum — values are added over time; clients must tolerate unknown values."},"direction":{"type":"string","enum":["fiat_to_stablecoin","stablecoin_to_fiat","stablecoin_move"],"description":"Transfer direction. Closed enum — exhaustive; additions would be a breaking change."},"state":{"type":"string","enum":["awaiting_funds","processing","action_required","completed","failed","canceled"],"description":"Public transfer state. `processing` covers funds received through settlement. `action_required` is projected when an otherwise in-flight transfer has open transfer tasks. `canceled` is projected when an unfunded deposit window expires. Closed enum — exhaustive; additions would be a breaking change."},"stateDetail":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/StatusReason"}],"description":"Structured reason for the current transfer state."},"amounts":{"type":"object","required":["in","out"],"properties":{"in":{"$ref":"#/components/schemas/MovementLeg"},"out":{"$ref":"#/components/schemas/MovementLeg"},"settled":{"$ref":"#/components/schemas/Money"}}},"fees":{"type":"array","items":{"type":"object","required":["beneficiary","amount","currency"],"properties":{"beneficiary":{"type":"string","enum":["developer","service"],"description":"Fee beneficiary. Closed enum — exhaustive; additions would be a breaking change."},"amount":{"type":"string"},"currency":{"type":"string"},"rule":{"type":"object","required":["fixed","bips"],"properties":{"fixed":{"type":"string"},"bips":{"type":"number"}}}}}},"source":{"$ref":"#/components/schemas/MovementSource"},"destination":{"description":"Account or recipient destination for movement output.","oneOf":[{"type":"object","required":["type","id"],"properties":{"type":{"type":"string","enum":["account"]},"id":{"type":"string","pattern":"^acc_[a-zA-Z0-9]+$","description":"Account id. Wallet accounts receive fiat-to-stablecoin and stablecoin-move output; external bank accounts receive stablecoin-to-fiat output. A stablecoin-move destination may be any active Swipelux account on the same network and asset as the source."}}},{"type":"object","required":["type","id"],"properties":{"type":{"type":"string","enum":["destination"]},"id":{"type":"string","pattern":"^dst_[a-zA-Z0-9]+$","description":"Recipient destination id. Bank destinations receive stablecoin-to-fiat output. A ready wallet destination owned by the request customer can receive stablecoin-move output when it uses the same network and asset as the source. Raw inline addresses are not accepted; create a wallet destination for an external address."}}}],"discriminator":{"propertyName":"type"}},"references":{"type":"object","required":["returnedTransferId"],"properties":{"transactionHash":{"type":"string"},"traceNumber":{"type":"string"},"imad":{"type":"string"},"uetr":{"type":"string"},"explorerUrl":{"type":"string"},"returnedTransferId":{"type":"string","nullable":true,"description":"Return-movement id; currently always null."}}},"memo":{"type":"string"},"supportingDocuments":{"type":"array","items":{"type":"string"}},"instructions":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/TransferInstructions"}],"description":"Deposit instructions. Null for payout-side transfers, which are funded from the source account."},"timestamps":{"type":"object","required":["createdAt","updatedAt","fundsReceivedAt","completedAt","failedAt","returnedAt","settledAt"],"properties":{"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"fundsReceivedAt":{"type":"string","format":"date-time","nullable":true,"description":"Currently always null."},"completedAt":{"type":"string","format":"date-time","nullable":true,"description":"Currently always null."},"failedAt":{"type":"string","format":"date-time","nullable":true,"description":"Currently always null."},"returnedAt":{"type":"string","format":"date-time","nullable":true,"description":"Currently always null."},"settledAt":{"type":"string","format":"date-time","nullable":true,"description":"Currently always null."}}}}},"TransferInstructions":{"description":"Deposit instructions, discriminated by `type` (`bank`, `code`, or `redirect`). Payout-side transfers have no instructions.","discriminator":{"propertyName":"type"},"oneOf":[{"title":"Bank instructions","type":"object","required":["type","method","amount","details"],"properties":{"type":{"type":"string","enum":["bank"]},"method":{"type":"string","enum":["ach","wire","rtp","sepa","swift","spei","transfers_3_0","uaefts","faster_payments"]},"amount":{"$ref":"#/components/schemas/Money"},"accountHolderName":{"type":"string"},"bankName":{"type":"string"},"details":{"type":"object","additionalProperties":{"type":"string"}},"reference":{"type":"object","required":["value","required"],"properties":{"value":{"type":"string"},"required":{"type":"boolean"}}},"localAmount":{"$ref":"#/components/schemas/Money"},"expiresAt":{"type":"string","format":"date-time"}}},{"title":"Code instructions","type":"object","required":["type","method","amount","code"],"properties":{"type":{"type":"string","enum":["code"]},"method":{"type":"string","enum":["pix"]},"amount":{"$ref":"#/components/schemas/Money"},"code":{"type":"string"},"localAmount":{"$ref":"#/components/schemas/Money"},"expiresAt":{"type":"string","format":"date-time"}}},{"title":"Redirect instructions","type":"object","required":["type","amount","url"],"properties":{"type":{"type":"string","enum":["redirect"]},"method":{"type":"string","enum":["pse"]},"amount":{"$ref":"#/components/schemas/Money"},"url":{"type":"string"},"localAmount":{"$ref":"#/components/schemas/Money"},"expiresAt":{"type":"string","format":"date-time"}}}]},"Problem":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}},"TaskScope":{"type":"object","additionalProperties":false,"required":["type","id"],"properties":{"type":{"type":"string","description":"Resource type whose workflow created the task."},"id":{"type":"string","description":"Public resource id or semantic capability key."}}},"TaskSubject":{"type":"object","additionalProperties":false,"required":["type","id"],"properties":{"type":{"type":"string","description":"Resource type whose information the task concerns."},"id":{"type":"string","description":"Public task-subject identifier."}}},"TaskReason":{"type":"object","additionalProperties":false,"required":["code","message","requestedBy"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code."},"message":{"type":"string","description":"Safe developer-facing explanation."},"requestedBy":{"type":"string","description":"Party that requested the work; open enum."}}},"ReviewFeedback":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string","description":"Stable actionable feedback code."},"message":{"type":"string","description":"Redacted developer-facing review feedback."}}},"TaskDeadline":{"type":"object","additionalProperties":false,"required":["at","outcome","noticeCount"],"properties":{"at":{"type":"string","format":"date-time"},"outcome":{"type":"string","enum":["none","auto_rejected"],"description":"Closed executable-deadline outcome."},"noticeCount":{"type":"integer","minimum":0}}},"TaskNotice":{"type":"object","additionalProperties":false,"required":["at","type","noticeCount"],"properties":{"at":{"type":"string","format":"date-time"},"type":{"type":"string","description":"Open informational notice type."},"noticeCount":{"type":"integer","minimum":0}}},"TaskCompletionPolicyExpression":{"oneOf":[{"type":"object","additionalProperties":false,"required":["type","completion"],"properties":{"type":{"type":"string","enum":["requirements","verification_sessions","tos_sessions"],"description":"Closed task child-collection leaf."},"completion":{"type":"string","enum":["all"],"description":"Every live member of the collection must complete."}}},{"type":"object","additionalProperties":false,"required":["mode","conditions"],"properties":{"mode":{"type":"string","enum":["all_of","any_of"],"description":"Closed completion-policy group mode."},"conditions":{"type":"array","minItems":2,"items":{"$ref":"#/components/schemas/TaskCompletionPolicyExpression"}}}}],"description":"Defines which child collections must complete before the task completes."},"ProfileRequirementRequest":{"type":"object","additionalProperties":false,"required":["type","prompt","required","valueType","profilePointer"],"properties":{"type":{"type":"string","enum":["profile"],"description":"Requirement request discriminator."},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"type":"boolean","enum":[true],"description":"Published non-alternative requests are required."},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"valueType":{"type":"string","enum":["string","number","boolean","date","country","money","address","tax_identifier","identity_document","object","array"],"description":"Canonical profile value type."},"itemValueType":{"type":"string","description":"Element value type when valueType is array."},"profilePointer":{"type":"string","pattern":"^/","description":"Canonical customer or related-party JSON Pointer."},"constraints":{"type":"object","additionalProperties":false,"required":[],"properties":{"minLength":{"type":"integer","minimum":0},"maxLength":{"type":"integer","minimum":1},"pattern":{"type":"string"}}}}},"TextRequirementRequest":{"type":"object","additionalProperties":false,"required":["type","prompt","required"],"properties":{"type":{"type":"string","enum":["text"],"description":"Requirement request discriminator."},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"type":"boolean","enum":[true],"description":"Published non-alternative requests are required."},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"constraints":{"type":"object","additionalProperties":false,"required":[],"properties":{"minLength":{"type":"integer","minimum":0},"maxLength":{"type":"integer","minimum":1},"pattern":{"type":"string"}}}}},"DateRequirementRequest":{"type":"object","additionalProperties":false,"required":["type","prompt","required"],"properties":{"type":{"type":"string","enum":["date"],"description":"Requirement request discriminator."},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"type":"boolean","enum":[true],"description":"Published non-alternative requests are required."},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"constraints":{"type":"object","additionalProperties":false,"required":[],"properties":{"minimum":{"type":"string","format":"date"},"maximum":{"type":"string","format":"date"}}}}},"SingleSelectRequirementRequest":{"type":"object","additionalProperties":false,"required":["type","prompt","required","options"],"properties":{"type":{"type":"string","enum":["single_select"],"description":"Requirement request discriminator."},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"type":"boolean","enum":[true],"description":"Published non-alternative requests are required."},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"options":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":false,"required":["value","label"],"properties":{"value":{"type":"string","description":"Stable submitted option value."},"label":{"type":"string","description":"Human-readable option label."},"description":{"type":"string","description":"Additional option guidance."}}}}}},"MultiSelectRequirementRequest":{"type":"object","additionalProperties":false,"required":["type","prompt","required","options"],"properties":{"type":{"type":"string","enum":["multi_select"],"description":"Requirement request discriminator."},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"type":"boolean","enum":[true],"description":"Published non-alternative requests are required."},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"options":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":false,"required":["value","label"],"properties":{"value":{"type":"string","description":"Stable submitted option value."},"label":{"type":"string","description":"Human-readable option label."},"description":{"type":"string","description":"Additional option guidance."}}}},"constraints":{"type":"object","additionalProperties":false,"required":[],"properties":{"minItems":{"type":"integer","minimum":0},"maxItems":{"type":"integer","minimum":1}}}}},"BooleanRequirementRequest":{"type":"object","additionalProperties":false,"required":["type","prompt","required"],"properties":{"type":{"type":"string","enum":["boolean"],"description":"Requirement request discriminator."},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"type":"boolean","enum":[true],"description":"Published non-alternative requests are required."},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."}}},"AttestationRequirementRequest":{"type":"object","additionalProperties":false,"required":["type","prompt","required","text","version"],"properties":{"type":{"type":"string","enum":["attestation"],"description":"Requirement request discriminator."},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"type":"boolean","enum":[true],"description":"Published non-alternative requests are required."},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"text":{"type":"string"},"version":{"type":"string"},"constraints":{"type":"object","additionalProperties":true,"not":{"required":["verificationLink"]},"description":"URL-free public attestation constraints."}}},"DocumentRequirementRequest":{"type":"object","additionalProperties":false,"required":["type","prompt","required","purpose"],"properties":{"type":{"type":"string","enum":["document"],"description":"Requirement request discriminator."},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"type":"boolean","enum":[true],"description":"Published non-alternative requests are required."},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"purpose":{"type":"string"},"acceptedDocumentTypes":{"type":"array","minItems":1,"items":{"type":"string"}},"minDocuments":{"type":"integer","minimum":1,"default":1},"maxDocuments":{"type":"integer","minimum":1,"default":1},"constraints":{"type":"object","additionalProperties":false,"required":[],"properties":{"maxAgeDays":{"type":"integer","minimum":1},"captureMethods":{"type":"array","minItems":1,"items":{"type":"string"}},"nameMatch":{"type":"string"},"acceptedFormats":{"type":"array","minItems":1,"items":{"type":"string"}}}}}},"ResourceReferenceRequirementRequest":{"type":"object","additionalProperties":false,"required":["type","prompt","required","resourceType"],"properties":{"type":{"type":"string","enum":["resource_reference"],"description":"Requirement request discriminator."},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"type":"boolean","enum":[true],"description":"Published non-alternative requests are required."},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"resourceType":{"type":"string","enum":["related_party"],"description":"Referenced resource type."},"requiredRoles":{"type":"array","minItems":1,"items":{"type":"string"}}}},"AlternativesRequirementRequest":{"type":"object","additionalProperties":false,"required":["type","prompt","alternatives"],"properties":{"type":{"type":"string","enum":["alternatives"],"description":"Requirement request discriminator."},"prompt":{"type":"string","minLength":1},"alternatives":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":false,"required":["key","request"],"properties":{"key":{"type":"string","minLength":1},"request":{"oneOf":[{"$ref":"#/components/schemas/ProfileRequirementRequest"},{"$ref":"#/components/schemas/TextRequirementRequest"},{"$ref":"#/components/schemas/DateRequirementRequest"},{"$ref":"#/components/schemas/SingleSelectRequirementRequest"},{"$ref":"#/components/schemas/MultiSelectRequirementRequest"},{"$ref":"#/components/schemas/BooleanRequirementRequest"},{"$ref":"#/components/schemas/AttestationRequirementRequest"},{"$ref":"#/components/schemas/DocumentRequirementRequest"},{"$ref":"#/components/schemas/ResourceReferenceRequirementRequest"}]}}}}}},"RequirementRequest":{"oneOf":[{"$ref":"#/components/schemas/ProfileRequirementRequest"},{"$ref":"#/components/schemas/TextRequirementRequest"},{"$ref":"#/components/schemas/DateRequirementRequest"},{"$ref":"#/components/schemas/SingleSelectRequirementRequest"},{"$ref":"#/components/schemas/MultiSelectRequirementRequest"},{"$ref":"#/components/schemas/BooleanRequirementRequest"},{"$ref":"#/components/schemas/AttestationRequirementRequest"},{"$ref":"#/components/schemas/DocumentRequirementRequest"},{"$ref":"#/components/schemas/ResourceReferenceRequirementRequest"},{"$ref":"#/components/schemas/AlternativesRequirementRequest"}],"discriminator":{"propertyName":"type"}},"CustomerTaskAttestationRequirementRequest":{"type":"object","additionalProperties":false,"required":["type","prompt","required","text","version"],"properties":{"type":{"type":"string","enum":["attestation"],"description":"Requirement request discriminator."},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"type":"boolean","enum":[true],"description":"Published non-alternative requests are required."},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"text":{"type":"string"},"version":{"type":"string"},"constraints":{"type":"object","additionalProperties":true,"properties":{"verificationLink":{"type":"object","additionalProperties":false,"required":["type","url","expiresAt"],"properties":{"type":{"type":"string","enum":["tos"],"description":"Legacy terms-of-service link type."},"url":{"type":"string","format":"uri","pattern":"^https://","description":"Legacy HTTPS terms-of-service URL."},"expiresAt":{"type":"string","format":"date-time","nullable":true,"description":"Expiry time, or null when the link does not expire."}}}}}}},"CustomerTaskAlternativesRequirementRequest":{"type":"object","additionalProperties":false,"required":["type","prompt","alternatives"],"properties":{"type":{"type":"string","enum":["alternatives"],"description":"Requirement request discriminator."},"prompt":{"type":"string","minLength":1},"alternatives":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":false,"required":["key","request"],"properties":{"key":{"type":"string","minLength":1},"request":{"oneOf":[{"$ref":"#/components/schemas/ProfileRequirementRequest"},{"$ref":"#/components/schemas/TextRequirementRequest"},{"$ref":"#/components/schemas/DateRequirementRequest"},{"$ref":"#/components/schemas/SingleSelectRequirementRequest"},{"$ref":"#/components/schemas/MultiSelectRequirementRequest"},{"$ref":"#/components/schemas/BooleanRequirementRequest"},{"$ref":"#/components/schemas/AttestationRequirementRequest"},{"$ref":"#/components/schemas/DocumentRequirementRequest"},{"$ref":"#/components/schemas/ResourceReferenceRequirementRequest"}]}}}}}},"CustomerTaskRequirementRequest":{"oneOf":[{"$ref":"#/components/schemas/ProfileRequirementRequest"},{"$ref":"#/components/schemas/TextRequirementRequest"},{"$ref":"#/components/schemas/DateRequirementRequest"},{"$ref":"#/components/schemas/SingleSelectRequirementRequest"},{"$ref":"#/components/schemas/MultiSelectRequirementRequest"},{"$ref":"#/components/schemas/BooleanRequirementRequest"},{"$ref":"#/components/schemas/CustomerTaskAttestationRequirementRequest"},{"$ref":"#/components/schemas/DocumentRequirementRequest"},{"$ref":"#/components/schemas/ResourceReferenceRequirementRequest"},{"$ref":"#/components/schemas/CustomerTaskAlternativesRequirementRequest"}],"discriminator":{"propertyName":"type"}},"Requirement":{"type":"object","additionalProperties":false,"required":["id","key","status","request"],"properties":{"id":{"type":"string"},"key":{"type":"string"},"section":{"type":"string"},"status":{"type":"string","enum":["action_required","in_review","accepted","rejected","canceled","superseded"],"description":"Closed requirement lifecycle status."},"request":{"$ref":"#/components/schemas/RequirementRequest"},"reviewFeedback":{"$ref":"#/components/schemas/ReviewFeedback"}}},"CustomerTaskRequirement":{"type":"object","additionalProperties":false,"required":["id","key","status","request"],"properties":{"id":{"type":"string"},"key":{"type":"string"},"section":{"type":"string"},"status":{"type":"string","enum":["action_required","in_review","accepted","rejected","canceled","superseded"],"description":"Closed requirement lifecycle status."},"request":{"$ref":"#/components/schemas/CustomerTaskRequirementRequest"},"reviewFeedback":{"$ref":"#/components/schemas/ReviewFeedback"}}},"VerificationSession":{"type":"object","additionalProperties":false,"required":["id","key","type","status"],"properties":{"id":{"type":"string","pattern":"^vfy_[0-9A-Za-z]+$","description":"Verification-session identifier (`vfy_...`)."},"key":{"type":"string","minLength":1},"type":{"type":"string","description":"Open hosted-session type."},"status":{"type":"string","enum":["action_required","in_review","completed","rejected","canceled"],"description":"Closed verification-session status."}}},"VerificationSessionDetail":{"oneOf":[{"type":"object","additionalProperties":false,"required":["id","key","type","status","url","expiresAt"],"properties":{"id":{"type":"string","pattern":"^vfy_[0-9A-Za-z]+$","description":"Verification-session identifier (`vfy_...`)."},"key":{"type":"string","minLength":1},"type":{"type":"string","description":"Open hosted-session type."},"status":{"type":"string","enum":["action_required","in_review","completed","rejected","canceled"],"description":"Legacy compatibility permits an existing action link on any stored status; new process-owned links use action_required only."},"url":{"type":"string","format":"uri","pattern":"^https://","description":"Stable first-party action URL. Provider URLs are never exposed."},"expiresAt":{"type":"string","format":"date-time","nullable":true,"enum":[null],"description":"Action URLs are stable and do not expire locally."}}},{"type":"object","additionalProperties":false,"required":["id","key","type","status"],"properties":{"id":{"type":"string","pattern":"^vfy_[0-9A-Za-z]+$","description":"Verification-session identifier (`vfy_...`)."},"key":{"type":"string","minLength":1},"type":{"type":"string","description":"Open hosted-session type."},"status":{"type":"string","enum":["in_review","completed","rejected","canceled"],"description":"Process-owned session without customer action; URL and expiry fields are omitted."}}}],"description":"Customer-scoped hosted-session detail. New process-owned action_required sessions have a stable first-party URL; in-review and terminal process sessions are URL-free.","x-redirect-responses":{"204":{"description":"Completed process sessions and legacy two-identity completed redirects return No Content."},"302":{"description":"An actionable exact session redirects to a short-lived provider URL with no-store and no-referrer protections."},"404":{"code":"not_found","retryable":false},"409":{"code":"kyc_process_conflict","retryable":true},"410":{"code":"kyc_session_terminal","retryable":false},"500":{"code":"internal_error","retryable":true},"502":{"code":"kyc_provider_unavailable","retryable":true},"503":{"codes":["verification_collection_mapping_invalid","kyc_configuration_unavailable","kyc_level_configuration_invalid"],"retryable":false}}},"Task":{"type":"object","additionalProperties":false,"required":["id","name","customerId","scope","subject","category","status","revision","remediationRound","reason","dueAt","deadline","notices","requirements","verificationSessions","tosSessions","completionPolicy","createdAt","updatedAt"],"properties":{"id":{"type":"string"},"name":{"type":"string","minLength":1,"description":"Customer-facing task name."},"customerId":{"type":"string"},"scope":{"$ref":"#/components/schemas/TaskScope"},"subject":{"$ref":"#/components/schemas/TaskSubject"},"originGroupId":{"type":"string"},"category":{"type":"string","description":"Task category. Open enum — values are added over time; clients must tolerate unknown values."},"status":{"type":"string","enum":["action_required","in_review","satisfied","rejected","canceled"],"description":"Task lifecycle status. Closed enum — exhaustive; additions would be a breaking change."},"revision":{"type":"integer","minimum":1},"remediationRound":{"type":"integer","minimum":0},"reason":{"$ref":"#/components/schemas/TaskReason"},"dueAt":{"type":"string","format":"date-time","nullable":true},"deadline":{"allOf":[{"$ref":"#/components/schemas/TaskDeadline"}],"nullable":true,"description":"Executable task deadline, or null when none is set."},"notices":{"type":"array","items":{"$ref":"#/components/schemas/TaskNotice"}},"requirements":{"type":"array","items":{"$ref":"#/components/schemas/Requirement"}},"verificationSessions":{"type":"array","items":{"$ref":"#/components/schemas/VerificationSession"}},"tosSessions":{"type":"array","items":{"$ref":"#/components/schemas/VerificationSession"}},"completionPolicy":{"allOf":[{"$ref":"#/components/schemas/TaskCompletionPolicyExpression"}],"nullable":true,"description":"Completion expression, or null when no completion policy is available."},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"TaskResponse":{"type":"object","additionalProperties":false,"required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Task"}}},"TaskPage":{"type":"object","additionalProperties":false,"required":["data","nextCursor","hasMore"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Task"}},"nextCursor":{"type":"string","nullable":true},"hasMore":{"type":"boolean"}}},"CustomerTaskDetail":{"type":"object","additionalProperties":false,"required":["id","name","customerId","scope","subject","category","status","revision","remediationRound","reason","dueAt","deadline","notices","requirements","allowedSubmissionChannels","verificationSessions","tosSessions","completionPolicy","createdAt","updatedAt"],"properties":{"id":{"type":"string"},"name":{"type":"string","minLength":1,"description":"Customer-facing task name."},"customerId":{"type":"string"},"scope":{"$ref":"#/components/schemas/TaskScope"},"subject":{"$ref":"#/components/schemas/TaskSubject"},"originGroupId":{"type":"string"},"category":{"type":"string","description":"Task category. Open enum — values are added over time; clients must tolerate unknown values."},"status":{"type":"string","enum":["action_required","in_review","satisfied","rejected","canceled"],"description":"Task lifecycle status. Closed enum — exhaustive; additions would be a breaking change."},"revision":{"type":"integer","minimum":1},"remediationRound":{"type":"integer","minimum":0},"reason":{"$ref":"#/components/schemas/TaskReason"},"dueAt":{"type":"string","format":"date-time","nullable":true},"deadline":{"allOf":[{"$ref":"#/components/schemas/TaskDeadline"}],"nullable":true,"description":"Executable task deadline, or null when none is set."},"notices":{"type":"array","items":{"$ref":"#/components/schemas/TaskNotice"}},"requirements":{"type":"array","items":{"$ref":"#/components/schemas/CustomerTaskRequirement"}},"allowedSubmissionChannels":{"type":"array","maxItems":2,"uniqueItems":true,"items":{"type":"string","enum":["direct_submission","verification_session"],"description":"Closed submission channel allowed by this task snapshot."},"description":"Immutable task submission-channel snapshot in canonical direct-submission then verification-session order."},"verificationSessions":{"type":"array","items":{"$ref":"#/components/schemas/VerificationSessionDetail"}},"tosSessions":{"type":"array","items":{"$ref":"#/components/schemas/VerificationSessionDetail"}},"completionPolicy":{"allOf":[{"$ref":"#/components/schemas/TaskCompletionPolicyExpression"}],"nullable":true,"description":"Completion expression, or null when no completion policy is available."},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"CustomerTaskDetailResponse":{"type":"object","additionalProperties":false,"required":["data"],"properties":{"data":{"$ref":"#/components/schemas/CustomerTaskDetail"}}},"TaskHistoryRequirement":{"type":"object","additionalProperties":false,"required":["id","key","status","requestType"],"properties":{"id":{"type":"string"},"key":{"type":"string"},"section":{"type":"string"},"status":{"type":"string","enum":["action_required","in_review","accepted","rejected","canceled","superseded"],"description":"Requirement status at this revision."},"requestType":{"type":"string","description":"Redacted request discriminator."},"supersededByRequirementId":{"type":"string"}}},"TaskHistorySession":{"type":"object","additionalProperties":false,"required":["id","key","type","status"],"properties":{"id":{"type":"string","pattern":"^vfy_[0-9A-Za-z]+$","description":"Verification-session identifier (`vfy_...`)."},"key":{"type":"string","minLength":1},"type":{"type":"string","description":"Open hosted-session type."},"status":{"type":"string","enum":["action_required","in_review","completed","rejected","canceled"],"description":"Closed verification-session status."}}},"TaskHistoryEntry":{"type":"object","additionalProperties":false,"required":["id","taskId","name","customerId","scope","subject","category","revision","remediationRound","status","reason","dueAt","deadline","notices","requirements","verificationSessions","tosSessions","completionPolicy","createdAt","updatedAt"],"properties":{"id":{"type":"string"},"name":{"type":"string","minLength":1,"description":"Customer-facing task name."},"customerId":{"type":"string"},"scope":{"$ref":"#/components/schemas/TaskScope"},"subject":{"$ref":"#/components/schemas/TaskSubject"},"originGroupId":{"type":"string"},"category":{"type":"string","description":"Task category. Open enum — values are added over time; clients must tolerate unknown values."},"status":{"type":"string","enum":["action_required","in_review","satisfied","rejected","canceled"],"description":"Task lifecycle status. Closed enum — exhaustive; additions would be a breaking change."},"revision":{"type":"integer","minimum":1},"remediationRound":{"type":"integer","minimum":0},"reason":{"$ref":"#/components/schemas/TaskReason"},"dueAt":{"type":"string","format":"date-time","nullable":true},"deadline":{"allOf":[{"$ref":"#/components/schemas/TaskDeadline"}],"nullable":true,"description":"Executable task deadline, or null when none is set."},"notices":{"type":"array","items":{"$ref":"#/components/schemas/TaskNotice"}},"requirements":{"type":"array","items":{"$ref":"#/components/schemas/TaskHistoryRequirement"}},"verificationSessions":{"type":"array","items":{"$ref":"#/components/schemas/TaskHistorySession"}},"tosSessions":{"type":"array","items":{"$ref":"#/components/schemas/TaskHistorySession"}},"completionPolicy":{"allOf":[{"$ref":"#/components/schemas/TaskCompletionPolicyExpression"}],"nullable":true,"description":"Completion expression, or null when no completion policy is available."},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"taskId":{"type":"string"}}},"TaskHistoryPage":{"type":"object","additionalProperties":false,"required":["data","nextCursor","hasMore"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/TaskHistoryEntry"}},"nextCursor":{"type":"string","nullable":true},"hasMore":{"type":"boolean"}}},"TaskChangedProblem":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId","retryable","currentRevision","currentStatus","taskId","taskUrl"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["task_changed"],"description":"Stable problem code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","enum":[false],"description":"Retrying the stale request cannot succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}},"currentRevision":{"type":"integer","minimum":1},"currentStatus":{"type":"string","enum":["action_required","in_review","satisfied","rejected","canceled"],"description":"Current task status."},"taskId":{"type":"string"},"taskUrl":{"type":"string","format":"uri-reference","example":"/v3/customers/cus_000000000000000001/tasks/tsk_000000000000000002"}}},"SubmissionProfileAddress":{"type":"object","additionalProperties":false,"required":[],"properties":{"streetLine1":{"type":"string","minLength":1,"maxLength":256,"pattern":"^(?!\\s)(?!.*\\s$)[^\\u0000-\\u001F\\u007F-\\u009F]+$","description":"A 1-256 character string without leading/trailing whitespace or control characters."},"streetLine2":{"type":"string","minLength":1,"maxLength":256,"pattern":"^(?!\\s)(?!.*\\s$)[^\\u0000-\\u001F\\u007F-\\u009F]+$","description":"A 1-256 character string without leading/trailing whitespace or control characters."},"city":{"type":"string","minLength":1,"maxLength":256,"pattern":"^(?!\\s)(?!.*\\s$)[^\\u0000-\\u001F\\u007F-\\u009F]+$","description":"A 1-256 character string without leading/trailing whitespace or control characters."},"state":{"type":"string","minLength":1,"maxLength":256,"pattern":"^(?!\\s)(?!.*\\s$)[^\\u0000-\\u001F\\u007F-\\u009F]+$","description":"A 1-256 character string without leading/trailing whitespace or control characters."},"postalCode":{"type":"string","minLength":1,"maxLength":256,"pattern":"^(?!\\s)(?!.*\\s$)[^\\u0000-\\u001F\\u007F-\\u009F]+$","description":"A 1-256 character string without leading/trailing whitespace or control characters."},"country":{"type":"string","pattern":"^[A-Z]{2}$"}},"minProperties":1},"SubmissionProfileJurisdiction":{"type":"object","additionalProperties":false,"required":["country"],"properties":{"country":{"type":"string","pattern":"^[A-Z]{2}$"},"region":{"type":"string","minLength":1,"maxLength":256,"pattern":"^(?!\\s)(?!.*\\s$)[^\\u0000-\\u001F\\u007F-\\u009F]+$","description":"A 1-256 character string without leading/trailing whitespace or control characters."}}},"SubmissionProfileTaxIdentifier":{"type":"object","additionalProperties":false,"required":["type","country","value"],"properties":{"type":{"type":"string","enum":["ssn","itin","ein","tin","vat","cpf","cnpj","other"]},"typeDescription":{"type":"string","minLength":1,"maxLength":256,"pattern":"^(?!\\s)(?!.*\\s$)[^\\u0000-\\u001F\\u007F-\\u009F]+$","description":"A 1-256 character string without leading/trailing whitespace or control characters."},"country":{"type":"string","pattern":"^[A-Z]{2}$"},"value":{"type":"string","minLength":1,"maxLength":256,"pattern":"^(?!\\s)(?!.*\\s$)[^\\u0000-\\u001F\\u007F-\\u009F]+$","description":"A 1-256 character string without leading/trailing whitespace or control characters."}},"oneOf":[{"not":{"required":["typeDescription"]},"properties":{"type":{"type":"string","enum":["ssn","itin","ein","tin","vat","cpf","cnpj"]}}},{"required":["typeDescription"],"properties":{"type":{"type":"string","enum":["other"]}}}]},"SubmissionProfileRegistration":{"type":"object","additionalProperties":false,"required":[],"properties":{"jurisdiction":{"$ref":"#/components/schemas/SubmissionProfileJurisdiction"},"number":{"type":"string","minLength":1,"maxLength":256,"pattern":"^(?!\\s)(?!.*\\s$)[^\\u0000-\\u001F\\u007F-\\u009F]+$","description":"A 1-256 character string without leading/trailing whitespace or control characters."},"formationDate":{"type":"string","format":"date","description":"A real Gregorian calendar date from year 0001 through 9999."}},"minProperties":1},"SubmissionProfileFlowDirection":{"type":"object","additionalProperties":false,"required":["firstParty","thirdParty"],"properties":{"firstParty":{"type":"boolean"},"thirdParty":{"type":"boolean"}}},"SubmissionProfileFlows":{"type":"object","additionalProperties":false,"required":[],"properties":{"payin":{"$ref":"#/components/schemas/SubmissionProfileFlowDirection"},"payout":{"$ref":"#/components/schemas/SubmissionProfileFlowDirection"}}},"SubmissionProfileOwnership":{"type":"object","additionalProperties":false,"required":[],"properties":{"declared":{"type":"boolean"},"directPercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$"},"indirectPercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$"},"effectivePercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$"}},"anyOf":[{"required":["declared"],"properties":{"declared":{"type":"boolean","enum":[true]}}},{"required":["directPercentage"]},{"required":["indirectPercentage"]},{"required":["effectivePercentage"]}]},"ProfileSubmissionAnswer":{"type":"object","additionalProperties":false,"required":["type","value"],"properties":{"type":{"type":"string","enum":["profile"],"description":"Submission answer discriminator."},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":256,"pattern":"^(?!\\s)(?!.*\\s$)[^\\u0000-\\u001F\\u007F-\\u009F]+$","description":"A 1-256 character string without leading/trailing whitespace or control characters."},{"type":"boolean"},{"$ref":"#/components/schemas/SubmissionProfileAddress"},{"$ref":"#/components/schemas/SubmissionProfileRegistration"},{"$ref":"#/components/schemas/SubmissionProfileFlows"},{"$ref":"#/components/schemas/SubmissionProfileOwnership"},{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["business_expenses","charitable_donations","cross_border_remittance","ecommerce","family_support","investment","payroll","operate_company","personal_expenses","purchase_goods_and_services","receive_freelance_payments","receive_payments","receive_salary","tax_optimization","tax_payments","third_party_money_transmission","treasury_management","wealth_preservation","other"]}},{"type":"array","uniqueItems":true,"items":{"type":"string","pattern":"^[A-Z]{2}$"}},{"type":"array","uniqueItems":true,"items":{"$ref":"#/components/schemas/SubmissionProfileTaxIdentifier"}}],"x-max-serialized-utf8-bytes":131072,"x-max-depth":12,"x-max-aggregate-entries":512}}},"TextSubmissionAnswer":{"type":"object","additionalProperties":false,"required":["type","value"],"properties":{"type":{"type":"string","enum":["text"],"description":"Submission answer discriminator."},"value":{"type":"string","minLength":1,"maxLength":16384}}},"DateSubmissionAnswer":{"type":"object","additionalProperties":false,"required":["type","value"],"properties":{"type":{"type":"string","enum":["date"],"description":"Submission answer discriminator."},"value":{"type":"string","format":"date","description":"A real Gregorian calendar date from year 0001 through 9999."}}},"SingleSelectSubmissionAnswer":{"type":"object","additionalProperties":false,"required":["type","value"],"properties":{"type":{"type":"string","enum":["single_select"],"description":"Submission answer discriminator."},"value":{"type":"string","minLength":1}}},"MultiSelectSubmissionAnswer":{"type":"object","additionalProperties":false,"required":["type","values"],"properties":{"type":{"type":"string","enum":["multi_select"],"description":"Submission answer discriminator."},"values":{"type":"array","minItems":1,"uniqueItems":true,"items":{"type":"string"}}}},"BooleanSubmissionAnswer":{"type":"object","additionalProperties":false,"required":["type","value"],"properties":{"type":{"type":"string","enum":["boolean"],"description":"Submission answer discriminator."},"value":{"type":"boolean"}}},"AttestationSubmissionAnswer":{"type":"object","additionalProperties":false,"required":["type","accepted"],"properties":{"type":{"type":"string","enum":["attestation"],"description":"Submission answer discriminator."},"accepted":{"type":"boolean","enum":[true],"description":"Attestations can only be submitted as accepted."},"acceptedAt":{"type":"string","format":"date-time"},"endUserIpAddress":{"type":"string"},"endUserUserAgent":{"type":"string","minLength":1,"maxLength":1024}}},"AttestationSubmissionSnapshot":{"type":"object","additionalProperties":false,"required":["type","accepted","text","version"],"properties":{"type":{"type":"string","enum":["attestation"],"description":"Submission answer discriminator."},"accepted":{"type":"boolean","enum":[true],"description":"Attestations can only be submitted as accepted."},"acceptedAt":{"type":"string","format":"date-time"},"endUserIpAddress":{"type":"string"},"endUserUserAgent":{"type":"string","minLength":1,"maxLength":1024},"text":{"type":"string","minLength":1,"description":"Immutable text presented for acceptance."},"version":{"type":"string","minLength":1,"description":"Immutable attestation text version."}}},"DocumentSubmissionAnswer":{"type":"object","additionalProperties":false,"required":["type","documentIds"],"properties":{"type":{"type":"string","enum":["document"],"description":"Submission answer discriminator."},"documentIds":{"type":"array","minItems":1,"maxItems":32,"uniqueItems":true,"items":{"type":"string","pattern":"^doc_"}}}},"ResourceReferenceSubmissionAnswer":{"type":"object","additionalProperties":false,"required":["type","relatedPartyId"],"properties":{"type":{"type":"string","enum":["resource_reference"],"description":"Submission answer discriminator."},"relatedPartyId":{"type":"string","pattern":"^rp_"}}},"AbsenceSubmissionAnswer":{"type":"object","additionalProperties":false,"required":["type","reason"],"properties":{"type":{"type":"string","enum":["absence"],"description":"Submission answer discriminator."},"reason":{"type":"string","enum":["not_available","not_applicable","does_not_exist","other"],"description":"Why the requested value cannot be provided."},"explanation":{"type":"string"}},"oneOf":[{"properties":{"reason":{"type":"string","enum":["not_available","not_applicable","does_not_exist"],"description":"Absence reason that does not require an explanation."}}},{"required":["explanation"],"properties":{"reason":{"type":"string","enum":["other"],"description":"Absence reason that requires an explanation."},"explanation":{"type":"string","minLength":1,"pattern":"\\S"}}}]},"SubmissionAnswer":{"oneOf":[{"$ref":"#/components/schemas/ProfileSubmissionAnswer"},{"$ref":"#/components/schemas/TextSubmissionAnswer"},{"$ref":"#/components/schemas/DateSubmissionAnswer"},{"$ref":"#/components/schemas/SingleSelectSubmissionAnswer"},{"$ref":"#/components/schemas/MultiSelectSubmissionAnswer"},{"$ref":"#/components/schemas/BooleanSubmissionAnswer"},{"$ref":"#/components/schemas/AttestationSubmissionAnswer"},{"$ref":"#/components/schemas/DocumentSubmissionAnswer"},{"$ref":"#/components/schemas/ResourceReferenceSubmissionAnswer"},{"$ref":"#/components/schemas/AbsenceSubmissionAnswer"}],"discriminator":{"propertyName":"type"}},"SubmissionAnswerEntry":{"type":"object","additionalProperties":false,"required":["requirementId","answer"],"properties":{"requirementId":{"type":"string"},"alternativeKey":{"type":"string"},"answer":{"$ref":"#/components/schemas/SubmissionAnswer"}}},"SubmissionSnapshotAnswer":{"oneOf":[{"$ref":"#/components/schemas/ProfileSubmissionAnswer"},{"$ref":"#/components/schemas/TextSubmissionAnswer"},{"$ref":"#/components/schemas/DateSubmissionAnswer"},{"$ref":"#/components/schemas/SingleSelectSubmissionAnswer"},{"$ref":"#/components/schemas/MultiSelectSubmissionAnswer"},{"$ref":"#/components/schemas/BooleanSubmissionAnswer"},{"$ref":"#/components/schemas/AttestationSubmissionSnapshot"},{"$ref":"#/components/schemas/DocumentSubmissionAnswer"},{"$ref":"#/components/schemas/ResourceReferenceSubmissionAnswer"},{"$ref":"#/components/schemas/AbsenceSubmissionAnswer"}],"discriminator":{"propertyName":"type"}},"SubmissionSnapshotAnswerEntry":{"type":"object","additionalProperties":false,"required":["requirementId","answer"],"properties":{"requirementId":{"type":"string"},"alternativeKey":{"type":"string"},"answer":{"$ref":"#/components/schemas/SubmissionSnapshotAnswer"}}},"SubmissionRequest":{"type":"object","additionalProperties":false,"required":["taskRevision","answers"],"properties":{"taskRevision":{"type":"integer","minimum":1},"answers":{"type":"array","minItems":1,"maxItems":100,"description":"One or more current actionable requirement answers. Some KYC tasks accept a subset; other tasks require every current actionable requirement in the request.","x-max-total-document-references":128,"items":{"$ref":"#/components/schemas/SubmissionAnswerEntry"}}}},"SubmissionAnswerSummary":{"type":"object","additionalProperties":false,"required":["requirementId","answerType"],"properties":{"requirementId":{"type":"string"},"answerType":{"type":"string","description":"Redacted answer-type discriminator."}}},"SubmissionSummary":{"type":"object","additionalProperties":false,"required":["id","taskId","customerId","remediationRound","taskRevision","outcome","answers","submittedAt","updatedAt"],"properties":{"id":{"type":"string"},"taskId":{"type":"string"},"customerId":{"type":"string"},"remediationRound":{"type":"integer","minimum":0},"taskRevision":{"type":"integer","minimum":1},"outcome":{"type":"string","enum":["in_review","accepted","changes_requested","rejected"],"description":"Closed submission review outcome."},"answers":{"type":"array","items":{"$ref":"#/components/schemas/SubmissionAnswerSummary"}},"reviewFeedback":{"$ref":"#/components/schemas/ReviewFeedback"},"submittedAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"SubmissionDetail":{"type":"object","additionalProperties":false,"required":["id","taskId","customerId","remediationRound","taskRevision","outcome","answers","submittedAt","updatedAt"],"properties":{"id":{"type":"string"},"taskId":{"type":"string"},"customerId":{"type":"string"},"remediationRound":{"type":"integer","minimum":0},"taskRevision":{"type":"integer","minimum":1},"outcome":{"type":"string","enum":["in_review","accepted","changes_requested","rejected"],"description":"Closed submission review outcome."},"answers":{"type":"array","items":{"$ref":"#/components/schemas/SubmissionSnapshotAnswerEntry"}},"reviewFeedback":{"$ref":"#/components/schemas/ReviewFeedback"},"submittedAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"SubmissionPage":{"type":"object","additionalProperties":false,"required":["data","nextCursor","hasMore"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/SubmissionSummary"}},"nextCursor":{"type":"string","nullable":true},"hasMore":{"type":"boolean"}}},"SubmissionDetailResponse":{"type":"object","additionalProperties":false,"required":["data"],"properties":{"data":{"$ref":"#/components/schemas/SubmissionDetail"}}},"TaskSubmissionIncompleteProblem":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId","retryable","missingRequirementIds"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["task_submission_incomplete"],"description":"Stable problem code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","enum":[false],"description":"Static retry guidance for this problem code."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}},"missingRequirementIds":{"type":"array","items":{"type":"string"},"description":"Ordered actionable requirement ids still missing."}}},"AbsenceConflictsWithProfileProblem":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId","retryable","profilePointer"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["absence_conflicts_with_profile"],"description":"Stable problem code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","enum":[false],"description":"Static retry guidance for this problem code."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}},"profilePointer":{"type":"string","pattern":"^/","description":"Canonical field that already has a value."}}},"KycProcessConflictProblem":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId","retryable"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["kyc_process_conflict"],"description":"Stable problem code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","enum":[true],"description":"Static retry guidance for this problem code."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}},"SubmissionChannelNotAllowedProblem":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId","retryable"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["submission_channel_not_allowed"],"description":"Stable problem code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","enum":[false],"description":"Static retry guidance for this problem code."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}},"IdempotencyConflictProblem":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId","retryable"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["idempotency_conflict"],"description":"Stable problem code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","enum":[false],"description":"Static retry guidance for this problem code."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}},"IdempotencyRequestInProgressProblem":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId","retryable"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["idempotency_request_in_progress"],"description":"Stable problem code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","enum":[true],"description":"Static retry guidance for this problem code."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}},"Page":{"type":"object","description":"Cursor pagination envelope. `data` holds the page; follow `nextCursor` until `hasMore` is false.","required":["data","nextCursor","hasMore"],"properties":{"data":{"type":"array","items":{"type":"object"}},"nextCursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page; null on the last page."},"hasMore":{"type":"boolean"}}},"Money":{"type":"object","required":["amount","currency"],"properties":{"amount":{"type":"string","description":"Decimal amount as a string.","example":"100.00"},"currency":{"type":"string","example":"USD"}}},"Document":{"type":"object","required":["id","type","fileName","contentType","sizeBytes","status","archivedAt","createdAt","updatedAt"],"properties":{"id":{"type":"string","example":"doc_7mA9sL1kBc6dV8xN2pQ4rT"},"type":{"type":"string"},"fileName":{"type":"string"},"contentType":{"type":"string","example":"application/pdf"},"sizeBytes":{"type":"integer","minimum":1},"status":{"type":"string","enum":["uploaded"],"description":"Document status. Closed enum — exhaustive; additions would be a breaking change."},"archivedAt":{"type":"string","nullable":true,"description":"Always null here: archived documents are excluded from reads and lists. The DELETE response uses ArchivedDocument."},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"ArchivedDocument":{"type":"object","required":["id","type","fileName","contentType","sizeBytes","status","archivedAt","createdAt","updatedAt"],"properties":{"id":{"type":"string","pattern":"^doc_[a-zA-Z0-9]+$"},"type":{"type":"string"},"fileName":{"type":"string"},"contentType":{"type":"string"},"sizeBytes":{"type":"integer","minimum":1},"status":{"type":"string","enum":["archived"],"description":"Terminal archive status set by DELETE."},"archivedAt":{"type":"string","format":"date-time","description":"Archive timestamp, set exactly once."},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"StatusReason":{"type":"object","description":"Structured reason for a resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}}},"examples":{"Task":{"value":{"id":"tsk_000000000000000002","name":"Complete customer information","customerId":"cus_000000000000000001","scope":{"type":"capability","id":"ach_pooled"},"subject":{"type":"customer","id":"cus_000000000000000001"},"originGroupId":"01JXYZGROUP","category":"intake","status":"action_required","revision":3,"remediationRound":2,"reason":{"code":"additional_information_requested","message":"Additional information is needed to continue review.","requestedBy":"institution"},"dueAt":"2026-08-19T18:20:00Z","deadline":{"at":"2026-09-18T18:20:00Z","outcome":"none","noticeCount":0},"notices":[],"requirements":[{"id":"req_01JSOURCE","key":"source_of_funds_explanation","section":"Expected activity","status":"action_required","request":{"type":"profile","prompt":"Describe the source of the expected account funds.","required":true,"valueType":"string","profilePointer":"/financialProfile/sourceOfFundsDescription"}}],"verificationSessions":[{"id":"vfy_000000000000000003","key":"identity_verification","type":"identity_verification","status":"action_required"}],"tosSessions":[{"id":"vfy_000000000000000004","key":"terms_of_service","type":"terms_of_service","status":"action_required"}],"completionPolicy":{"mode":"all_of","conditions":[{"mode":"any_of","conditions":[{"type":"requirements","completion":"all"},{"type":"verification_sessions","completion":"all"}]},{"type":"tos_sessions","completion":"all"}]},"createdAt":"2026-07-15T18:20:00Z","updatedAt":"2026-07-15T19:10:00Z"}},"CustomerTaskDetail":{"value":{"id":"tsk_000000000000000002","name":"Complete customer information","customerId":"cus_000000000000000001","scope":{"type":"capability","id":"ach_pooled"},"subject":{"type":"customer","id":"cus_000000000000000001"},"originGroupId":"01JXYZGROUP","category":"intake","status":"action_required","revision":3,"remediationRound":2,"reason":{"code":"additional_information_requested","message":"Additional information is needed to continue review.","requestedBy":"institution"},"dueAt":"2026-08-19T18:20:00Z","deadline":{"at":"2026-09-18T18:20:00Z","outcome":"none","noticeCount":0},"notices":[],"requirements":[{"id":"req_01JSOURCE","key":"source_of_funds_explanation","section":"Expected activity","status":"action_required","request":{"type":"profile","prompt":"Describe the source of the expected account funds.","required":true,"valueType":"string","profilePointer":"/financialProfile/sourceOfFundsDescription"}}],"verificationSessions":[{"id":"vfy_000000000000000003","key":"identity_verification","type":"identity_verification","status":"action_required","url":"https://api.example/kyc/redirect/cus_000000000000000001/tsk_000000000000000002/vfy_000000000000000003","expiresAt":null}],"tosSessions":[{"id":"vfy_01JTERMS","key":"terms_of_service","type":"terms_of_service","status":"action_required","url":"https://tos.example/cap/01JTERMSACTION000000000","expiresAt":null}],"completionPolicy":{"mode":"all_of","conditions":[{"mode":"any_of","conditions":[{"type":"requirements","completion":"all"},{"type":"verification_sessions","completion":"all"}]},{"type":"tos_sessions","completion":"all"}]},"createdAt":"2026-07-15T18:20:00Z","updatedAt":"2026-07-15T19:10:00Z","allowedSubmissionChannels":["direct_submission","verification_session"]}},"CustomerTaskTerminalDetail":{"value":{"id":"tsk_000000000000000002","name":"Complete customer information","customerId":"cus_000000000000000001","scope":{"type":"capability","id":"ach_pooled"},"subject":{"type":"customer","id":"cus_000000000000000001"},"originGroupId":"01JXYZGROUP","category":"intake","status":"satisfied","revision":3,"remediationRound":2,"reason":{"code":"additional_information_requested","message":"Additional information is needed to continue review.","requestedBy":"institution"},"dueAt":"2026-08-19T18:20:00Z","deadline":{"at":"2026-09-18T18:20:00Z","outcome":"none","noticeCount":0},"notices":[],"requirements":[{"id":"req_01JSOURCE","key":"source_of_funds_explanation","section":"Expected activity","status":"action_required","request":{"type":"profile","prompt":"Describe the source of the expected account funds.","required":true,"valueType":"string","profilePointer":"/financialProfile/sourceOfFundsDescription"}}],"verificationSessions":[{"id":"vfy_000000000000000003","key":"identity_verification","type":"identity_verification","status":"completed"}],"tosSessions":[{"id":"vfy_01JTERMS","key":"terms_of_service","type":"terms_of_service","status":"action_required","url":"https://tos.example/cap/01JTERMSACTION000000000","expiresAt":null}],"completionPolicy":{"mode":"all_of","conditions":[{"mode":"any_of","conditions":[{"type":"requirements","completion":"all"},{"type":"verification_sessions","completion":"all"}]},{"type":"tos_sessions","completion":"all"}]},"createdAt":"2026-07-15T18:20:00Z","updatedAt":"2026-07-15T19:10:00Z","allowedSubmissionChannels":["direct_submission","verification_session"]}},"CustomerTaskDirectOnlyDetail":{"value":{"id":"tsk_000000000000000002","name":"Complete customer information","customerId":"cus_000000000000000001","scope":{"type":"capability","id":"ach_pooled"},"subject":{"type":"customer","id":"cus_000000000000000001"},"originGroupId":"01JXYZGROUP","category":"intake","status":"action_required","revision":3,"remediationRound":2,"reason":{"code":"additional_information_requested","message":"Additional information is needed to continue review.","requestedBy":"institution"},"dueAt":"2026-08-19T18:20:00Z","deadline":{"at":"2026-09-18T18:20:00Z","outcome":"none","noticeCount":0},"notices":[],"requirements":[{"id":"req_01JSOURCE","key":"source_of_funds_explanation","section":"Expected activity","status":"action_required","request":{"type":"profile","prompt":"Describe the source of the expected account funds.","required":true,"valueType":"string","profilePointer":"/financialProfile/sourceOfFundsDescription"}}],"verificationSessions":[],"tosSessions":[{"id":"vfy_01JTERMS","key":"terms_of_service","type":"terms_of_service","status":"action_required","url":"https://tos.example/cap/01JTERMSACTION000000000","expiresAt":null}],"completionPolicy":{"mode":"all_of","conditions":[{"mode":"any_of","conditions":[{"type":"requirements","completion":"all"},{"type":"verification_sessions","completion":"all"}]},{"type":"tos_sessions","completion":"all"}]},"createdAt":"2026-07-15T18:20:00Z","updatedAt":"2026-07-15T19:10:00Z","allowedSubmissionChannels":["direct_submission"]}},"TaskHistoryEntry":{"value":{"id":"tskh_01JHISTORY","name":"Complete customer information","customerId":"cus_000000000000000001","scope":{"type":"capability","id":"ach_pooled"},"subject":{"type":"customer","id":"cus_000000000000000001"},"originGroupId":"01JXYZGROUP","category":"intake","status":"action_required","revision":3,"remediationRound":2,"reason":{"code":"additional_information_requested","message":"Additional information is needed to continue review.","requestedBy":"institution"},"dueAt":"2026-08-19T18:20:00Z","deadline":{"at":"2026-09-18T18:20:00Z","outcome":"none","noticeCount":0},"notices":[],"requirements":[{"id":"req_01JSOURCE","key":"source_of_funds_explanation","section":"Expected activity","status":"action_required","requestType":"profile"}],"verificationSessions":[{"id":"vfy_000000000000000003","key":"identity_verification","type":"identity_verification","status":"action_required"}],"tosSessions":[{"id":"vfy_000000000000000004","key":"terms_of_service","type":"terms_of_service","status":"action_required"}],"completionPolicy":{"mode":"all_of","conditions":[{"mode":"any_of","conditions":[{"type":"requirements","completion":"all"},{"type":"verification_sessions","completion":"all"}]},{"type":"tos_sessions","completion":"all"}]},"createdAt":"2026-07-15T19:10:00Z","updatedAt":"2026-07-15T19:10:00Z","taskId":"tsk_000000000000000002"}},"Requirement":{"value":{"id":"req_01JSOURCE","key":"source_of_funds_explanation","section":"Expected activity","status":"action_required","request":{"type":"profile","prompt":"Describe the source of the expected account funds.","required":true,"valueType":"string","profilePointer":"/financialProfile/sourceOfFundsDescription"}}},"VerificationSession":{"value":{"id":"vfy_000000000000000003","key":"identity_verification","type":"identity_verification","status":"action_required"}},"VerificationSessionDetail":{"value":{"id":"vfy_000000000000000003","key":"identity_verification","type":"identity_verification","status":"action_required","url":"https://api.example/kyc/redirect/cus_000000000000000001/tsk_000000000000000002/vfy_000000000000000003","expiresAt":null}},"SubmissionRequest":{"value":{"taskRevision":3,"answers":[{"requirementId":"req_01JSOURCE","answer":{"type":"profile","value":"Revenue from annual software subscriptions."}},{"requirementId":"req_01JIDENTITY","alternativeKey":"passport","answer":{"type":"document","documentIds":["doc_01JPASS"]}}]}},"SubmissionSummary":{"value":{"id":"sub_01JATTEMPT","taskId":"tsk_01JXYZ","customerId":"cus_01JABC","remediationRound":2,"taskRevision":3,"outcome":"in_review","answers":[{"requirementId":"req_01JSOURCE","answerType":"profile"},{"requirementId":"req_01JIDENTITY","answerType":"document"}],"submittedAt":"2026-07-15T19:20:00Z","updatedAt":"2026-07-15T19:20:00Z"}},"SubmissionDetail":{"value":{"id":"sub_01JATTEMPT","taskId":"tsk_01JXYZ","customerId":"cus_01JABC","remediationRound":2,"taskRevision":3,"outcome":"in_review","answers":[{"requirementId":"req_01JSOURCE","answer":{"type":"profile","value":"Revenue from annual software subscriptions."}},{"requirementId":"req_01JIDENTITY","alternativeKey":"passport","answer":{"type":"document","documentIds":["doc_01JPASS"]}}],"submittedAt":"2026-07-15T19:20:00Z","updatedAt":"2026-07-15T19:20:00Z"}}},"securitySchemes":{"apiKey":{"type":"apiKey","in":"header","name":"X-API-Key","description":"Your Swipelux API key. Obtain this from the Swipelux Dashboard."},"serviceToken":{"type":"http","scheme":"bearer","description":"Swipelux service-to-service credential for trusted first-party commands."},"uploadToken":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Short-lived upload token minted by a customer-document or merchant-KYB upload-token route."}}},"security":[{"apiKey":[]}],"externalDocs":{"description":"Swipelux Documentation","url":"https://docs.swipelux.com"},"tags":[{"name":"Customer","description":"Create individual and business customers with nested v2 customer data."},{"name":"Bank","description":"Discover supported financial institutions and request customer-specific bank methods. Bank onboarding comes before account creation; customizable pay-in developer fees are configured in Account -> Bank account fees for issued `acc_*` accounts."},{"name":"Account","description":"Manage customer bank accounts in API v2.\n\nBank account creation: create Swipelux-issued accounts using public bank and method fields. Include optional `fees` to attach pay-in developer fees at creation.\n\nBank account fees: replace or clear pay-in developer fees for one issued `acc_*` account with `PATCH /v2/customers/{customerId}/accounts/{accountId}/fees`."},{"name":"Document","description":"Upload and review customer or shareholder document state."},{"name":"Transfer","description":"Create quotes and execute transfers through the unified v2 flow."},{"name":"Individual","description":"Manage individual customer accounts and KYC verification"},{"name":"Business","description":"Manage business customer accounts, KYB data, and documents"},{"name":"Wallets","description":"Provision and manage customer wallets across blockchain networks"},{"name":"Accounts","description":"Manage customer bank accounts for fiat transfers.\n\nSee [Supported Payment Rails](/v1/meta/rails) for the full list of available rails.\n\n## Virtual vs External Accounts\n\n- **Virtual accounts** are Swipelux-issued accounts for receiving funds\n- **External accounts** are customer's own bank accounts for payouts\n\n## Idempotency\n\nVirtual account creation is idempotent - requesting the same customer + currency combination returns the existing account.\n"},{"name":"Transfers","description":"Track transfer status by ID"},{"name":"Pay-ins","description":"Accept crypto payments into customer wallets"},{"name":"Payin Quotes","description":"Get quotes before creating pay-ins.\n\n## Quote Flow\n\n1. **Create Quote**: `POST /v1/payin/quote` - Get exchange rate and fees upfront\n2. **Execute Payin**: `POST /v1/payin` with `{ \"quote\": \"quo_xxx\" }`\n\n## Why Use Quotes?\n\n- **Price Transparency**: Show exact fees and exchange rates to users before they commit\n- **Rate Lock**: Lock in the exchange rate for the quote validity period (5 minutes for wire, varies for card)\n- **Better UX**: Avoid surprises - users know exactly what they'll receive\n\n## Example\n\n```json\n// Step 1: Create quote\nPOST /v1/payin/quote\n{\n  \"from\": { \"currency\": \"USD\", \"amount\": \"100\", \"rail\": \"card\" },\n  \"to\": \"wal_xxx\"\n}\n\n// Response includes rate, fees, and destination_amount\n{\n  \"id\": \"quo_xxx\",\n  \"rate\": \"1.08\",\n  \"fee\": { \"total\": \"2.50\", \"currency\": \"EUR\" },\n  \"destination_amount\": \"105.14\"  // USDC after conversion and fees\n}\n\n// Step 2: Execute with quote\nPOST /v1/payin\n{ \"quote\": \"quo_xxx\" }\n```\n"},{"name":"Payouts","description":"Send payouts from wallets to external destinations (crypto or wire)"},{"name":"Payout Quotes","description":"Get quotes before creating payouts.\n\n## Quote Flow\n\n1. **Create Quote**: `POST /v1/payout/quote` - Get exchange rate and fees upfront\n2. **Execute Payout**: `POST /v1/payout` with `{ \"quote\": \"quo_xxx\" }`\n\n## Why Use Quotes?\n\n- **Price Transparency**: Show exact fees and exchange rates to users before they commit\n- **Rate Lock**: Lock in the exchange rate for 5 minutes\n- **Compliance**: Required for regulated offramp transactions\n\n## Supported Payout Types\n\n| From | To | Description |\n|------|-----|-------------|\n| `wal_xxx` | `wal_xxx` | Crypto-to-crypto (same chain) |\n| `wal_xxx` | `acc_xxx` | Offramp to a customer's external bank account |\n| `wal_xxx` | `racc_xxx` | Offramp to a third-party recipient bank account |\n\n## Example\n\n```json\n// Step 1: Create quote for offramp\nPOST /v1/payout/quote\n{\n  \"from\": { \"id\": \"wal_xxx\", \"amount\": 100 },\n  \"to\": { \"id\": \"racc_xxx\", \"currency\": \"EUR\" }\n}\n\n// Response\n{\n  \"id\": \"quo_xxx\",\n  \"rate\": \"0.92\",\n  \"fee\": { \"total\": \"1.50\", \"currency\": \"USD\" },\n  \"destination_amount\": \"90.62\"  // EUR after conversion and fees\n}\n\n// Step 2: Execute with quote\nPOST /v1/payout\n{ \"quote\": \"quo_xxx\" }\n```\n"},{"name":"Sandbox","description":"Test controls for sandbox workspaces.\n\nTo use sandbox simulation, first create a sandbox workspace in Swipelux at https://swipelux.app. Then issue an API key from that workspace; sandbox keys are marked with `sbx`. Use the normal API endpoints to create customers, wallets, pay-ins, and payouts, then use sandbox endpoints to set test balances and outcomes.\n\nSandbox simulation never moves real funds and is available only with sandbox API keys. Live keys receive 403 on `/v1/sandbox/*` endpoints."},{"name":"Webhooks","description":"Configure webhook endpoints for real-time event notifications.\n\n## Webhook Verification\n\nSvix is the primary and official webhook delivery model. Verify Svix deliveries with the `svix-id`, `svix-timestamp`, and `svix-signature` headers using the Svix SDK and your endpoint signing secret.\n\n`X-Webhook-Signature` is used only for the legacy HMAC-SHA256 compatibility delivery path.\n\n---\n\n## Supported Events\n\n- `customer.created`\n- `customer.updated`\n- `customer.archived`\n- `customer.verification_changed`\n- `customer.rail.status_changed`\n- `customer.rail.bank_status_changed`\n- `customer.rail.documents_requested`\n- `capability.created`\n- `capability.status_changed`\n- `application.status_changed`\n- `recipient.status_changed`\n- `destination.status_changed`\n- `account.created`\n- `account.status_changed`\n- `account.details_changed`\n- `api.deprecation`\n- `transfer.created`\n- `transfer.state_changed`\n- `transfer.updated`\n- `transfer.funded_partial`\n- `transfer.completed`\n- `transfer.failed`\n- `transfer.amount_adjusted`\n- `payin.created`\n- `payin.updated`\n- `payin.completed`\n- `payin.failed`\n- `payin.funded_partial`\n- `payin.amount_adjusted`\n- `payout.created`\n- `payout.updated`\n- `payout.completed`\n- `payout.failed`\n- `payout.amount_adjusted`\n\nV3 lifecycle events carry the full current resource in `data.object` and the prior public state in `data.previous.state`. `account.details_changed` instead carries `data.previous.routingVersion` so consumers can detect a routing-instruction version change.\n\n`api.deprecation` is subscribable for future notices. Its `data.object` contains exactly `route`, `deprecationAt`, `sunsetAt`, and `changelogUrl`; no event is emitted until a route is actually scheduled for deprecation.\n\nSwipelux does not emit `wallets.provision.requested` or `transfer.offramp.requested`.\n\n### customer.created\n\nFired when a customer record is created.\n\n```json\n{\n  \"type\": \"customer.created\",\n  \"data\": {\n    \"id\": \"cus_abc123\",\n    \"type\": \"individual\",\n    \"status\": \"not_started\",\n    \"createdAt\": \"2026-05-18T10:00:00.000Z\",\n    \"updatedAt\": \"2026-05-18T10:00:00.000Z\"\n  },\n  \"createdAt\": 1704067200000\n}\n```\n\n### customer.updated\n\nFired when merchant-visible customer profile fields are updated.\n\n```json\n{\n  \"type\": \"customer.updated\",\n  \"data\": {\n    \"id\": \"cus_abc123\",\n    \"type\": \"individual\",\n    \"status\": \"not_started\",\n    \"createdAt\": \"2026-05-18T10:00:00.000Z\",\n    \"updatedAt\": \"2026-05-18T11:00:00.000Z\"\n  },\n  \"createdAt\": 1704067200000\n}\n```\n\n### customer.archived\n\nFired after a customer and its customer-owned resources have been archived. The v3 envelope carries the final public customer resource in `data.object`, including `archivedAt`.\n\n```json\n{\n  \"id\": \"evt_ghi789\",\n  \"type\": \"customer.archived\",\n  \"createdAt\": \"2026-05-18T12:00:00.000Z\",\n  \"attempt\": 1,\n  \"resource\": { \"type\": \"customer\", \"id\": \"cus_abc123\" },\n  \"data\": {\n    \"object\": {\n      \"id\": \"cus_abc123\",\n      \"type\": \"individual\",\n      \"externalId\": null,\n      \"changedSubresources\": [],\n      \"createdAt\": \"2026-05-18T10:00:00.000Z\",\n      \"updatedAt\": \"2026-05-18T12:00:00.000Z\",\n      \"archivedAt\": \"2026-05-18T12:00:00.000Z\"\n    }\n  }\n}\n```\n\n### customer.verification_changed\n\nFired when a customer's verification status changes.\n\n```json\n{\n  \"type\": \"customer.verification_changed\",\n  \"data\": {\n    \"customerId\": \"cus_abc123\",\n    \"customerType\": \"individual\",\n    \"verificationStatus\": \"approved\"\n  },\n  \"createdAt\": 1704067200000\n}\n```\n\n### customer.rail.status_changed\n\nFired when a rail's public operational status changes.\n\n```json\n{\n  \"type\": \"customer.rail.status_changed\",\n  \"data\": {\n    \"customerId\": \"cus_abc123\",\n    \"rail\": \"ach_named\",\n    \"railStatus\": \"ready_to_use\"\n  },\n  \"createdAt\": 1704067200000\n}\n```\n\n| Field | Values |\n|-------|--------|\n| `rail` | Qualified rail (`ach_pooled`, `ach_named`, `fedwire_pooled`, `fedwire_named`, `wire_pooled`, `wire_named`, `rtp_pooled`, `rtp_named`, `swift_pooled`, `swift_named`, `pix_pooled`, `spei_pooled`, `pse_pooled`, `transfers_3_0_pooled`) |\n| `railStatus` | `requestable`, `pending_review`, `ready_to_use`, `action_required`, `rejected`, `unavailable` |\n\n### customer.rail.bank_status_changed\n\nFired when an individual bank attempt within a rail changes status. The payload includes both the bank-attempt status and the aggregate rail status after rollup.\n\n```json\n{\n  \"type\": \"customer.rail.bank_status_changed\",\n  \"data\": {\n    \"customerId\": \"cus_abc123\",\n    \"rail\": \"fedwire_named\",\n    \"bank\": \"cfsb\",\n    \"status\": \"ready_to_use\",\n    \"railStatus\": \"ready_to_use\"\n  },\n  \"createdAt\": 1704067200000\n}\n```\n\nBank `status` values are `pending_review`, `ready_to_use`, or `rejected`.\n\n### customer.rail.documents_requested\n\nFired when extra documents are required for a customer's rail.\n\n```json\n{\n  \"type\": \"customer.rail.documents_requested\",\n  \"data\": {\n    \"customerId\": \"cus_abc123\",\n    \"rail\": \"ach_named\",\n    \"railStatus\": \"action_required\",\n    \"requiredDocuments\": [\"bank_statement\"],\n    \"reason\": \"Compliance requires an updated bank statement\"\n  },\n  \"createdAt\": 1704067200000\n}\n```\n\n## Transfer Events\n\n### transfer.created\n```json\n{\n  \"type\": \"transfer.created\",\n  \"data\": {\n    \"id\": \"tr_xyz789\",\n    \"onBehalfOf\": \"cus_abc123\",\n    \"state\": \"pending\",\n    \"fromAmount\": \"100.00\",\n    \"toAmount\": \"98.75\"\n  },\n  \"createdAt\": 1704067200000\n}\n```\n\n### transfer.updated\n```json\n{\n  \"type\": \"transfer.updated\",\n  \"data\": {\n    \"id\": \"tr_xyz789\",\n    \"onBehalfOf\": \"cus_abc123\",\n    \"state\": \"pending\",\n    \"fromAmount\": \"100.00\",\n    \"toAmount\": \"98.75\"\n  },\n  \"createdAt\": 1704067200000\n}\n```\n\n### transfer.completed\n```json\n{\n  \"type\": \"transfer.completed\",\n  \"data\": {\n    \"id\": \"tr_xyz789\",\n    \"onBehalfOf\": \"cus_abc123\",\n    \"state\": \"completed\",\n    \"fromAmount\": \"100.00\",\n    \"toAmount\": \"98.75\"\n  },\n  \"createdAt\": 1704067200000\n}\n```\n\n### transfer.failed\n```json\n{\n  \"type\": \"transfer.failed\",\n  \"data\": {\n    \"id\": \"tr_xyz789\",\n    \"onBehalfOf\": \"cus_abc123\",\n    \"state\": \"failed\",\n    \"fromAmount\": \"100.00\",\n    \"toAmount\": \"98.75\"\n  },\n  \"createdAt\": 1704067200000\n}\n```\n\n### transfer.funded_partial\n\nFired when a payin settles for materially less than expected. The transfer state remains `completed`, and `fromAmount` matches `receivedAmount`.\n\n```json\n{\n  \"type\": \"transfer.funded_partial\",\n  \"data\": {\n    \"id\": \"tr_xxx\",\n    \"onBehalfOf\": \"cus_xxx\",\n    \"state\": \"completed\",\n    \"expectedAmount\": \"100.00\",\n    \"receivedAmount\": \"89.00\",\n    \"fromAmount\": \"89.00\"\n  },\n  \"createdAt\": 1704067200000\n}\n```\n\n### transfer.amount_adjusted\n```json\n{\n  \"type\": \"transfer.amount_adjusted\",\n  \"data\": {\n    \"id\": \"tr_xyz789\",\n    \"onBehalfOf\": \"cus_abc123\",\n    \"from\": \"100.00\",\n    \"to\": \"95.50\"\n  },\n  \"createdAt\": 1704067200000\n}\n```\n\nPay-in and pay-out operations continue to emit the existing `transfer.*`\nevents for backwards compatibility. They also emit domain-specific `payin.*`\nor `payout.*` events with payloads shaped like the corresponding API\nresponses.\n\n## Pay-in Events\n\n### payin.created\n```json\n{\n  \"type\": \"payin.created\",\n  \"data\": {\n    \"id\": \"tr_payin123\",\n    \"to\": \"wal_abc123\",\n    \"rail\": \"polygon\",\n    \"currency\": \"USDC\",\n    \"amount\": \"100.00\",\n    \"state\": \"awaiting_funds\"\n  },\n  \"createdAt\": 1704067200000\n}\n```\n\n### payin.completed\n```json\n{\n  \"type\": \"payin.completed\",\n  \"data\": {\n    \"id\": \"tr_payin123\",\n    \"to\": \"wal_abc123\",\n    \"rail\": \"polygon\",\n    \"currency\": \"USDC\",\n    \"amount\": \"100.00\",\n    \"state\": \"completed\"\n  },\n  \"createdAt\": 1704067200000\n}\n```\n\n`payin.updated`, `payin.failed`, `payin.funded_partial`, and\n`payin.amount_adjusted` use the same response-shaped pay-in payload. Amount\nadjustment events include `expectedAmount` and `receivedAmount` when known.\n\n## Pay-out Events\n\n### payout.created\n```json\n{\n  \"type\": \"payout.created\",\n  \"data\": {\n    \"id\": \"tr_payout123\",\n    \"state\": \"pending\",\n    \"from\": {\n      \"rail\": \"polygon\",\n      \"id\": \"wal_source123\",\n      \"amount\": 100,\n      \"currency\": \"USDC\"\n    },\n    \"to\": {\n      \"rail\": \"fedwire\",\n      \"id\": \"racc_destination123\",\n      \"amount\": 99,\n      \"currency\": \"USD\"\n    }\n  },\n  \"createdAt\": 1704067200000\n}\n```\n\n### payout.completed\n```json\n{\n  \"type\": \"payout.completed\",\n  \"data\": {\n    \"id\": \"tr_payout123\",\n    \"state\": \"completed\",\n    \"from\": {\n      \"rail\": \"polygon\",\n      \"id\": \"wal_source123\",\n      \"amount\": 100,\n      \"currency\": \"USDC\"\n    },\n    \"to\": {\n      \"rail\": \"fedwire\",\n      \"id\": \"racc_destination123\",\n      \"amount\": 99,\n      \"currency\": \"USD\"\n    }\n  },\n  \"createdAt\": 1704067200000\n}\n```\n\n`payout.updated`, `payout.failed`, and `payout.amount_adjusted` use the\nsame response-shaped payout payload. Amount adjustment events include\n`expectedAmount` and `receivedAmount` when known.\n"},{"name":"Rates","description":"Fetch live FX rates between supported fiat currencies"},{"name":"Spec","description":"API specifications and supported types"},{"name":"Shareholders","description":"Manage shareholders linked to business customers"},{"name":"Documents","description":"Manage documents for business customer KYB"},{"name":"Business Rails","description":"Discover business fiat rail states and create per-rail review applications."},{"name":"Rails","description":"Set up fiat rails for a customer. Check available rail and bank options, request rails, upload required documents, and track verification status."},{"name":"V2 Account Applications","description":"Apply for bank-scoped account capabilities and inspect application history before creating issued accounts."},{"name":"customers","x-displayName":"Customers","description":"Create, list, update, export, and archive individual and business customers and their related parties."},{"name":"capabilities","x-displayName":"Capabilities","description":"Discover, request, inspect, and cancel customer capabilities and their institution applications."},{"name":"accounts","x-displayName":"Accounts","description":"Create, inspect, update, and archive customer accounts."},{"name":"recipients","x-displayName":"Recipients","description":"Create third-party recipients and their payout destinations."},{"name":"Tasks","x-displayName":"Tasks","description":"Inspect customer, capability, application, account, and transfer tasks."},{"name":"Task submissions","x-displayName":"Task submissions","description":"Submit and inspect immutable answers to customer tasks."},{"name":"documents","x-displayName":"Documents","description":"Upload and inspect customer documents used in task submissions."},{"name":"money-movement","x-displayName":"Money movement","description":"Create quotes, execute quote-backed transfers, and inspect transfer state."},{"name":"rules","x-displayName":"Rules","description":"Standing instructions that act on incoming funds. A rule watches a custodial wallet account (`trigger`) and, when funds become available on it, transfers them to a target (`action`) — most commonly a sweep to a non-custodial wallet destination.\n\nRules match at the account credit, not at the deposit rail: fiat deposits settle into the issued bank account's settlement wallet account, so a rule on that wallet account catches ACH/SEPA/SWIFT deposits, stablecoin deposits, and internal transfers alike.\n\nThe action target reuses the money-movement vocabulary (`account` for the customer's own accounts, `destination` for recipient destinations). At most one non-archived rule may watch a given trigger account. Statuses: `active ⇄ paused → archived` — pause and resume through PATCH, archive (terminal) through DELETE."},{"name":"sandbox","x-displayName":"Sandbox","description":"Simulate supported account, task, capability, and transfer outcomes."},{"name":"institutions","x-displayName":"Institutions","description":"List institutions referenced by capabilities and applications."},{"name":"webhooks","x-displayName":"Webhooks","description":"Configure webhook endpoints and inspect delivery activity."},{"name":"Recipients","description":"Manage third-party recipients for customer payouts — link bank accounts and track recipient status"}],"x-tagGroups":[{"name":"API v3","tags":["customers","capabilities","Tasks","Task submissions","documents","institutions","accounts","recipients","money-movement","rules","sandbox","webhooks"]},{"name":"API v2 (beta)","description":"The beta v2 API models fiat connectivity around financial institution relationships and payment capabilities instead of rail-specific primitives. Start with a customer, discover supported institutions and payment methods, request the required account capabilities, manage issued or external accounts, submit documents, and create quotes and transfers through one consistent workflow. Account-scoped pay-in developer fees live on issued bank accounts in the Accounts surface, not on internal rails.","tags":["Customer","Bank","Account","V2 Account Applications","Document","Transfer"]},{"name":"API v1","tags":["Individual","Business","Shareholders","Documents","Business Rails","Rails","Wallets","Accounts","Recipients","Transfers","Pay-ins","Payin Quotes","Payouts","Payout Quotes","Rates","Sandbox","Webhooks","Spec"]}],"paths":{"/v1/customers":{"get":{"responses":{"200":{"description":"The customers were retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"customers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"A unique identifier for the customer"},"type":{"enum":["individual","business"],"description":"The type of customer: individual or business"},"firstName":{"type":"string","maxLength":1024,"description":"The first name of the customer"},"middleName":{"type":"string","maxLength":1024,"description":"The middle name of the customer"},"lastName":{"type":"string","maxLength":1024,"description":"The last name of the customer"},"legalName":{"anyOf":[{"type":"string","minLength":1,"maxLength":1024,"nullable":true}],"description":"The legal name of the business (for business customers)"},"website":{"anyOf":[{"type":"string","minLength":1,"maxLength":2048,"nullable":true}],"description":"The website URL of the business (for business customers)"},"email":{"anyOf":[{"enum":[""]},{"type":"string","format":"email"}],"description":"The primary email address of the customer"},"phone":{"anyOf":[{"enum":[""]},{"type":"string","minLength":1,"maxLength":32}],"description":"The primary phone value associated with the customer"},"taxId":{"anyOf":[{"type":"string","minLength":1,"maxLength":128,"nullable":true}],"description":"The customer's tax identifier. For Brazilian individuals, this must be CPF, not RG."},"taxIdCountry":{"anyOf":[{"type":"string","minLength":3,"maxLength":3,"nullable":true}],"description":"Three-letter ISO 3166-1 alpha-3 country code for the customer's tax identifier jurisdiction."},"taxIdType":{"anyOf":[{"type":"string","minLength":1,"maxLength":64,"nullable":true}],"description":"Tax identifier type, such as cpf, ssn, or itin."},"birthDate":{"anyOf":[{"type":"string","format":"date","nullable":true}],"description":"The date of birth of the customer in ISO 8601 format (YYYY-MM-DD)"},"residentialAddress":{"type":"object","properties":{"streetLine1":{"type":"string","minLength":1,"description":"Primary street address line"},"streetLine2":{"type":"string","minLength":1,"description":"Secondary street address line (optional)"},"city":{"type":"string","minLength":1,"description":"City name"},"state":{"type":"string","minLength":1,"description":"State or province"},"postalCode":{"type":"string","minLength":1,"description":"Postal or ZIP code (optional)"},"country":{"type":"string","minLength":3,"maxLength":3,"description":"Three-letter alpha-3 country code as defined in the ISO 3166-1 spec"}},"required":["streetLine1","city","state","country"],"description":"The residential address of the customer"},"country":{"anyOf":[{"type":"string","minLength":2,"maxLength":3,"nullable":true}],"description":"The country of the customer (ISO 3166-1 alpha-2 or alpha-3 code)"},"status":{"enum":["not_started","pending","approved","rejected"],"description":"KYC verification status. Values: not_started (KYC not initiated), pending (documents submitted, awaiting decision), approved, rejected."},"metadata":{"anyOf":[{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]},"nullable":true}],"description":"The provided metadata of the customer"},"balance":{"type":"number","description":"The total balance of the customer in USD"},"createdAt":{"type":"string","description":"The date and time the customer was created"},"updatedAt":{"type":"string","description":"The date and time the customer was last updated"}},"required":["id","type","email","status","createdAt","updatedAt"]}},"pagination":{"type":"object","properties":{"page":{"type":"number"},"limit":{"type":"number"},"total":{"type":"number"},"totalPages":{"type":"number"},"hasMore":{"type":"boolean"}},"required":["page","limit","total","totalPages","hasMore"]}},"required":["customers","pagination"]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Requested resource not found","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"getV1Customers","tags":["Individual"],"parameters":[{"in":"query","name":"page","schema":{"type":"integer","minimum":1,"description":"Page number for pagination (default: 1)"},"required":false},{"in":"query","name":"limit","schema":{"type":"integer","minimum":1,"maximum":100,"description":"Number of results per page (default: 50, max: 100)"},"required":false},{"in":"query","name":"email","schema":{"type":"string","minLength":1,"description":"Filter by customer email address"},"required":false},{"in":"query","name":"phone","schema":{"type":"string","minLength":1,"description":"Filter by customer phone number"},"required":false},{"in":"query","name":"customerId","schema":{"type":"string","minLength":1,"description":"Filter by specific customer ID"},"required":false},{"in":"query","name":"type","schema":{"enum":["individual","business"],"description":"Filter by customer type"},"required":false},{"in":"query","name":"status","schema":{"type":"string","minLength":1,"description":"Comma-separated verification statuses"},"required":false},{"in":"query","name":"country","schema":{"type":"string","minLength":2,"description":"Customer country/business jurisdiction"},"required":false},{"in":"query","name":"sort","schema":{"enum":["createdAt.desc","createdAt.asc"],"description":"Sort customers"},"required":false},{"in":"query","name":"createdFrom","schema":{"type":"string","format":"date","description":"Filter customers created on or after this date (ISO 8601)"},"required":false},{"in":"query","name":"createdTo","schema":{"type":"string","format":"date","description":"Filter customers created on or before this date (ISO 8601)"},"required":false},{"in":"query","name":"search","schema":{"type":"string","description":"Search by name, email, phone, or customer ID. Case-insensitive partial match."},"required":false}],"summary":"Get all customers","description":"Retrieve all customers for a merchant with pagination support"},"post":{"responses":{"200":{"description":"The customer was created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"A unique identifier for the customer"},"type":{"enum":["individual","business"],"description":"The type of customer: individual or business"},"firstName":{"type":"string","maxLength":1024,"description":"The first name of the customer"},"middleName":{"type":"string","maxLength":1024,"description":"The middle name of the customer"},"lastName":{"type":"string","maxLength":1024,"description":"The last name of the customer"},"legalName":{"anyOf":[{"type":"string","minLength":1,"maxLength":1024,"nullable":true}],"description":"The legal name of the business (for business customers)"},"website":{"anyOf":[{"type":"string","minLength":1,"maxLength":2048,"nullable":true}],"description":"The website URL of the business (for business customers)"},"email":{"anyOf":[{"enum":[""]},{"type":"string","format":"email"}],"description":"The primary email address of the customer"},"phone":{"anyOf":[{"enum":[""]},{"type":"string","minLength":1,"maxLength":32}],"description":"The primary phone value associated with the customer"},"taxId":{"anyOf":[{"type":"string","minLength":1,"maxLength":128,"nullable":true}],"description":"The customer's tax identifier. For Brazilian individuals, this must be CPF, not RG."},"taxIdCountry":{"anyOf":[{"type":"string","minLength":3,"maxLength":3,"nullable":true}],"description":"Three-letter ISO 3166-1 alpha-3 country code for the customer's tax identifier jurisdiction."},"taxIdType":{"anyOf":[{"type":"string","minLength":1,"maxLength":64,"nullable":true}],"description":"Tax identifier type, such as cpf, ssn, or itin."},"birthDate":{"anyOf":[{"type":"string","format":"date","nullable":true}],"description":"The date of birth of the customer in ISO 8601 format (YYYY-MM-DD)"},"residentialAddress":{"type":"object","properties":{"streetLine1":{"type":"string","minLength":1,"description":"Primary street address line"},"streetLine2":{"type":"string","minLength":1,"description":"Secondary street address line (optional)"},"city":{"type":"string","minLength":1,"description":"City name"},"state":{"type":"string","minLength":1,"description":"State or province"},"postalCode":{"type":"string","minLength":1,"description":"Postal or ZIP code (optional)"},"country":{"type":"string","minLength":3,"maxLength":3,"description":"Three-letter alpha-3 country code as defined in the ISO 3166-1 spec"}},"required":["streetLine1","city","state","country"],"description":"The residential address of the customer"},"country":{"anyOf":[{"type":"string","minLength":2,"maxLength":3,"nullable":true}],"description":"The country of the customer (ISO 3166-1 alpha-2 or alpha-3 code)"},"status":{"enum":["not_started","pending","approved","rejected"],"description":"KYC verification status. Values: not_started (KYC not initiated), pending (documents submitted, awaiting decision), approved, rejected."},"metadata":{"anyOf":[{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]},"nullable":true}],"description":"The provided metadata of the customer"},"balance":{"type":"number","description":"The total balance of the customer in USD"},"createdAt":{"type":"string","description":"The date and time the customer was created"},"updatedAt":{"type":"string","description":"The date and time the customer was last updated"}},"required":["id","type","email","status","createdAt","updatedAt"]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Requested resource not found","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"422":{"description":"Merchant KYB is not approved for this space. Customer creation is blocked until the compliance verdict approves the merchant's own business profile; on spaces that require KYB, creation is blocked as not_submitted until the merchant submits it. Sandbox spaces are never blocked."},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"postV1Customers","tags":["Individual"],"parameters":[],"summary":"Create individual customer","description":"Create a new individual customer. All profile fields are optional. For business customers, use POST /v1/customers/business instead.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"enum":["individual","business"],"description":"The type of customer: individual (default) or business"},"firstName":{"type":"string","minLength":1,"maxLength":100,"description":"The first name of the customer"},"middleName":{"type":"string","minLength":1,"maxLength":100,"description":"The middle name of the customer"},"lastName":{"type":"string","minLength":1,"maxLength":100,"description":"The last name of the customer"},"legalName":{"type":"string","minLength":1,"maxLength":1024,"description":"The legal name of the business (required when type is 'business')"},"website":{"type":"string","minLength":1,"maxLength":2048,"description":"The website URL of the customer (required for business customers)"},"email":{"type":"string","format":"email","description":"The primary email address of the customer"},"phone":{"type":"string","minLength":1,"maxLength":32,"description":"The primary phone number of the customer in E.164 format (e.g., +1234567890)"},"taxId":{"type":"string","minLength":1,"maxLength":128,"description":"The customer's tax identifier. For Brazilian individuals, this must be CPF, not RG."},"taxIdCountry":{"type":"string","minLength":3,"maxLength":3,"description":"Three-letter ISO 3166-1 alpha-3 country code for the customer's tax identifier jurisdiction."},"taxIdType":{"type":"string","minLength":1,"maxLength":64,"description":"Tax identifier type, such as cpf, ssn, or itin."},"metadata":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]},"description":"The provided metadata of the customer"},"birthDate":{"type":"string","format":"date","description":"The date of birth of the customer in ISO 8601 format (YYYY-MM-DD)"},"residentialAddress":{"type":"object","properties":{"streetLine1":{"type":"string","minLength":1,"description":"Primary street address line"},"streetLine2":{"type":"string","minLength":1,"description":"Secondary street address line (optional)"},"city":{"type":"string","minLength":1,"description":"City name"},"state":{"type":"string","minLength":1,"description":"State or province"},"postalCode":{"type":"string","minLength":1,"description":"Postal or ZIP code (optional)"},"country":{"type":"string","minLength":3,"maxLength":3,"description":"Three-letter alpha-3 country code as defined in the ISO 3166-1 spec"}},"required":["streetLine1","city","state","country"],"description":"The residential address of the customer"},"identifyingInformation":{"type":"array","items":{"type":"object","properties":{"type":{"enum":["drivers_license","passport","national_id"],"description":"The type of identifying information"},"issuingCountry":{"type":"string","minLength":3,"maxLength":3,"description":"Three-letter alpha-3 country code as defined in the ISO 3166-1 spec"},"frontSideImage":{"type":"string","description":"The base64 encoded data of the front side of the provided document"},"backSideImage":{"type":"string","description":"The base64 encoded data of the back side of the provided document"}},"required":["type","issuingCountry","frontSideImage"]},"description":"An array of identifying information for the customer"}},"required":[]}}}}}},"/v1/customers/balances":{"get":{"responses":{"200":{"description":"Customer balances were retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"balances":{"type":"array","items":{"type":"object","properties":{"customerId":{"type":"string","description":"Customer ID for this balance"},"balance":{"type":"number","description":"Total custodial wallet balance in USD"}},"required":["customerId","balance"]},"description":"Successfully fetched customer balances"}},"required":["balances"]}}}},"400":{"description":"customerIds is empty or contains more than 100 entries"},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"The API key does not have the balances:read permission"},"404":{"description":"Requested resource not found","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"getV1CustomersBalances","tags":["Individual"],"parameters":[{"in":"query","name":"customerIds","schema":{"type":"string","description":"Comma-separated customer IDs to total, from 1 to 100 entries"},"required":true}],"summary":"Get customer balances in a batch","description":"Returns live DFNS-backed USD totals for owned customers in the current merchant and space scope. Customers whose wallet balance cannot be fetched, and customer IDs outside the caller's scope, are omitted."}},"/v1/customers/{id}":{"get":{"responses":{"200":{"description":"The customer has been retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"A unique identifier for the customer"},"type":{"enum":["individual","business"],"description":"The type of customer: individual or business"},"firstName":{"type":"string","maxLength":1024,"description":"The first name of the customer"},"middleName":{"type":"string","maxLength":1024,"description":"The middle name of the customer"},"lastName":{"type":"string","maxLength":1024,"description":"The last name of the customer"},"legalName":{"anyOf":[{"type":"string","minLength":1,"maxLength":1024,"nullable":true}],"description":"The legal name of the business (for business customers)"},"website":{"anyOf":[{"type":"string","minLength":1,"maxLength":2048,"nullable":true}],"description":"The website URL of the business (for business customers)"},"email":{"anyOf":[{"enum":[""]},{"type":"string","format":"email"}],"description":"The primary email address of the customer"},"phone":{"anyOf":[{"enum":[""]},{"type":"string","minLength":1,"maxLength":32}],"description":"The primary phone value associated with the customer"},"taxId":{"anyOf":[{"type":"string","minLength":1,"maxLength":128,"nullable":true}],"description":"The customer's tax identifier. For Brazilian individuals, this must be CPF, not RG."},"taxIdCountry":{"anyOf":[{"type":"string","minLength":3,"maxLength":3,"nullable":true}],"description":"Three-letter ISO 3166-1 alpha-3 country code for the customer's tax identifier jurisdiction."},"taxIdType":{"anyOf":[{"type":"string","minLength":1,"maxLength":64,"nullable":true}],"description":"Tax identifier type, such as cpf, ssn, or itin."},"birthDate":{"anyOf":[{"type":"string","format":"date","nullable":true}],"description":"The date of birth of the customer in ISO 8601 format (YYYY-MM-DD)"},"residentialAddress":{"type":"object","properties":{"streetLine1":{"type":"string","minLength":1,"description":"Primary street address line"},"streetLine2":{"type":"string","minLength":1,"description":"Secondary street address line (optional)"},"city":{"type":"string","minLength":1,"description":"City name"},"state":{"type":"string","minLength":1,"description":"State or province"},"postalCode":{"type":"string","minLength":1,"description":"Postal or ZIP code (optional)"},"country":{"type":"string","minLength":3,"maxLength":3,"description":"Three-letter alpha-3 country code as defined in the ISO 3166-1 spec"}},"required":["streetLine1","city","state","country"],"description":"The residential address of the customer"},"country":{"anyOf":[{"type":"string","minLength":2,"maxLength":3,"nullable":true}],"description":"The country of the customer (ISO 3166-1 alpha-2 or alpha-3 code)"},"status":{"enum":["not_started","pending","approved","rejected"],"description":"KYC verification status. Values: not_started (KYC not initiated), pending (documents submitted, awaiting decision), approved, rejected."},"metadata":{"anyOf":[{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]},"nullable":true}],"description":"The provided metadata of the customer"},"balance":{"type":"number","description":"The total balance of the customer in USD"},"createdAt":{"type":"string","description":"The date and time the customer was created"},"updatedAt":{"type":"string","description":"The date and time the customer was last updated"}},"required":["id","type","email","status","createdAt","updatedAt"]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Requested resource not found","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"getV1CustomersById","tags":["Individual"],"parameters":[{"in":"path","name":"id","schema":{"type":"string","description":"The customer ID"},"required":true}],"summary":"Get a customer by ID","description":"Retrieve a customer by ID"},"put":{"responses":{"200":{"description":"The customer has been updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"A unique identifier for the customer"},"type":{"enum":["individual","business"],"description":"The type of customer: individual or business"},"firstName":{"type":"string","maxLength":1024,"description":"The first name of the customer"},"middleName":{"type":"string","maxLength":1024,"description":"The middle name of the customer"},"lastName":{"type":"string","maxLength":1024,"description":"The last name of the customer"},"legalName":{"anyOf":[{"type":"string","minLength":1,"maxLength":1024,"nullable":true}],"description":"The legal name of the business (for business customers)"},"website":{"anyOf":[{"type":"string","minLength":1,"maxLength":2048,"nullable":true}],"description":"The website URL of the business (for business customers)"},"email":{"anyOf":[{"enum":[""]},{"type":"string","format":"email"}],"description":"The primary email address of the customer"},"phone":{"anyOf":[{"enum":[""]},{"type":"string","minLength":1,"maxLength":32}],"description":"The primary phone value associated with the customer"},"taxId":{"anyOf":[{"type":"string","minLength":1,"maxLength":128,"nullable":true}],"description":"The customer's tax identifier. For Brazilian individuals, this must be CPF, not RG."},"taxIdCountry":{"anyOf":[{"type":"string","minLength":3,"maxLength":3,"nullable":true}],"description":"Three-letter ISO 3166-1 alpha-3 country code for the customer's tax identifier jurisdiction."},"taxIdType":{"anyOf":[{"type":"string","minLength":1,"maxLength":64,"nullable":true}],"description":"Tax identifier type, such as cpf, ssn, or itin."},"birthDate":{"anyOf":[{"type":"string","format":"date","nullable":true}],"description":"The date of birth of the customer in ISO 8601 format (YYYY-MM-DD)"},"residentialAddress":{"type":"object","properties":{"streetLine1":{"type":"string","minLength":1,"description":"Primary street address line"},"streetLine2":{"type":"string","minLength":1,"description":"Secondary street address line (optional)"},"city":{"type":"string","minLength":1,"description":"City name"},"state":{"type":"string","minLength":1,"description":"State or province"},"postalCode":{"type":"string","minLength":1,"description":"Postal or ZIP code (optional)"},"country":{"type":"string","minLength":3,"maxLength":3,"description":"Three-letter alpha-3 country code as defined in the ISO 3166-1 spec"}},"required":["streetLine1","city","state","country"],"description":"The residential address of the customer"},"country":{"anyOf":[{"type":"string","minLength":2,"maxLength":3,"nullable":true}],"description":"The country of the customer (ISO 3166-1 alpha-2 or alpha-3 code)"},"status":{"enum":["not_started","pending","approved","rejected"],"description":"KYC verification status. Values: not_started (KYC not initiated), pending (documents submitted, awaiting decision), approved, rejected."},"metadata":{"anyOf":[{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]},"nullable":true}],"description":"The provided metadata of the customer"},"balance":{"type":"number","description":"The total balance of the customer in USD"},"createdAt":{"type":"string","description":"The date and time the customer was created"},"updatedAt":{"type":"string","description":"The date and time the customer was last updated"}},"required":["id","type","email","status","createdAt","updatedAt"]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Requested resource not found","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"putV1CustomersById","tags":["Individual"],"parameters":[{"in":"path","name":"id","schema":{"type":"string","description":"The customer ID"},"required":true}],"summary":"Update individual customer","description":"Update an individual customer's information including name, email, phone, or KYC share token. For business customers, use PUT /v1/customers/business/:id instead.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"firstName":{"type":"string","minLength":1,"maxLength":100,"description":"The first name of the customer"},"middleName":{"type":"string","minLength":1,"maxLength":100,"description":"The middle name of the customer"},"lastName":{"type":"string","minLength":1,"maxLength":100,"description":"The last name of the customer"},"email":{"type":"string","format":"email","description":"The primary email address of the customer"},"phone":{"type":"string","minLength":1,"maxLength":32,"description":"The primary phone number of the customer in E.164 format"},"taxId":{"type":"string","minLength":1,"maxLength":128,"description":"The customer's tax identifier"},"taxIdCountry":{"type":"string","minLength":3,"maxLength":3,"description":"Three-letter ISO 3166-1 alpha-3 country code for the customer's tax identifier jurisdiction"},"taxIdType":{"type":"string","minLength":1,"maxLength":64,"description":"Tax identifier type, such as cpf, ssn, or itin"},"birthDate":{"type":"string","format":"date","description":"The date of birth of the customer in ISO 8601 format (YYYY-MM-DD)"},"residentialAddress":{"type":"object","properties":{"streetLine1":{"type":"string","minLength":1,"description":"Primary street address line"},"streetLine2":{"type":"string","minLength":1,"description":"Secondary street address line (optional)"},"city":{"type":"string","minLength":1,"description":"City name"},"state":{"type":"string","minLength":1,"description":"State or province"},"postalCode":{"type":"string","minLength":1,"description":"Postal or ZIP code (optional)"},"country":{"type":"string","minLength":3,"maxLength":3,"description":"Three-letter alpha-3 country code as defined in the ISO 3166-1 spec"}},"required":["streetLine1","city","state","country"],"description":"The residential address of the customer"},"type":{"type":"string","description":"DEPRECATED: Cannot change customer type via update. This parameter is rejected."}},"required":[]}}}}},"delete":{"responses":{"200":{"description":"The customer has been deleted successfully","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"A unique identifier for the customer"},"type":{"enum":["individual","business"],"description":"The type of customer: individual or business"},"firstName":{"type":"string","maxLength":1024,"description":"The first name of the customer"},"middleName":{"type":"string","maxLength":1024,"description":"The middle name of the customer"},"lastName":{"type":"string","maxLength":1024,"description":"The last name of the customer"},"legalName":{"anyOf":[{"type":"string","minLength":1,"maxLength":1024,"nullable":true}],"description":"The legal name of the business (for business customers)"},"website":{"anyOf":[{"type":"string","minLength":1,"maxLength":2048,"nullable":true}],"description":"The website URL of the business (for business customers)"},"email":{"anyOf":[{"enum":[""]},{"type":"string","format":"email"}],"description":"The primary email address of the customer"},"phone":{"anyOf":[{"enum":[""]},{"type":"string","minLength":1,"maxLength":32}],"description":"The primary phone value associated with the customer"},"taxId":{"anyOf":[{"type":"string","minLength":1,"maxLength":128,"nullable":true}],"description":"The customer's tax identifier. For Brazilian individuals, this must be CPF, not RG."},"taxIdCountry":{"anyOf":[{"type":"string","minLength":3,"maxLength":3,"nullable":true}],"description":"Three-letter ISO 3166-1 alpha-3 country code for the customer's tax identifier jurisdiction."},"taxIdType":{"anyOf":[{"type":"string","minLength":1,"maxLength":64,"nullable":true}],"description":"Tax identifier type, such as cpf, ssn, or itin."},"birthDate":{"anyOf":[{"type":"string","format":"date","nullable":true}],"description":"The date of birth of the customer in ISO 8601 format (YYYY-MM-DD)"},"residentialAddress":{"type":"object","properties":{"streetLine1":{"type":"string","minLength":1,"description":"Primary street address line"},"streetLine2":{"type":"string","minLength":1,"description":"Secondary street address line (optional)"},"city":{"type":"string","minLength":1,"description":"City name"},"state":{"type":"string","minLength":1,"description":"State or province"},"postalCode":{"type":"string","minLength":1,"description":"Postal or ZIP code (optional)"},"country":{"type":"string","minLength":3,"maxLength":3,"description":"Three-letter alpha-3 country code as defined in the ISO 3166-1 spec"}},"required":["streetLine1","city","state","country"],"description":"The residential address of the customer"},"country":{"anyOf":[{"type":"string","minLength":2,"maxLength":3,"nullable":true}],"description":"The country of the customer (ISO 3166-1 alpha-2 or alpha-3 code)"},"status":{"enum":["not_started","pending","approved","rejected"],"description":"KYC verification status. Values: not_started (KYC not initiated), pending (documents submitted, awaiting decision), approved, rejected."},"metadata":{"anyOf":[{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]},"nullable":true}],"description":"The provided metadata of the customer"},"balance":{"type":"number","description":"The total balance of the customer in USD"},"createdAt":{"type":"string","description":"The date and time the customer was created"},"updatedAt":{"type":"string","description":"The date and time the customer was last updated"}},"required":["id","type","email","status","createdAt","updatedAt"]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Requested resource not found","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"409":{"description":"Customer still holds custodial wallet funds. Transfer or withdraw the funds before deleting the customer."},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"503":{"description":"Customer wallet balances could not be verified because an upstream balance source is unavailable."}},"operationId":"deleteV1CustomersById","tags":["Individual"],"parameters":[{"in":"path","name":"id","schema":{"type":"string","description":"The customer ID"},"required":true}],"summary":"Delete individual customer","description":"Delete an individual customer and all associated wallets. The customer will no longer be retrievable through the API. For business customers, use DELETE /v1/customers/business/:id instead."}},"/v1/customers/{id}/balances":{"get":{"responses":{"200":{"description":"The balance has been retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"customerId":{"type":"string","description":"Customer ID from the request"},"totalBalance":{"type":"object","properties":{"amount":{"type":"string","description":"Total balance amount"},"currency":{"type":"string","description":"Base currency (e.g., USD)"}},"required":["amount","currency"],"description":"Total balance across all wallets"},"wallets":{"type":"array","items":{"type":"object","properties":{"walletId":{"type":"string","description":"Unique wallet identifier"},"network":{"type":"string","description":"Network the wallet is on"},"address":{"type":"string","description":"Wallet address on the network"},"balances":{"type":"array","items":{"type":"object","properties":{"currency":{"type":"string","description":"Currency/token symbol"},"amount":{"type":"string","description":"Balance amount"}},"required":["currency","amount"]},"description":"Token balances in this wallet"}},"required":["walletId","network","address","balances"]},"description":"Array of wallets owned by the customer"}},"required":["customerId","totalBalance","wallets"]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Requested resource not found","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"getV1CustomersByIdBalances","tags":["Wallets"],"parameters":[{"in":"path","name":"id","schema":{"type":"string","description":"The customer ID"},"required":true}],"summary":"Get customer balances","description":"Retrieve all wallet balances for a customer across all networks and tokens."}},"/v1/customers/{id}/kyc":{"post":{"responses":{"200":{"description":"KYC verification initiated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"verificationUrl":{"type":"string","description":"The URL where the customer can complete KYC verification"}},"required":["verificationUrl"]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Requested resource not found","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"postV1CustomersByIdKyc","tags":["Individual"],"parameters":[{"in":"path","name":"id","schema":{"type":"string","description":"The customer ID"},"required":true}],"summary":"Initiate KYC verification","description":"Initiates KYC verification for the customer. Omit level or use 'standard' for identity plus proof of address; use 'simplified' for the historical identity-only flow; use 'enhanced' for enhanced individual rails KYC. Creates a verification session and returns a URL where the customer can complete identity verification.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"level":{"type":"string","enum":["standard","simplified","enhanced"],"description":"KYC level to initiate. Defaults to standard when omitted."}}}}}}}},"/v1/customers/{id}/kyc/tokens/sumsub":{"post":{"responses":{"200":{"description":"Share token generated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"provider":{"description":"KYC provider that issued the token","enum":["sumsub"]},"token":{"type":"string","description":"One-time share token for importing the customer's KYC data"},"expiresAt":{"type":"number","description":"Unix timestamp (seconds) when the token expires"}},"required":["provider","token","expiresAt"]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Requested resource not found","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"422":{"description":"Customer KYC is not approved"},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"502":{"description":"Sumsub API error"},"503":{"description":"KYC service is not configured"}},"operationId":"postV1CustomersByIdKycTokensSumsub","tags":["Individual"],"parameters":[{"in":"path","name":"id","schema":{"type":"string","description":"The customer ID"},"required":true}],"summary":"Generate Sumsub KYC share token","description":"Generates a one-time Sumsub share token that allows the merchant to import the customer's approved KYC data into their own Sumsub account. The merchant must provide their Sumsub clientId as `forClientId`.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"forClientId":{"type":"string","description":"The merchant's Sumsub clientId to scope the share token to"}},"required":["forClientId"]}}}}}},"/v1/customers/{id}/kyc/import":{"post":{"responses":{"200":{"description":"KYC data imported and customer auto-approved","content":{"application/json":{"schema":{"type":"object","properties":{"applicantId":{"type":"string","description":"The imported SumSub applicant ID"},"status":{"description":"The resulting KYC verification status","enum":["approved"]}},"required":["applicantId","status"]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Customer not found"},"409":{"description":"Customer already has approved KYC"},"422":{"description":"Imported applicant is not approved"},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"502":{"description":"SumSub API error"},"503":{"description":"KYC service is not configured"}},"operationId":"postV1CustomersByIdKycImport","tags":["Individual"],"parameters":[{"in":"path","name":"id","schema":{"type":"string","description":"The customer ID"},"required":true}],"summary":"Import KYC via share token","description":"Imports a customer's KYC data from another merchant using a SumSub share token. If the imported applicant is approved, the customer is auto-approved immediately and their verified PII is updated from the imported data.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"provider":{"description":"The KYC provider (currently only 'sumsub' is supported)","enum":["sumsub"]},"importToken":{"type":"string","minLength":1,"description":"The share token received from another merchant's approved customer"}},"required":["provider","importToken"]}}}}}},"/v1/customers/{id}/simulate-transactions":{"post":{"responses":{"200":{"description":"Sandbox pay-in simulation applied","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Pay-in transfer ID"},"type":{"description":"Always payin for this endpoint","enum":["payin"]},"state":{"enum":["completed","failed"],"description":"Simulated terminal state"},"amount":{"type":"string","description":"Received amount used for simulation"},"destination_amount":{"type":"string","description":"Destination amount credited to the wallet transfer"},"to":{"type":"object","properties":{"wallet":{"type":"string"},"identifier":{"type":"string"}},"required":["wallet","identifier"]},"onchain_url":{"type":"string","description":"Explorer-style URL returned for completed sandbox simulations."}},"required":["id","type","state","amount","to"]}}}},"400":{"description":"Validation, non-sandbox, or already-terminal rejection"},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Live API key or pay-in not found for this customer"},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"postV1CustomersByIdSimulate-transactions","tags":["Customers","Sandbox"],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"summary":"Simulate a sandbox customer pay-in terminal event","description":"Sandbox-only endpoint for moving an existing customer pay-in to COMPLETED or FAILED. To use sandbox simulation, first create a sandbox workspace in Swipelux at https://swipelux.app, then issue an API key from that workspace; sandbox keys are marked with `sbx`. COMPLETED credits the sandbox wallet and emits the same pay-in and transfer webhooks as a real settlement. FAILED emits the failure webhooks. No real funds move.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"description":"Only PAYIN simulation is supported in Phase 1.","enum":["PAYIN"]},"payin_id":{"type":"string","pattern":"^tr_[a-zA-Z0-9]+$","description":"Pay-in transfer ID (tr_xxx) to settle."},"asset":{"type":"string"},"network":{"type":"string"},"amount":{"type":"string","pattern":"^[+-]?(?:\\d*\\.)?\\d+$"},"simulate_status":{"enum":["COMPLETED","FAILED"]},"reference_code":{"type":"string"}},"required":["type","payin_id","simulate_status"]}}}}}},"/v1/customers/{customerId}/wallets":{"post":{"responses":{"200":{"description":"Wallets created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"wallets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"The wallet identifier"},"chain":{"type":"string","description":"The blockchain network (e.g., 'base', 'polygon')"},"address":{"type":"string","description":"The wallet address"},"type":{"anyOf":[{"enum":["custodial"]},{"enum":["external"]}],"description":"The type of wallet: 'custodial' (managed) or 'external' (imported)"},"createdAt":{"type":"string","description":"The date and time the wallet was created"}},"required":["id","chain"]},"description":"Array of created wallets"}},"required":["wallets"]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Requested resource not found","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"409":{"description":"Customer requires a developer-space assignment"},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"postV1CustomersByCustomerIdWallets","tags":["Wallets"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"customerId","required":true}],"summary":"Create wallets for a customer","description":"Create one or more wallets for a customer on specified blockchain networks","requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","required":["chains"],"properties":{"chains":{"type":"array","minItems":1,"description":"Blockchain networks supported for wallet creation.","items":{"type":"string","enum":["polygon","ethereum","base","arbitrum","optimism","bsc","avalanche"]}}}},{"type":"object","required":["chain"],"properties":{"chain":{"type":"string","description":"Blockchain network supported for wallet creation.","enum":["polygon","ethereum","base","arbitrum","optimism","bsc","avalanche"]}}}]}}}}},"get":{"responses":{"200":{"description":"Customer wallets retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"wallets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"The wallet identifier"},"chain":{"type":"string","description":"The blockchain network (e.g., 'base', 'polygon')"},"address":{"type":"string","description":"The wallet address"},"type":{"anyOf":[{"enum":["custodial"]},{"enum":["external"]}],"description":"The type of wallet: 'custodial' (managed) or 'external' (imported)"},"createdAt":{"type":"string","description":"The date and time the wallet was created"}},"required":["id","chain"]},"description":"Array of customer wallets"}},"required":["wallets"]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Customer not found"},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"getV1CustomersByCustomerIdWallets","tags":["Wallets"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"customerId","required":true}],"summary":"List customer wallets","description":"Get all wallets for a specific customer (both custodial and imported)"}},"/v1/customers/{customerId}/wallets/import":{"post":{"responses":{"200":{"description":"Wallet imported successfully","content":{"application/json":{"schema":{"type":"object","properties":{"wallet":{"type":"object","properties":{"id":{"type":"string","description":"The wallet identifier"},"chain":{"type":"string","description":"The blockchain network (e.g., 'base', 'polygon')"},"address":{"type":"string","description":"The wallet address"},"type":{"anyOf":[{"enum":["custodial"]},{"enum":["external"]}],"description":"The type of wallet: 'custodial' (managed) or 'external' (imported)"},"createdAt":{"type":"string","description":"The date and time the wallet was created"}},"required":["id","chain"],"description":"The imported wallet"}},"required":["wallet"]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Requested resource not found","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"409":{"description":"Customer requires a developer-space assignment"},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"postV1CustomersByCustomerIdWalletsImport","tags":["Wallets"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"customerId","required":true}],"summary":"Import an external wallet for a customer","description":"Import a non-custodial wallet address for a customer to receive funds","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"chain":{"type":"string","description":"The blockchain network (e.g., 'base', 'polygon')"},"address":{"type":"string","description":"The wallet address to import"}},"required":["chain","address"]}}}}}},"/v1/customers/{customerId}/wallets/{walletId}":{"get":{"responses":{"200":{"description":"Wallet details retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"The wallet identifier"},"chain":{"type":"string","description":"The blockchain network"},"address":{"type":"string","description":"The wallet address"},"type":{"anyOf":[{"enum":["custodial"]},{"enum":["external"]}],"description":"The type of wallet"},"balances":{"type":"array","items":{"type":"object","properties":{"currency":{"type":"string","description":"Currency/token symbol"},"amount":{"type":"string","description":"Balance amount"}},"required":["currency","amount"]},"description":"Token balances in this wallet"},"createdAt":{"type":"string","description":"The date and time the wallet was created"}},"required":["id","chain","address","type","balances","createdAt"]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Requested resource not found","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"getV1CustomersByCustomerIdWalletsByWalletId","tags":["Wallets"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"customerId","required":true},{"schema":{"type":"string"},"in":"path","name":"walletId","required":true}],"summary":"Get wallet details with balance","description":"Get detailed information about a specific wallet including current on-chain balance."},"delete":{"responses":{"200":{"description":"Wallet deleted successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"Whether the wallet was deleted"},"message":{"type":"string","description":"Status message"}},"required":["success","message"]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Wallet not found"},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"deleteV1CustomersByCustomerIdWalletsByWalletId","tags":["Wallets"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"customerId","required":true},{"schema":{"type":"string"},"in":"path","name":"walletId","required":true}],"summary":"Delete a customer wallet","description":"Delete a specific wallet for a customer. This permanently removes the wallet and its associated keys."}},"/v1/customers/{customerId}/accounts":{"get":{"responses":{"200":{"description":"Accounts retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"accounts":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","description":"Unique account identifier"},"customerId":{"type":"string","description":"Customer ID"},"type":{"description":"Account type: SEPA for European wire transfers","enum":["sepa"]},"source":{"enum":["virtual","external"],"description":"Account source: 'virtual' for Swipelux-issued, 'external' for imported"},"status":{"description":"SEPA account operations are temporarily unavailable; bank details remain readable for compatibility.","enum":["temporarily_unsupported"]},"statusReason":{"type":"string","description":"Public reason for the account status"},"iban":{"type":"string","description":"IBAN number"},"bic":{"type":"string","description":"BIC/SWIFT code"},"bankName":{"type":"string","description":"Bank name"},"bankAddress":{"type":"string","description":"Bank address"},"accountHolderName":{"type":"string","description":"Account holder name"},"label":{"type":"string","description":"Optional label for the account"},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code"},"currency":{"type":"string","description":"ISO 4217 currency code"},"paymentReference":{"anyOf":[{"type":"string","nullable":true}],"description":"Reference to include in the wire memo so deposits route to this virtual account (virtual accounts only)."},"targetWallet":{"anyOf":[{"type":"string","nullable":true}],"description":"Target wallet ID (wal_xxx) where funds will be delivered (virtual accounts only)"},"createdAt":{"type":"string","description":"Account creation timestamp"},"updatedAt":{"type":"string","description":"Account last update timestamp"}},"required":["id","customerId","type","source","iban","currency","paymentReference","targetWallet","createdAt","updatedAt"]},{"type":"object","properties":{"id":{"type":"string","description":"Unique account identifier"},"customerId":{"type":"string","description":"Customer ID"},"type":{"description":"Account type: SWIFT for international wire transfers","enum":["swift"]},"source":{"enum":["virtual","external"],"description":"Account source: 'virtual' for Swipelux-issued, 'external' for imported"},"swiftCode":{"type":"string","description":"SWIFT/BIC code"},"accountNumber":{"type":"string","description":"Bank account number"},"bankName":{"type":"string","description":"Bank name"},"bankAddress":{"type":"string","description":"Bank address"},"accountHolderName":{"type":"string","description":"Account holder name"},"routingNumber":{"type":"string","description":"ABA routing number (US)"},"intermediaryBankSwift":{"type":"string","description":"Intermediary bank SWIFT code"},"intermediaryBankName":{"type":"string","description":"Intermediary bank name"},"intermediaryBankAddress":{"type":"string","description":"Intermediary bank address"},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code"},"currency":{"type":"string","description":"ISO 4217 currency code"},"paymentReference":{"anyOf":[{"type":"string","nullable":true}],"description":"Reference to include in the wire memo so deposits route to this virtual account (virtual accounts only)."},"targetWallet":{"anyOf":[{"type":"string","nullable":true}],"description":"Target wallet ID (wal_xxx) where funds will be delivered (virtual accounts only)"},"label":{"anyOf":[{"type":"string","nullable":true}],"description":"Optional label for the account"},"createdAt":{"type":"string","description":"Account creation timestamp"},"updatedAt":{"type":"string","description":"Account last update timestamp"}},"required":["id","customerId","type","source","swiftCode","accountNumber","bankName","accountHolderName","country","currency","paymentReference","targetWallet","label","createdAt","updatedAt"]},{"type":"object","properties":{"id":{"type":"string","description":"Unique account identifier"},"customerId":{"type":"string","description":"Customer ID"},"type":{"description":"Account type: ACH for US bank transfers","enum":["ach"]},"source":{"enum":["virtual","external"],"description":"Account source: 'virtual' for Swipelux-issued, 'external' for imported"},"routingNumber":{"type":"string","description":"ABA routing number (9 digits)"},"accountNumber":{"type":"string","description":"Bank account number"},"accountType":{"type":"string","description":"Account type (checking or savings)"},"bankName":{"type":"string","description":"Bank name"},"bankAddress":{"type":"string","description":"Bank address"},"accountHolderName":{"type":"string","description":"Account holder name"},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code"},"currency":{"type":"string","description":"ISO 4217 currency code"},"paymentReference":{"anyOf":[{"type":"string","nullable":true}],"description":"Reference to include in the wire memo so deposits route to this virtual account (virtual accounts only)."},"targetWallet":{"anyOf":[{"type":"string","nullable":true}],"description":"Target wallet ID (wal_xxx) where funds will be delivered (virtual accounts only)"},"label":{"type":"string","description":"Optional label for the account"},"createdAt":{"type":"string","description":"Account creation timestamp"},"updatedAt":{"type":"string","description":"Account last update timestamp"}},"required":["id","customerId","type","source","routingNumber","accountNumber","accountType","bankName","accountHolderName","country","currency","paymentReference","targetWallet","createdAt","updatedAt"]}]}}},"required":["accounts"]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Requested resource not found","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"getV1CustomersByCustomerIdAccounts","tags":["Accounts"],"parameters":[{"in":"path","name":"customerId","schema":{"type":"string"},"required":true}],"summary":"List customer bank accounts","description":"Get all bank accounts for a customer, including SEPA, SWIFT, and ACH accounts."},"post":{"responses":{"200":{"description":"Virtual account created successfully","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","description":"Unique account identifier"},"customerId":{"type":"string","description":"Customer ID"},"type":{"description":"Account type: SEPA for European wire transfers","enum":["sepa"]},"source":{"enum":["virtual","external"],"description":"Account source: 'virtual' for Swipelux-issued, 'external' for imported"},"status":{"description":"SEPA account operations are temporarily unavailable; bank details remain readable for compatibility.","enum":["temporarily_unsupported"]},"statusReason":{"type":"string","description":"Public reason for the account status"},"iban":{"type":"string","description":"IBAN number"},"bic":{"type":"string","description":"BIC/SWIFT code"},"bankName":{"type":"string","description":"Bank name"},"bankAddress":{"type":"string","description":"Bank address"},"accountHolderName":{"type":"string","description":"Account holder name"},"label":{"type":"string","description":"Optional label for the account"},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code"},"currency":{"type":"string","description":"ISO 4217 currency code"},"paymentReference":{"anyOf":[{"type":"string","nullable":true}],"description":"Reference to include in the wire memo so deposits route to this virtual account (virtual accounts only)."},"targetWallet":{"anyOf":[{"type":"string","nullable":true}],"description":"Target wallet ID (wal_xxx) where funds will be delivered (virtual accounts only)"},"createdAt":{"type":"string","description":"Account creation timestamp"},"updatedAt":{"type":"string","description":"Account last update timestamp"}},"required":["id","customerId","type","source","iban","currency","paymentReference","targetWallet","createdAt","updatedAt"]},{"type":"object","properties":{"id":{"type":"string","description":"Unique account identifier"},"customerId":{"type":"string","description":"Customer ID"},"type":{"description":"Account type: SWIFT for international wire transfers","enum":["swift"]},"source":{"enum":["virtual","external"],"description":"Account source: 'virtual' for Swipelux-issued, 'external' for imported"},"swiftCode":{"type":"string","description":"SWIFT/BIC code"},"accountNumber":{"type":"string","description":"Bank account number"},"bankName":{"type":"string","description":"Bank name"},"bankAddress":{"type":"string","description":"Bank address"},"accountHolderName":{"type":"string","description":"Account holder name"},"routingNumber":{"type":"string","description":"ABA routing number (US)"},"intermediaryBankSwift":{"type":"string","description":"Intermediary bank SWIFT code"},"intermediaryBankName":{"type":"string","description":"Intermediary bank name"},"intermediaryBankAddress":{"type":"string","description":"Intermediary bank address"},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code"},"currency":{"type":"string","description":"ISO 4217 currency code"},"paymentReference":{"anyOf":[{"type":"string","nullable":true}],"description":"Reference to include in the wire memo so deposits route to this virtual account (virtual accounts only)."},"targetWallet":{"anyOf":[{"type":"string","nullable":true}],"description":"Target wallet ID (wal_xxx) where funds will be delivered (virtual accounts only)"},"label":{"anyOf":[{"type":"string","nullable":true}],"description":"Optional label for the account"},"createdAt":{"type":"string","description":"Account creation timestamp"},"updatedAt":{"type":"string","description":"Account last update timestamp"}},"required":["id","customerId","type","source","swiftCode","accountNumber","bankName","accountHolderName","country","currency","paymentReference","targetWallet","label","createdAt","updatedAt"]},{"type":"object","properties":{"id":{"type":"string","description":"Unique account identifier"},"customerId":{"type":"string","description":"Customer ID"},"type":{"description":"Account type: ACH for US bank transfers","enum":["ach"]},"source":{"enum":["virtual","external"],"description":"Account source: 'virtual' for Swipelux-issued, 'external' for imported"},"routingNumber":{"type":"string","description":"ABA routing number (9 digits)"},"accountNumber":{"type":"string","description":"Bank account number"},"accountType":{"type":"string","description":"Account type (checking or savings)"},"bankName":{"type":"string","description":"Bank name"},"bankAddress":{"type":"string","description":"Bank address"},"accountHolderName":{"type":"string","description":"Account holder name"},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code"},"currency":{"type":"string","description":"ISO 4217 currency code"},"paymentReference":{"anyOf":[{"type":"string","nullable":true}],"description":"Reference to include in the wire memo so deposits route to this virtual account (virtual accounts only)."},"targetWallet":{"anyOf":[{"type":"string","nullable":true}],"description":"Target wallet ID (wal_xxx) where funds will be delivered (virtual accounts only)"},"label":{"type":"string","description":"Optional label for the account"},"createdAt":{"type":"string","description":"Account creation timestamp"},"updatedAt":{"type":"string","description":"Account last update timestamp"}},"required":["id","customerId","type","source","routingNumber","accountNumber","accountType","bankName","accountHolderName","country","currency","paymentReference","targetWallet","createdAt","updatedAt"]}]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Requested resource not found","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"409":{"description":"Required rail is not ready for this customer. Response includes `code: \"rail_not_ready\"`, `rail`, `requiredRails`, and `requestRailEndpoint` so the caller can surface the right verification step."},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"postV1CustomersByCustomerIdAccounts","tags":["Accounts"],"parameters":[{"in":"path","name":"customerId","schema":{"type":"string"},"required":true}],"summary":"Create virtual bank account","description":"Create a virtual bank account for a customer. This endpoint is idempotent - if a virtual account already exists for the same customer and currency, the existing account is returned.\n\nSee [Supported Payment Rails](/v1/meta/rails) for the full list of accepted `type` values.\n\n**Required Fields:**\n- `country`: ISO 3166-1 alpha-2 country code (e.g., \"DE\", \"US\")\n- `currency`: ISO 4217 currency code (e.g., \"EUR\", \"USD\", \"GBP\")\n- `targetWallet`: Wallet ID (wal_xxx) where funds will be delivered. Must be a custodial wallet belonging to the customer.\n\n**Verification Requirement:** Individual customers must have approved KYC. A business customer's KYB status gates account access only when that customer is the live space's designated merchant; end-customer business KYB is informational.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"enum":["sepa","swift","ach","fedwire","pix","wire"]},"country":{"type":"string","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code"},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"ISO 4217 currency code (e.g., EUR, USD, GBP)"},"targetWallet":{"type":"string","description":"Target wallet ID (wal_xxx) where funds will be delivered. Must be a custodial wallet."},"label":{"type":"string","minLength":1,"maxLength":255,"description":"Optional human-readable label for the account."}},"required":["type","country","currency","targetWallet"]}}}}}},"/v1/customers/{customerId}/accounts/import":{"post":{"responses":{"200":{"description":"External account imported successfully","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","description":"Unique account identifier"},"customerId":{"type":"string","description":"Customer ID"},"type":{"description":"Account type: SEPA for European wire transfers","enum":["sepa"]},"source":{"enum":["virtual","external"],"description":"Account source: 'virtual' for Swipelux-issued, 'external' for imported"},"status":{"description":"SEPA account operations are temporarily unavailable; bank details remain readable for compatibility.","enum":["temporarily_unsupported"]},"statusReason":{"type":"string","description":"Public reason for the account status"},"iban":{"type":"string","description":"IBAN number"},"bic":{"type":"string","description":"BIC/SWIFT code"},"bankName":{"type":"string","description":"Bank name"},"bankAddress":{"type":"string","description":"Bank address"},"accountHolderName":{"type":"string","description":"Account holder name"},"label":{"type":"string","description":"Optional label for the account"},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code"},"currency":{"type":"string","description":"ISO 4217 currency code"},"paymentReference":{"anyOf":[{"type":"string","nullable":true}],"description":"Reference to include in the wire memo so deposits route to this virtual account (virtual accounts only)."},"targetWallet":{"anyOf":[{"type":"string","nullable":true}],"description":"Target wallet ID (wal_xxx) where funds will be delivered (virtual accounts only)"},"createdAt":{"type":"string","description":"Account creation timestamp"},"updatedAt":{"type":"string","description":"Account last update timestamp"}},"required":["id","customerId","type","source","iban","currency","paymentReference","targetWallet","createdAt","updatedAt"]},{"type":"object","properties":{"id":{"type":"string","description":"Unique account identifier"},"customerId":{"type":"string","description":"Customer ID"},"type":{"description":"Account type: SWIFT for international wire transfers","enum":["swift"]},"source":{"enum":["virtual","external"],"description":"Account source: 'virtual' for Swipelux-issued, 'external' for imported"},"swiftCode":{"type":"string","description":"SWIFT/BIC code"},"accountNumber":{"type":"string","description":"Bank account number"},"bankName":{"type":"string","description":"Bank name"},"bankAddress":{"type":"string","description":"Bank address"},"accountHolderName":{"type":"string","description":"Account holder name"},"routingNumber":{"type":"string","description":"ABA routing number (US)"},"intermediaryBankSwift":{"type":"string","description":"Intermediary bank SWIFT code"},"intermediaryBankName":{"type":"string","description":"Intermediary bank name"},"intermediaryBankAddress":{"type":"string","description":"Intermediary bank address"},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code"},"currency":{"type":"string","description":"ISO 4217 currency code"},"paymentReference":{"anyOf":[{"type":"string","nullable":true}],"description":"Reference to include in the wire memo so deposits route to this virtual account (virtual accounts only)."},"targetWallet":{"anyOf":[{"type":"string","nullable":true}],"description":"Target wallet ID (wal_xxx) where funds will be delivered (virtual accounts only)"},"label":{"anyOf":[{"type":"string","nullable":true}],"description":"Optional label for the account"},"createdAt":{"type":"string","description":"Account creation timestamp"},"updatedAt":{"type":"string","description":"Account last update timestamp"}},"required":["id","customerId","type","source","swiftCode","accountNumber","bankName","accountHolderName","country","currency","paymentReference","targetWallet","label","createdAt","updatedAt"]},{"type":"object","properties":{"id":{"type":"string","description":"Unique account identifier"},"customerId":{"type":"string","description":"Customer ID"},"type":{"description":"Account type: ACH for US bank transfers","enum":["ach"]},"source":{"enum":["virtual","external"],"description":"Account source: 'virtual' for Swipelux-issued, 'external' for imported"},"routingNumber":{"type":"string","description":"ABA routing number (9 digits)"},"accountNumber":{"type":"string","description":"Bank account number"},"accountType":{"type":"string","description":"Account type (checking or savings)"},"bankName":{"type":"string","description":"Bank name"},"bankAddress":{"type":"string","description":"Bank address"},"accountHolderName":{"type":"string","description":"Account holder name"},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code"},"currency":{"type":"string","description":"ISO 4217 currency code"},"paymentReference":{"anyOf":[{"type":"string","nullable":true}],"description":"Reference to include in the wire memo so deposits route to this virtual account (virtual accounts only)."},"targetWallet":{"anyOf":[{"type":"string","nullable":true}],"description":"Target wallet ID (wal_xxx) where funds will be delivered (virtual accounts only)"},"label":{"type":"string","description":"Optional label for the account"},"createdAt":{"type":"string","description":"Account creation timestamp"},"updatedAt":{"type":"string","description":"Account last update timestamp"}},"required":["id","customerId","type","source","routingNumber","accountNumber","accountType","bankName","accountHolderName","country","currency","paymentReference","targetWallet","createdAt","updatedAt"]}]}}}},"400":{"description":"Malformed bank-account details, including invalid SWIFT/BIC or ABA routing identifiers."},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Requested resource not found","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"409":{"description":"Required rail is not ready for this customer. Response includes `code: \"rail_not_ready\"`, `rail`, `requiredRails`, and `requestRailEndpoint` so the caller can surface the right verification step."},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"postV1CustomersByCustomerIdAccountsImport","tags":["Accounts"],"parameters":[{"in":"path","name":"customerId","schema":{"type":"string"},"required":true}],"summary":"Import external bank account","description":"Import a customer's external bank account for payouts.\n\nSee [Supported Payment Rails](/v1/meta/rails) for the full list of accepted `type` values.\n\n**Account Holder Name:** Required. Pass the legal name on the external bank account exactly as the bank holds it. May differ from the customer's registered name (officer, treasury entity, third-party account). Mismatches cause the bank to return SWIFT/ACH wires, so the value is taken verbatim from the request — never substituted from the customer record. Omitting `accountHolderName` returns 400.\n\n**SEPA Required Fields:**\n- `iban`: International Bank Account Number (15-34 characters)\n- `accountHolderName`: Legal name on the account (1-255 chars)\n- `country`: ISO 3166-1 alpha-2 country code\n- `currency`: ISO 4217 currency code\n\n**SWIFT Required Fields:**\n- `swiftCode`: SWIFT/BIC code (8-11 characters)\n- `accountNumber`: Bank account number\n- `bankName`: Name of the bank\n- `accountHolderName`: Legal name on the account (1-255 chars)\n- `country`: ISO 3166-1 alpha-2 country code\n- `currency`: ISO 4217 currency code\n\n**ACH Required Fields:**\n- `routingNumber`: ABA routing number (exactly 9 digits)\n- `accountNumber`: Bank account number\n- `bankName`: Name of the bank\n- `accountHolderName`: Legal name on the account (1-255 chars)\n- `country`: ISO 3166-1 alpha-2 country code\n- `currency`: ISO 4217 currency code\n\n**Optional SWIFT Fields:**\n- `bankAddress`: Full bank address\n- `routingNumber`: ABA routing number (US banks, 9 digits)\n- `intermediaryBankSwift`: Intermediary bank SWIFT code\n- `intermediaryBankName`: Intermediary bank name\n- `intermediaryBankAddress`: Intermediary bank address\n\n**Optional ACH Fields:**\n- `accountType`: Account type (`checking` or `savings`, defaults to `checking`)\n- `bankAddress`: Full bank address\n\n**Validation Precedence:** Malformed SWIFT/BIC and ABA routing identifiers return 400 before rail readiness is evaluated. A well-formed request whose rail is unavailable returns 409 `rail_not_ready`.\n\n**Verification Requirement:** Individual customers must have approved KYC. A business customer's KYB status gates account access only when that customer is the live space's designated merchant; end-customer business KYB is informational.","requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"type":{"enum":["sepa"]},"iban":{"type":"string","minLength":15,"maxLength":34},"bic":{"type":"string","minLength":8,"maxLength":11,"description":"Optional 8-11-character SWIFT/BIC identifying the bank that holds the destination SEPA account."},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255,"description":"Legal name on the external bank account, exactly as the bank holds it. Required: must match the bank's records or the wire/ACH will be returned. May differ from the customer's registered name (officer, treasury entity, third party)."},"country":{"type":"string","minLength":2,"maxLength":2},"currency":{"type":"string","minLength":3,"maxLength":3}},"required":["type","iban","accountHolderName","country","currency"]},{"type":"object","properties":{"type":{"enum":["swift"]},"swiftCode":{"type":"string","minLength":8,"maxLength":11,"pattern":"^(?:\\s*[A-Za-z]){6}(?:\\s*[A-Za-z0-9]){2}(?:(?:\\s*[A-Za-z0-9]){3})?\\s*$","description":"8- or 11-character SWIFT/BIC identifying the beneficiary bank that holds the destination account."},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"bankName":{"type":"string","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","minLength":1,"maxLength":255,"description":"Legal name on the external bank account, exactly as the bank holds it. Required: must match the bank's records or the wire/ACH will be returned. May differ from the customer's registered name (officer, treasury entity, third party)."},"country":{"type":"string","minLength":2,"maxLength":2},"currency":{"type":"string","minLength":3,"maxLength":3},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"routingNumber":{"type":"string","minLength":9,"maxLength":9,"pattern":"^[0-9]{9}$","description":"Optional nine-digit ABA routing number for the beneficiary bank when the SWIFT payment uses U.S. domestic routing."},"intermediaryBankSwift":{"type":"string","minLength":8,"maxLength":11,"pattern":"^(?:\\s*[A-Za-z]){6}(?:\\s*[A-Za-z0-9]){2}(?:(?:\\s*[A-Za-z0-9]){3})?\\s*$","description":"8- or 11-character SWIFT/BIC identifying the intermediary bank used to route the payment to the beneficiary bank."},"intermediaryBankName":{"type":"string","minLength":1,"maxLength":255},"intermediaryBankAddress":{"type":"string","minLength":1,"maxLength":512},"label":{"type":"string","minLength":1,"maxLength":255}},"required":["type","swiftCode","accountNumber","bankName","accountHolderName","country","currency"]},{"type":"object","properties":{"type":{"enum":["ach"]},"routingNumber":{"type":"string","minLength":9,"maxLength":9,"pattern":"^[0-9]{9}$","description":"Nine-digit ABA routing number identifying the destination bank for ACH transfers."},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"accountType":{"enum":["checking","savings"],"description":"Account type, defaults to 'checking'","default":"checking"},"bankName":{"type":"string","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","minLength":1,"maxLength":255,"description":"Legal name on the external bank account, exactly as the bank holds it. Required: must match the bank's records or the wire/ACH will be returned. May differ from the customer's registered name (officer, treasury entity, third party)."},"country":{"type":"string","minLength":2,"maxLength":2},"currency":{"type":"string","minLength":3,"maxLength":3},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"label":{"type":"string","minLength":1,"maxLength":255}},"required":["type","routingNumber","accountNumber","bankName","accountHolderName","country","currency"]},{"type":"object","properties":{"type":{"enum":["fedwire"]},"routingNumber":{"type":"string","minLength":9,"maxLength":9,"pattern":"^[0-9]{9}$","description":"Nine-digit ABA routing number identifying the destination bank for Fedwire transfers."},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"accountType":{"enum":["checking","savings"],"description":"Account type, defaults to 'checking'","default":"checking"},"bankName":{"type":"string","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","minLength":1,"maxLength":255,"description":"Legal name on the external bank account, exactly as the bank holds it. Required: must match the bank's records or the wire/ACH will be returned. May differ from the customer's registered name (officer, treasury entity, third party)."},"country":{"type":"string","minLength":2,"maxLength":2},"currency":{"type":"string","minLength":3,"maxLength":3},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"label":{"type":"string","minLength":1,"maxLength":255}},"required":["type","routingNumber","accountNumber","bankName","accountHolderName","country","currency"]},{"type":"object","properties":{"type":{"enum":["pix","wire"]}},"required":["type"]}]}}}}}},"/v1/customers/{customerId}/accounts/{accountId}":{"get":{"responses":{"200":{"description":"Account retrieved successfully","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","description":"Unique account identifier"},"customerId":{"type":"string","description":"Customer ID"},"type":{"description":"Account type: SEPA for European wire transfers","enum":["sepa"]},"source":{"enum":["virtual","external"],"description":"Account source: 'virtual' for Swipelux-issued, 'external' for imported"},"status":{"description":"SEPA account operations are temporarily unavailable; bank details remain readable for compatibility.","enum":["temporarily_unsupported"]},"statusReason":{"type":"string","description":"Public reason for the account status"},"iban":{"type":"string","description":"IBAN number"},"bic":{"type":"string","description":"BIC/SWIFT code"},"bankName":{"type":"string","description":"Bank name"},"bankAddress":{"type":"string","description":"Bank address"},"accountHolderName":{"type":"string","description":"Account holder name"},"label":{"type":"string","description":"Optional label for the account"},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code"},"currency":{"type":"string","description":"ISO 4217 currency code"},"paymentReference":{"anyOf":[{"type":"string","nullable":true}],"description":"Reference to include in the wire memo so deposits route to this virtual account (virtual accounts only)."},"targetWallet":{"anyOf":[{"type":"string","nullable":true}],"description":"Target wallet ID (wal_xxx) where funds will be delivered (virtual accounts only)"},"createdAt":{"type":"string","description":"Account creation timestamp"},"updatedAt":{"type":"string","description":"Account last update timestamp"}},"required":["id","customerId","type","source","iban","currency","paymentReference","targetWallet","createdAt","updatedAt"]},{"type":"object","properties":{"id":{"type":"string","description":"Unique account identifier"},"customerId":{"type":"string","description":"Customer ID"},"type":{"description":"Account type: SWIFT for international wire transfers","enum":["swift"]},"source":{"enum":["virtual","external"],"description":"Account source: 'virtual' for Swipelux-issued, 'external' for imported"},"swiftCode":{"type":"string","description":"SWIFT/BIC code"},"accountNumber":{"type":"string","description":"Bank account number"},"bankName":{"type":"string","description":"Bank name"},"bankAddress":{"type":"string","description":"Bank address"},"accountHolderName":{"type":"string","description":"Account holder name"},"routingNumber":{"type":"string","description":"ABA routing number (US)"},"intermediaryBankSwift":{"type":"string","description":"Intermediary bank SWIFT code"},"intermediaryBankName":{"type":"string","description":"Intermediary bank name"},"intermediaryBankAddress":{"type":"string","description":"Intermediary bank address"},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code"},"currency":{"type":"string","description":"ISO 4217 currency code"},"paymentReference":{"anyOf":[{"type":"string","nullable":true}],"description":"Reference to include in the wire memo so deposits route to this virtual account (virtual accounts only)."},"targetWallet":{"anyOf":[{"type":"string","nullable":true}],"description":"Target wallet ID (wal_xxx) where funds will be delivered (virtual accounts only)"},"label":{"anyOf":[{"type":"string","nullable":true}],"description":"Optional label for the account"},"createdAt":{"type":"string","description":"Account creation timestamp"},"updatedAt":{"type":"string","description":"Account last update timestamp"}},"required":["id","customerId","type","source","swiftCode","accountNumber","bankName","accountHolderName","country","currency","paymentReference","targetWallet","label","createdAt","updatedAt"]},{"type":"object","properties":{"id":{"type":"string","description":"Unique account identifier"},"customerId":{"type":"string","description":"Customer ID"},"type":{"description":"Account type: ACH for US bank transfers","enum":["ach"]},"source":{"enum":["virtual","external"],"description":"Account source: 'virtual' for Swipelux-issued, 'external' for imported"},"routingNumber":{"type":"string","description":"ABA routing number (9 digits)"},"accountNumber":{"type":"string","description":"Bank account number"},"accountType":{"type":"string","description":"Account type (checking or savings)"},"bankName":{"type":"string","description":"Bank name"},"bankAddress":{"type":"string","description":"Bank address"},"accountHolderName":{"type":"string","description":"Account holder name"},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code"},"currency":{"type":"string","description":"ISO 4217 currency code"},"paymentReference":{"anyOf":[{"type":"string","nullable":true}],"description":"Reference to include in the wire memo so deposits route to this virtual account (virtual accounts only)."},"targetWallet":{"anyOf":[{"type":"string","nullable":true}],"description":"Target wallet ID (wal_xxx) where funds will be delivered (virtual accounts only)"},"label":{"type":"string","description":"Optional label for the account"},"createdAt":{"type":"string","description":"Account creation timestamp"},"updatedAt":{"type":"string","description":"Account last update timestamp"}},"required":["id","customerId","type","source","routingNumber","accountNumber","accountType","bankName","accountHolderName","country","currency","paymentReference","targetWallet","createdAt","updatedAt"]}]}}}},"400":{"description":"Invalid account ID. Passing a rail id (`cfr_*`) returns `code: \"invalid_account_id\"`."},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Requested resource not found","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"getV1CustomersByCustomerIdAccountsByAccountId","tags":["Accounts"],"parameters":[{"in":"path","name":"customerId","schema":{"type":"string"},"required":true},{"in":"path","name":"accountId","schema":{"type":"string"},"required":true}],"summary":"Get bank account by ID","description":"Retrieve a specific bank account by its ID."},"delete":{"responses":{"200":{"description":"Account deleted successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}}}},"400":{"description":"Invalid account ID. Passing a rail id (`cfr_*`) returns `code: \"invalid_account_id\"`."},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Account not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"deleteV1CustomersByCustomerIdAccountsByAccountId","tags":["Accounts"],"parameters":[{"in":"path","name":"customerId","schema":{"type":"string"},"required":true},{"in":"path","name":"accountId","schema":{"type":"string"},"required":true}],"summary":"Delete bank account","description":"Permanently delete a bank account by its ID. This works for both virtual (platform-issued) and external (imported) accounts.\n\n**Important Notes:**\n- Deleting an account does NOT affect any historical transfers that referenced the account\n- For virtual accounts, the IBAN/account number will no longer be usable for deposits\n- This action cannot be undone\n\n**Webhook:** An `account.deleted` webhook event is sent upon successful deletion."}},"/v1/customers/business":{"post":{"responses":{"200":{"description":"Business customer data created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Customer ID (cus_xxx)"},"verificationStatus":{"enum":["pending","approved","rejected"],"description":"KYB verification status for business customers. Values: pending (awaiting document review), approved (KYB approved), rejected (KYB rejected). Note: This differs from individual customer KYC statuses (not_started, under_review, etc.) - business customers start with 'pending' upon creation."},"firstName":{"type":"string"},"middleName":{"anyOf":[{"type":"string","nullable":true}]},"lastName":{"anyOf":[{"type":"string","nullable":true}]},"birthDate":{"anyOf":[{"type":"string","format":"date","nullable":true}]},"email":{"anyOf":[{"type":"string","nullable":true}]},"phone":{"anyOf":[{"type":"string","nullable":true}]},"jurisdiction":{"anyOf":[{"type":"string","nullable":true}]},"entityType":{"anyOf":[{"type":"string","nullable":true}]},"entityTypeDescription":{"anyOf":[{"type":"string","nullable":true}]},"entityName":{"anyOf":[{"type":"string","nullable":true}]},"tradeName":{"anyOf":[{"type":"string","nullable":true}]},"registrationNumber":{"anyOf":[{"type":"string","nullable":true}]},"incorporationDate":{"anyOf":[{"type":"string","format":"date","nullable":true}]},"taxNumber":{"anyOf":[{"type":"string","nullable":true}]},"businessDescription":{"anyOf":[{"type":"string","nullable":true}]},"industryType":{"anyOf":[{"type":"string","nullable":true}]},"industryTypeDescription":{"anyOf":[{"type":"string","nullable":true}]},"naicsCode":{"anyOf":[{"type":"string","nullable":true}]},"websites":{"anyOf":[{"type":"array","items":{"type":"string"},"nullable":true}]},"phoneNumber":{"anyOf":[{"type":"string","nullable":true}]},"addressCountry":{"anyOf":[{"type":"string","nullable":true}]},"streetAddress":{"anyOf":[{"type":"string","nullable":true}]},"addressLine2":{"anyOf":[{"type":"string","nullable":true}]},"city":{"anyOf":[{"type":"string","nullable":true}]},"state":{"anyOf":[{"type":"string","nullable":true}]},"zip":{"anyOf":[{"type":"string","nullable":true}]},"sourceOfFunds":{"anyOf":[{"type":"string","nullable":true}]},"sourceOfFundsExplanation":{"anyOf":[{"type":"string","nullable":true}]},"expectedMonthlyVolumeUsd":{"anyOf":[{"type":"number","nullable":true}]},"accountPurpose":{"anyOf":[{"type":"string","nullable":true}]},"purposeOfAccountDescription":{"anyOf":[{"type":"string","nullable":true}]},"flowOfFundsDescription":{"anyOf":[{"type":"string","nullable":true}]},"sanctionedCountryOperations":{"anyOf":[{"type":"boolean","nullable":true}],"description":"Does the business operate in sanctioned countries"},"highRiskActivities":{"anyOf":[{"type":"array","items":{"type":"string"},"nullable":true}],"description":"Array of high-risk activities"},"operatingCountries":{"anyOf":[{"type":"array","items":{"type":"string"},"nullable":true}],"description":"Array of countries where business operates (ISO 3166-1 alpha-2). Check against sanctioned countries: Cuba (CU), Iran (IR), Myanmar (MM), North Korea (KP), Syria (SY)"},"handlesCustomerFunds":{"anyOf":[{"type":"boolean","nullable":true}],"description":"Does business handle or move customer funds (money transmission disclosure)"},"complianceScreeningDescription":{"anyOf":[{"type":"string","nullable":true}],"description":"Description of compliance screening procedures (required if handlesCustomerFunds is true)"},"estimatedAnnualRevenue":{"anyOf":[{"type":"number","nullable":true}],"description":"Estimated annual revenue in USD"},"balance":{"type":"number","description":"Total balance in USD"},"createdAt":{"anyOf":[{"type":"string","nullable":true}]},"updatedAt":{"anyOf":[{"type":"string","nullable":true}]}},"required":["id","verificationStatus"]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Requested resource not found","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"422":{"description":"Merchant KYB is not approved for this space. Customer creation is blocked until the compliance verdict approves the merchant's own business profile; on spaces that require KYB, creation is blocked as not_submitted until the merchant submits it. Sandbox spaces are never blocked."},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"postV1CustomersBusiness","tags":["Business"],"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"firstName":{"type":"string","minLength":1,"description":"First name of the primary contact"},"lastName":{"type":"string","minLength":1,"description":"Last name of the primary contact"},"email":{"type":"string","format":"email","description":"Email address of the primary contact"},"entityName":{"type":"string","minLength":1,"description":"Legal entity name"},"jurisdiction":{"type":"string","minLength":2,"description":"Country of jurisdiction (ISO 3166-1 alpha-2)"},"websites":{"type":"array","items":{"type":"string","format":"uri"},"description":"Array of business website URLs"},"phoneNumber":{"type":"string","minLength":1,"description":"Business phone number"},"middleName":{"anyOf":[{"type":"string","nullable":true}],"description":"Middle name"},"birthDate":{"anyOf":[{"type":"string","format":"date","nullable":true}],"description":"Birth date (YYYY-MM-DD)"},"phone":{"anyOf":[{"type":"string","nullable":true}],"description":"Phone number"},"entityType":{"anyOf":[{"enum":["llc","corporation","s_corporation","c_corporation","partnership","limited_partnership","sole_proprietorship","nonprofit","trust","cooperative","dao","foundation","other"],"nullable":true}],"description":"Type of business entity: llc, corporation, s_corporation, c_corporation, partnership, limited_partnership, sole_proprietorship, nonprofit, trust, cooperative, other"},"entityTypeDescription":{"anyOf":[{"type":"string","nullable":true}],"description":"Custom entity type description (when entityType is 'Other')"},"tradeName":{"anyOf":[{"type":"string","nullable":true}],"description":"Business trade name / DBA"},"registrationNumber":{"anyOf":[{"type":"string","nullable":true}],"description":"Business registration number"},"incorporationDate":{"anyOf":[{"type":"string","format":"date","nullable":true}],"description":"Date of incorporation (YYYY-MM-DD)"},"taxNumber":{"anyOf":[{"type":"string","nullable":true}],"description":"Tax identification number"},"businessDescription":{"anyOf":[{"type":"string","minLength":10,"nullable":true}],"description":"Description of business activities"},"industryType":{"anyOf":[{"enum":["technology","finance","healthcare","retail","e_commerce","manufacturing","real_estate","consulting","hospitality","education","transportation","entertainment","agriculture","construction","professional_services","crypto_web3","other"],"nullable":true}],"description":"NAICS-aligned industry type: technology, finance, healthcare, retail, e_commerce, manufacturing, real_estate, consulting, hospitality, education, transportation, entertainment, agriculture, construction, professional_services, crypto_web3, other"},"industryTypeDescription":{"anyOf":[{"type":"string","nullable":true}],"description":"Custom industry type description (when industryType is 'other')"},"businessType":{"anyOf":[{"enum":["technology","finance","healthcare","retail","e_commerce","manufacturing","real_estate","consulting","hospitality","education","transportation","entertainment","agriculture","construction","professional_services","crypto_web3","other"],"nullable":true}],"description":"Alias for industryType (backward compatibility)"},"businessTypeDescription":{"anyOf":[{"type":"string","nullable":true}],"description":"Alias for industryTypeDescription (backward compatibility)"},"naicsCode":{"anyOf":[{"type":"string","minLength":2,"maxLength":6,"nullable":true}],"description":"NAICS industry classification code (2-6 digits)"},"addressCountry":{"anyOf":[{"type":"string","minLength":2,"nullable":true}],"description":"Country (ISO 3166-1 alpha-2)"},"streetAddress":{"anyOf":[{"type":"string","minLength":1,"nullable":true}],"description":"Street address"},"addressLine2":{"anyOf":[{"type":"string","nullable":true}],"description":"Address line 2"},"city":{"anyOf":[{"type":"string","minLength":1,"nullable":true}],"description":"City"},"state":{"anyOf":[{"type":"string","nullable":true}],"description":"State or province"},"zip":{"anyOf":[{"type":"string","minLength":1,"nullable":true}],"description":"ZIP or postal code"},"sourceOfFunds":{"anyOf":[{"enum":["business_revenue","investment","loan","personal_savings","third_party_funds","grant","other"],"nullable":true}],"description":"Source of funds: business_revenue, investment, loan, personal_savings, third_party_funds, grant, other"},"sourceOfFundsExplanation":{"anyOf":[{"type":"string","nullable":true}],"description":"Detailed explanation of the source of funds"},"expectedMonthlyVolumeUsd":{"anyOf":[{"type":"number","minimum":0,"nullable":true}],"description":"Expected monthly transaction volume in USD"},"accountPurpose":{"anyOf":[{"enum":["operations","payroll","vendor_payments","investment","treasury_management","international_transfers","other"],"nullable":true}],"description":"Purpose of the account: operations, payroll, vendor_payments, investment, treasury_management, international_transfers, other"},"purposeOfAccountDescription":{"anyOf":[{"type":"string","nullable":true}],"description":"Detailed description of the account's intended purpose"},"purposeOfFunds":{"anyOf":[{"enum":["operations","payroll","vendor_payments","investment","treasury_management","international_transfers","other"],"nullable":true}],"description":"Alias for accountPurpose (backward compatibility)"},"purposeOfFundsDescription":{"anyOf":[{"type":"string","nullable":true}],"description":"Alias for purposeOfAccountDescription (backward compatibility)"},"flowOfFundsDescription":{"anyOf":[{"type":"string","minLength":10,"nullable":true}],"description":"Description of how funds flow through the business"},"sanctionedCountryOperations":{"anyOf":[{"type":"boolean","nullable":true}],"description":"Does the business operate in sanctioned countries"},"highRiskActivities":{"anyOf":[{"type":"array","items":{"type":"string"},"nullable":true}],"description":"Array of high-risk activities the business engages in"},"operatingCountries":{"anyOf":[{"type":"array","items":{"type":"string","minLength":2,"maxLength":2},"nullable":true}],"description":"Array of countries where business operates (ISO 3166-1 alpha-2)"},"handlesCustomerFunds":{"anyOf":[{"type":"boolean","nullable":true}],"description":"Does business handle/move customer funds"},"complianceScreeningDescription":{"anyOf":[{"type":"string","nullable":true}],"description":"Description of compliance screening procedures"},"estimatedAnnualRevenue":{"anyOf":[{"type":"number","minimum":0,"nullable":true}],"description":"Estimated annual revenue in USD"}},"required":["firstName","lastName","email","entityName"]}}}},"summary":"Create business customer","description":"Create a new business customer with minimal required information. Required fields: firstName, lastName, email, and entityName. Additional details (jurisdiction, websites, phone number, address, financials, risk assessment) can be added later via PUT /:id. Shareholders should be managed via PUT /:id/shareholders. KYB verification is automatically initiated when required documents are uploaded."}},"/v1/customers/business/{id}":{"get":{"responses":{"200":{"description":"Business customer retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Customer ID (cus_xxx)"},"verificationStatus":{"enum":["pending","approved","rejected"],"description":"KYB verification status for business customers. Values: pending (awaiting document review), approved (KYB approved), rejected (KYB rejected). Note: This differs from individual customer KYC statuses (not_started, under_review, etc.) - business customers start with 'pending' upon creation."},"firstName":{"type":"string"},"middleName":{"anyOf":[{"type":"string","nullable":true}]},"lastName":{"anyOf":[{"type":"string","nullable":true}]},"birthDate":{"anyOf":[{"type":"string","format":"date","nullable":true}]},"email":{"anyOf":[{"type":"string","nullable":true}]},"phone":{"anyOf":[{"type":"string","nullable":true}]},"jurisdiction":{"anyOf":[{"type":"string","nullable":true}]},"entityType":{"anyOf":[{"type":"string","nullable":true}]},"entityTypeDescription":{"anyOf":[{"type":"string","nullable":true}]},"entityName":{"anyOf":[{"type":"string","nullable":true}]},"tradeName":{"anyOf":[{"type":"string","nullable":true}]},"registrationNumber":{"anyOf":[{"type":"string","nullable":true}]},"incorporationDate":{"anyOf":[{"type":"string","format":"date","nullable":true}]},"taxNumber":{"anyOf":[{"type":"string","nullable":true}]},"businessDescription":{"anyOf":[{"type":"string","nullable":true}]},"industryType":{"anyOf":[{"type":"string","nullable":true}]},"industryTypeDescription":{"anyOf":[{"type":"string","nullable":true}]},"naicsCode":{"anyOf":[{"type":"string","nullable":true}]},"websites":{"anyOf":[{"type":"array","items":{"type":"string"},"nullable":true}]},"phoneNumber":{"anyOf":[{"type":"string","nullable":true}]},"addressCountry":{"anyOf":[{"type":"string","nullable":true}]},"streetAddress":{"anyOf":[{"type":"string","nullable":true}]},"addressLine2":{"anyOf":[{"type":"string","nullable":true}]},"city":{"anyOf":[{"type":"string","nullable":true}]},"state":{"anyOf":[{"type":"string","nullable":true}]},"zip":{"anyOf":[{"type":"string","nullable":true}]},"sourceOfFunds":{"anyOf":[{"type":"string","nullable":true}]},"sourceOfFundsExplanation":{"anyOf":[{"type":"string","nullable":true}]},"expectedMonthlyVolumeUsd":{"anyOf":[{"type":"number","nullable":true}]},"accountPurpose":{"anyOf":[{"type":"string","nullable":true}]},"purposeOfAccountDescription":{"anyOf":[{"type":"string","nullable":true}]},"flowOfFundsDescription":{"anyOf":[{"type":"string","nullable":true}]},"sanctionedCountryOperations":{"anyOf":[{"type":"boolean","nullable":true}],"description":"Does the business operate in sanctioned countries"},"highRiskActivities":{"anyOf":[{"type":"array","items":{"type":"string"},"nullable":true}],"description":"Array of high-risk activities"},"operatingCountries":{"anyOf":[{"type":"array","items":{"type":"string"},"nullable":true}],"description":"Array of countries where business operates (ISO 3166-1 alpha-2). Check against sanctioned countries: Cuba (CU), Iran (IR), Myanmar (MM), North Korea (KP), Syria (SY)"},"handlesCustomerFunds":{"anyOf":[{"type":"boolean","nullable":true}],"description":"Does business handle or move customer funds (money transmission disclosure)"},"complianceScreeningDescription":{"anyOf":[{"type":"string","nullable":true}],"description":"Description of compliance screening procedures (required if handlesCustomerFunds is true)"},"estimatedAnnualRevenue":{"anyOf":[{"type":"number","nullable":true}],"description":"Estimated annual revenue in USD"},"balance":{"type":"number","description":"Total balance in USD"},"createdAt":{"anyOf":[{"type":"string","nullable":true}]},"updatedAt":{"anyOf":[{"type":"string","nullable":true}]}},"required":["id","verificationStatus"]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Customer not found or is not a business customer"},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"getV1CustomersBusinessById","tags":["Business"],"parameters":[{"in":"path","name":"id","schema":{"type":"string","description":"The customer ID"},"required":true}],"summary":"Get business customer by ID","description":"Retrieve a business customer by their customer ID. Returns business customer data. Use GET /:id/shareholders and GET /:id/documents for related resources."},"put":{"responses":{"200":{"description":"Business customer updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Customer ID (cus_xxx)"},"verificationStatus":{"enum":["pending","approved","rejected"],"description":"KYB verification status for business customers. Values: pending (awaiting document review), approved (KYB approved), rejected (KYB rejected). Note: This differs from individual customer KYC statuses (not_started, under_review, etc.) - business customers start with 'pending' upon creation."},"firstName":{"type":"string"},"middleName":{"anyOf":[{"type":"string","nullable":true}]},"lastName":{"anyOf":[{"type":"string","nullable":true}]},"birthDate":{"anyOf":[{"type":"string","format":"date","nullable":true}]},"email":{"anyOf":[{"type":"string","nullable":true}]},"phone":{"anyOf":[{"type":"string","nullable":true}]},"jurisdiction":{"anyOf":[{"type":"string","nullable":true}]},"entityType":{"anyOf":[{"type":"string","nullable":true}]},"entityTypeDescription":{"anyOf":[{"type":"string","nullable":true}]},"entityName":{"anyOf":[{"type":"string","nullable":true}]},"tradeName":{"anyOf":[{"type":"string","nullable":true}]},"registrationNumber":{"anyOf":[{"type":"string","nullable":true}]},"incorporationDate":{"anyOf":[{"type":"string","format":"date","nullable":true}]},"taxNumber":{"anyOf":[{"type":"string","nullable":true}]},"businessDescription":{"anyOf":[{"type":"string","nullable":true}]},"industryType":{"anyOf":[{"type":"string","nullable":true}]},"industryTypeDescription":{"anyOf":[{"type":"string","nullable":true}]},"naicsCode":{"anyOf":[{"type":"string","nullable":true}]},"websites":{"anyOf":[{"type":"array","items":{"type":"string"},"nullable":true}]},"phoneNumber":{"anyOf":[{"type":"string","nullable":true}]},"addressCountry":{"anyOf":[{"type":"string","nullable":true}]},"streetAddress":{"anyOf":[{"type":"string","nullable":true}]},"addressLine2":{"anyOf":[{"type":"string","nullable":true}]},"city":{"anyOf":[{"type":"string","nullable":true}]},"state":{"anyOf":[{"type":"string","nullable":true}]},"zip":{"anyOf":[{"type":"string","nullable":true}]},"sourceOfFunds":{"anyOf":[{"type":"string","nullable":true}]},"sourceOfFundsExplanation":{"anyOf":[{"type":"string","nullable":true}]},"expectedMonthlyVolumeUsd":{"anyOf":[{"type":"number","nullable":true}]},"accountPurpose":{"anyOf":[{"type":"string","nullable":true}]},"purposeOfAccountDescription":{"anyOf":[{"type":"string","nullable":true}]},"flowOfFundsDescription":{"anyOf":[{"type":"string","nullable":true}]},"sanctionedCountryOperations":{"anyOf":[{"type":"boolean","nullable":true}],"description":"Does the business operate in sanctioned countries"},"highRiskActivities":{"anyOf":[{"type":"array","items":{"type":"string"},"nullable":true}],"description":"Array of high-risk activities"},"operatingCountries":{"anyOf":[{"type":"array","items":{"type":"string"},"nullable":true}],"description":"Array of countries where business operates (ISO 3166-1 alpha-2). Check against sanctioned countries: Cuba (CU), Iran (IR), Myanmar (MM), North Korea (KP), Syria (SY)"},"handlesCustomerFunds":{"anyOf":[{"type":"boolean","nullable":true}],"description":"Does business handle or move customer funds (money transmission disclosure)"},"complianceScreeningDescription":{"anyOf":[{"type":"string","nullable":true}],"description":"Description of compliance screening procedures (required if handlesCustomerFunds is true)"},"estimatedAnnualRevenue":{"anyOf":[{"type":"number","nullable":true}],"description":"Estimated annual revenue in USD"},"balance":{"type":"number","description":"Total balance in USD"},"createdAt":{"anyOf":[{"type":"string","nullable":true}]},"updatedAt":{"anyOf":[{"type":"string","nullable":true}]}},"required":["id","verificationStatus"]}}}},"400":{"description":"Customer is not a business type"},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Customer not found"},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"putV1CustomersBusinessById","tags":["Business"],"parameters":[{"in":"path","name":"id","schema":{"type":"string","description":"The customer ID"},"required":true}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"firstName":{"type":"string","minLength":1},"middleName":{"anyOf":[{"type":"string","nullable":true}]},"lastName":{"type":"string","minLength":1},"birthDate":{"anyOf":[{"type":"string","format":"date","nullable":true}]},"email":{"type":"string","format":"email"},"phone":{"anyOf":[{"type":"string","nullable":true}]},"jurisdiction":{"type":"string","minLength":2},"entityType":{"enum":["llc","corporation","s_corporation","c_corporation","partnership","limited_partnership","sole_proprietorship","nonprofit","trust","cooperative","dao","foundation","other"]},"entityTypeDescription":{"anyOf":[{"type":"string","nullable":true}]},"entityName":{"type":"string","minLength":1},"tradeName":{"anyOf":[{"type":"string","nullable":true}]},"registrationNumber":{"anyOf":[{"type":"string","nullable":true}]},"incorporationDate":{"anyOf":[{"type":"string","format":"date","nullable":true}]},"taxNumber":{"anyOf":[{"type":"string","nullable":true}]},"businessDescription":{"type":"string","minLength":10},"industryType":{"enum":["technology","finance","healthcare","retail","e_commerce","manufacturing","real_estate","consulting","hospitality","education","transportation","entertainment","agriculture","construction","professional_services","crypto_web3","other"]},"industryTypeDescription":{"anyOf":[{"type":"string","nullable":true}]},"businessType":{"enum":["technology","finance","healthcare","retail","e_commerce","manufacturing","real_estate","consulting","hospitality","education","transportation","entertainment","agriculture","construction","professional_services","crypto_web3","other"]},"businessTypeDescription":{"anyOf":[{"type":"string","nullable":true}]},"naicsCode":{"anyOf":[{"type":"string","minLength":2,"maxLength":6,"nullable":true}]},"websites":{"anyOf":[{"type":"array","items":{"type":"string","format":"uri"},"nullable":true}]},"phoneNumber":{"anyOf":[{"type":"string","nullable":true}]},"addressCountry":{"type":"string","minLength":2},"streetAddress":{"type":"string","minLength":1},"addressLine2":{"anyOf":[{"type":"string","nullable":true}]},"city":{"type":"string","minLength":1},"state":{"anyOf":[{"type":"string","nullable":true}]},"zip":{"type":"string","minLength":1},"sourceOfFunds":{"enum":["business_revenue","investment","loan","personal_savings","third_party_funds","grant","other"]},"sourceOfFundsExplanation":{"anyOf":[{"type":"string","nullable":true}]},"expectedMonthlyVolumeUsd":{"type":"number","minimum":0},"accountPurpose":{"enum":["operations","payroll","vendor_payments","investment","treasury_management","international_transfers","other"]},"purposeOfAccountDescription":{"anyOf":[{"type":"string","nullable":true}]},"purposeOfFunds":{"enum":["operations","payroll","vendor_payments","investment","treasury_management","international_transfers","other"]},"purposeOfFundsDescription":{"anyOf":[{"type":"string","nullable":true}]},"flowOfFundsDescription":{"type":"string","minLength":10},"sanctionedCountryOperations":{"type":"boolean"},"highRiskActivities":{"type":"array","items":{"type":"string"}},"operatingCountries":{"anyOf":[{"type":"array","items":{"type":"string","minLength":2,"maxLength":2},"nullable":true}]},"handlesCustomerFunds":{"anyOf":[{"type":"boolean","nullable":true}]},"complianceScreeningDescription":{"anyOf":[{"type":"string","nullable":true}]},"estimatedAnnualRevenue":{"anyOf":[{"type":"number","minimum":0,"nullable":true}]}},"required":[]}}}},"summary":"Update business customer","description":"Update an existing business customer's information. All fields are optional - only provided fields will be updated."},"delete":{"responses":{"200":{"description":"Business customer deleted successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"customerId":{"type":"string"}},"required":["success","message","customerId"]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Customer not found"},"409":{"description":"Customer still holds custodial wallet funds. Transfer or withdraw the funds before deleting the customer."},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"503":{"description":"Customer wallet balances could not be verified because an upstream balance source is unavailable."}},"operationId":"deleteV1CustomersBusinessById","tags":["Business"],"parameters":[{"in":"path","name":"id","schema":{"type":"string","description":"The customer ID"},"required":true}],"summary":"Delete business customer","description":"Delete a business customer. The customer will no longer be retrievable through the API. Creating a new customer with the same email or phone number will be allowed after deletion."}},"/v1/customers/business/{businessCustomerId}/shareholders":{"post":{"responses":{"201":{"description":"Shareholder created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"status":{"enum":["pending","approved","rejected"]},"firstName":{"anyOf":[{"type":"string","nullable":true}]},"lastName":{"anyOf":[{"type":"string","nullable":true}]},"birthDate":{"anyOf":[{"type":"string","nullable":true}]},"email":{"anyOf":[{"type":"string","nullable":true}]},"phone":{"anyOf":[{"type":"string","nullable":true}]},"title":{"anyOf":[{"type":"string","nullable":true}]},"ownershipPercentage":{"anyOf":[{"type":"number","nullable":true}]},"hasControl":{"type":"boolean"},"isSigner":{"type":"boolean"},"isDirector":{"type":"boolean"},"address":{"type":"object","properties":{"country":{"anyOf":[{"type":"string","nullable":true}]},"streetAddress":{"anyOf":[{"type":"string","nullable":true}]},"city":{"anyOf":[{"type":"string","nullable":true}]},"zip":{"anyOf":[{"type":"string","nullable":true}]}},"required":["country","streetAddress","city","zip"]},"identityDocument":{"type":"object","properties":{"type":{"anyOf":[{"type":"string","nullable":true}]},"issuingCountry":{"anyOf":[{"type":"string","nullable":true}]},"number":{"anyOf":[{"type":"string","nullable":true}]}},"required":["type","issuingCountry","number"]},"ssn":{"anyOf":[{"type":"string","nullable":true}]},"itin":{"anyOf":[{"type":"string","nullable":true}]},"attestedOwnershipStructureAt":{"anyOf":[{"type":"string","nullable":true}]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","status","firstName","lastName","birthDate","email","phone","title","ownershipPercentage","hasControl","isSigner","isDirector","address","ssn","itin","attestedOwnershipStructureAt","createdAt","updatedAt"]}}}},"400":{"description":"Invalid request"},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Business customer not found"},"409":{"description":"Shareholder conflicts with existing customer data"},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"postV1CustomersBusinessByBusinessCustomerIdShareholders","tags":["Shareholders"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"businessCustomerId","required":true}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"firstName":{"type":"string","minLength":1,"maxLength":256,"description":"First name"},"lastName":{"type":"string","minLength":1,"maxLength":256,"description":"Last name"},"birthDate":{"type":"string","format":"date","description":"Birth date (YYYY-MM-DD)"},"email":{"type":"string","format":"email","description":"Email address"},"phone":{"type":"string","maxLength":32,"description":"Phone number"},"title":{"type":"string","maxLength":128,"description":"Job title (e.g., CEO, Director)"},"ownershipPercentage":{"type":"number","minimum":0,"maximum":100,"description":"Ownership percentage (0-100, up to 2 decimal places)"},"hasControl":{"type":"boolean","description":"Whether this person has significant control"},"isSigner":{"type":"boolean","description":"Whether this person is an authorized signer"},"isDirector":{"type":"boolean","description":"Whether this person is a director"},"address":{"type":"object","properties":{"country":{"type":"string","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code"},"streetAddress":{"type":"string","minLength":1,"maxLength":512,"description":"Street address"},"city":{"type":"string","minLength":1,"maxLength":128,"description":"City"},"zip":{"type":"string","minLength":1,"maxLength":20,"description":"Postal/ZIP code"}},"required":["country","streetAddress","city","zip"]},"identityDocument":{"type":"object","properties":{"type":{"type":"string","description":"Document type (passport, id_card, drivers_license)"},"issuingCountry":{"type":"string","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code"},"number":{"type":"string","description":"Document number"}},"required":["type","issuingCountry"]},"ssn":{"type":"string","description":"Social Security Number (for US-based UBOs)"},"itin":{"type":"string","description":"Individual Taxpayer Identification Number (for US-based UBOs without SSN)"},"attestedOwnershipStructureAt":{"type":"string","format":"date-time","description":"Timestamp when control person attested to ownership structure (ISO 8601)"}},"required":["firstName","lastName","birthDate","email","ownershipPercentage","hasControl","isSigner","isDirector","address"]}}}},"summary":"Create shareholder","description":"Create a new shareholder with full PII and optional identity documents."},"get":{"responses":{"200":{"description":"Shareholders list retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"shareholders":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"enum":["pending","approved","rejected"]},"firstName":{"anyOf":[{"type":"string","nullable":true}]},"lastName":{"anyOf":[{"type":"string","nullable":true}]},"birthDate":{"anyOf":[{"type":"string","nullable":true}]},"email":{"anyOf":[{"type":"string","nullable":true}]},"phone":{"anyOf":[{"type":"string","nullable":true}]},"title":{"anyOf":[{"type":"string","nullable":true}]},"ownershipPercentage":{"anyOf":[{"type":"number","nullable":true}]},"hasControl":{"type":"boolean"},"isSigner":{"type":"boolean"},"isDirector":{"type":"boolean"},"address":{"type":"object","properties":{"country":{"anyOf":[{"type":"string","nullable":true}]},"streetAddress":{"anyOf":[{"type":"string","nullable":true}]},"city":{"anyOf":[{"type":"string","nullable":true}]},"zip":{"anyOf":[{"type":"string","nullable":true}]}},"required":["country","streetAddress","city","zip"]},"identityDocument":{"type":"object","properties":{"type":{"anyOf":[{"type":"string","nullable":true}]},"issuingCountry":{"anyOf":[{"type":"string","nullable":true}]},"number":{"anyOf":[{"type":"string","nullable":true}]}},"required":["type","issuingCountry","number"]},"ssn":{"anyOf":[{"type":"string","nullable":true}]},"itin":{"anyOf":[{"type":"string","nullable":true}]},"attestedOwnershipStructureAt":{"anyOf":[{"type":"string","nullable":true}]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","status","firstName","lastName","birthDate","email","phone","title","ownershipPercentage","hasControl","isSigner","isDirector","address","ssn","itin","attestedOwnershipStructureAt","createdAt","updatedAt"]}}},"required":["shareholders"]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Business customer not found"},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"getV1CustomersBusinessByBusinessCustomerIdShareholders","tags":["Shareholders"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"businessCustomerId","required":true}],"summary":"List shareholders","description":"Retrieve all shareholders for this business customer."}},"/v1/customers/business/{businessCustomerId}/shareholders/{shareholderId}":{"get":{"responses":{"200":{"description":"Shareholder retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"status":{"enum":["pending","approved","rejected"]},"firstName":{"anyOf":[{"type":"string","nullable":true}]},"lastName":{"anyOf":[{"type":"string","nullable":true}]},"birthDate":{"anyOf":[{"type":"string","nullable":true}]},"email":{"anyOf":[{"type":"string","nullable":true}]},"phone":{"anyOf":[{"type":"string","nullable":true}]},"title":{"anyOf":[{"type":"string","nullable":true}]},"ownershipPercentage":{"anyOf":[{"type":"number","nullable":true}]},"hasControl":{"type":"boolean"},"isSigner":{"type":"boolean"},"isDirector":{"type":"boolean"},"address":{"type":"object","properties":{"country":{"anyOf":[{"type":"string","nullable":true}]},"streetAddress":{"anyOf":[{"type":"string","nullable":true}]},"city":{"anyOf":[{"type":"string","nullable":true}]},"zip":{"anyOf":[{"type":"string","nullable":true}]}},"required":["country","streetAddress","city","zip"]},"identityDocument":{"type":"object","properties":{"type":{"anyOf":[{"type":"string","nullable":true}]},"issuingCountry":{"anyOf":[{"type":"string","nullable":true}]},"number":{"anyOf":[{"type":"string","nullable":true}]}},"required":["type","issuingCountry","number"]},"ssn":{"anyOf":[{"type":"string","nullable":true}]},"itin":{"anyOf":[{"type":"string","nullable":true}]},"attestedOwnershipStructureAt":{"anyOf":[{"type":"string","nullable":true}]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","status","firstName","lastName","birthDate","email","phone","title","ownershipPercentage","hasControl","isSigner","isDirector","address","ssn","itin","attestedOwnershipStructureAt","createdAt","updatedAt"]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Shareholder or business customer not found"},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"getV1CustomersBusinessByBusinessCustomerIdShareholdersByShareholderId","tags":["Shareholders"],"parameters":[{"in":"path","name":"shareholderId","schema":{"type":"string","description":"The shareholder ID"},"required":true},{"schema":{"type":"string"},"in":"path","name":"businessCustomerId","required":true}],"summary":"Get shareholder","description":"Retrieve a specific shareholder by ID."},"put":{"responses":{"200":{"description":"Shareholder updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"status":{"enum":["pending","approved","rejected"]},"firstName":{"anyOf":[{"type":"string","nullable":true}]},"lastName":{"anyOf":[{"type":"string","nullable":true}]},"birthDate":{"anyOf":[{"type":"string","nullable":true}]},"email":{"anyOf":[{"type":"string","nullable":true}]},"phone":{"anyOf":[{"type":"string","nullable":true}]},"title":{"anyOf":[{"type":"string","nullable":true}]},"ownershipPercentage":{"anyOf":[{"type":"number","nullable":true}]},"hasControl":{"type":"boolean"},"isSigner":{"type":"boolean"},"isDirector":{"type":"boolean"},"address":{"type":"object","properties":{"country":{"anyOf":[{"type":"string","nullable":true}]},"streetAddress":{"anyOf":[{"type":"string","nullable":true}]},"city":{"anyOf":[{"type":"string","nullable":true}]},"zip":{"anyOf":[{"type":"string","nullable":true}]}},"required":["country","streetAddress","city","zip"]},"identityDocument":{"type":"object","properties":{"type":{"anyOf":[{"type":"string","nullable":true}]},"issuingCountry":{"anyOf":[{"type":"string","nullable":true}]},"number":{"anyOf":[{"type":"string","nullable":true}]}},"required":["type","issuingCountry","number"]},"ssn":{"anyOf":[{"type":"string","nullable":true}]},"itin":{"anyOf":[{"type":"string","nullable":true}]},"attestedOwnershipStructureAt":{"anyOf":[{"type":"string","nullable":true}]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","status","firstName","lastName","birthDate","email","phone","title","ownershipPercentage","hasControl","isSigner","isDirector","address","ssn","itin","attestedOwnershipStructureAt","createdAt","updatedAt"]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Shareholder or business customer not found"},"409":{"description":"Shareholder conflicts with existing customer data"},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"putV1CustomersBusinessByBusinessCustomerIdShareholdersByShareholderId","tags":["Shareholders"],"parameters":[{"in":"path","name":"shareholderId","schema":{"type":"string","description":"The shareholder ID"},"required":true},{"schema":{"type":"string"},"in":"path","name":"businessCustomerId","required":true}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"firstName":{"type":"string","minLength":1,"maxLength":256,"description":"First name"},"lastName":{"type":"string","minLength":1,"maxLength":256,"description":"Last name"},"birthDate":{"type":"string","format":"date","description":"Birth date (YYYY-MM-DD)"},"email":{"type":"string","format":"email","description":"Email address"},"phone":{"type":"string","maxLength":32,"description":"Phone number"},"title":{"type":"string","maxLength":128,"description":"Job title (e.g., CEO, Director)"},"ownershipPercentage":{"type":"number","minimum":0,"maximum":100,"description":"Ownership percentage (0-100, up to 2 decimal places)"},"hasControl":{"type":"boolean","description":"Whether this person has significant control"},"isSigner":{"type":"boolean","description":"Whether this person is an authorized signer"},"isDirector":{"type":"boolean","description":"Whether this person is a director"},"address":{"type":"object","properties":{"country":{"type":"string","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code"},"streetAddress":{"type":"string","minLength":1,"maxLength":512,"description":"Street address"},"city":{"type":"string","minLength":1,"maxLength":128,"description":"City"},"zip":{"type":"string","minLength":1,"maxLength":20,"description":"Postal/ZIP code"}},"required":["country","streetAddress","city","zip"]},"identityDocument":{"type":"object","properties":{"type":{"type":"string","description":"Document type (passport, id_card, drivers_license)"},"issuingCountry":{"type":"string","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code"},"number":{"type":"string","description":"Document number"}},"required":["type","issuingCountry"]},"ssn":{"type":"string","description":"Social Security Number (for US-based UBOs)"},"itin":{"type":"string","description":"Individual Taxpayer Identification Number (for US-based UBOs without SSN)"},"attestedOwnershipStructureAt":{"type":"string","format":"date-time","description":"Timestamp when control person attested to ownership structure (ISO 8601)"}},"required":[]}}}},"summary":"Update shareholder","description":"Update shareholder information. Only provided fields will be updated."},"delete":{"responses":{"200":{"description":"Shareholder deleted successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"}},"required":["success","message"]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Shareholder or business customer not found"},"409":{"description":"Shareholder is referenced by an active review or conflicts with existing customer data"},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"deleteV1CustomersBusinessByBusinessCustomerIdShareholdersByShareholderId","tags":["Shareholders"],"parameters":[{"in":"path","name":"shareholderId","schema":{"type":"string","description":"The shareholder ID"},"required":true},{"schema":{"type":"string"},"in":"path","name":"businessCustomerId","required":true}],"summary":"Delete shareholder","description":"Delete a shareholder and their associated evidence records while archiving the canonical related party."}},"/v1/customers/business/{id}/kyb":{"post":{"responses":{"200":{"description":"KYB submitted with its subject-specific status","content":{"application/json":{"schema":{"type":"object","properties":{"revisionId":{"type":"string","description":"KYB revision ID"},"status":{"enum":["pending","approved","rejected"],"description":"KYB review status"},"submittedAt":{"type":"string","description":"ISO timestamp of submission"}},"required":["revisionId","status","submittedAt"]}}}},"400":{"description":"Missing shareholders or documents, or customer is not a business"},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Business customer not found"},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"postV1CustomersBusinessByIdKyb","tags":["Business"],"parameters":[{"in":"path","name":"id","schema":{"type":"string","description":"The customer ID"},"required":true}],"summary":"Submit business KYB","description":"Submit ordinary business end-customer KYB evidence. This path never creates a merchant designation. A durable existing merchant designation remains authoritative and pending through every caller. Merchant intent must use POST /v1/merchant-kyb/customers/:customerId/submit."},"get":{"responses":{"200":{"description":"KYB status retrieved","content":{"application/json":{"schema":{"type":"object","properties":{"revisionId":{"type":"string","description":"KYB revision ID"},"status":{"enum":["pending","approved","rejected"],"description":"KYB review status"},"submittedAt":{"type":"string","description":"ISO timestamp of submission"},"comment":{"type":"string","description":"Compliance review comment"}},"required":["revisionId","status","submittedAt"]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Business customer not found or KYB not submitted"},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"getV1CustomersBusinessByIdKyb","tags":["Business"],"parameters":[{"in":"path","name":"id","schema":{"type":"string","description":"The customer ID"},"required":true}],"summary":"Get KYB status","description":"Retrieve the current KYB review status for a business customer. Returns status and compliance comment if rejected."}},"/v1/customers/{customerId}/recipients":{"post":{"responses":{"200":{"description":"Recipient created successfully"},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Requested resource not found","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"postV1CustomersByCustomerIdRecipients","tags":["Recipients"],"parameters":[{"in":"path","name":"customerId","schema":{"type":"string"},"required":true}],"summary":"Create recipient","description":"Create a third-party recipient for a customer. Bank accounts are added in a separate POST /:customerId/recipients/:recipientId/accounts call so each resource gets atomic per-call feedback (REST hierarchical convention).","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"enum":["individual","business"],"description":"individual — person with firstName/lastName; business — entity with companyName"},"relationship":{"enum":["employee","contractor","vendor","subsidiary","merchant","customer","landlord","family","other"],"description":"Relationship of the recipient to the customer"},"firstName":{"type":"string","minLength":1,"description":"First name (required when type=individual)"},"lastName":{"type":"string","minLength":1,"description":"Last name (required when type=individual)"},"companyName":{"type":"string","minLength":1,"description":"Legal entity name (required when type=business)"},"businessIndustry":{"type":"string","pattern":"^\\d{6}$","description":"6-digit NAICS 2022 code identifying the recipient's industry (see naics.com/search). Required before US ACH payout destinations of business recipients can be activated."},"email":{"type":"string","format":"email","description":"Recipient email address"},"phone":{"type":"string","description":"Phone number with country code, e.g. +14155551234"},"mobileCode":{"type":"string","description":"Phone country code, e.g. \"+1\". Required by payment provider for recipient compliance."},"mobileNum":{"type":"string","description":"Phone number without country code, e.g. \"4155551234\""},"address":{"type":"object","properties":{"addressLine1":{"type":"string","minLength":1,"description":"Street address"},"addressLine2":{"type":"string","description":"Apartment, suite, unit, floor, etc."},"city":{"type":"string","minLength":1,"description":"City"},"state":{"type":"string","description":"State or province"},"postalCode":{"type":"string","minLength":1,"description":"Postal / ZIP code"},"country":{"type":"string","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code"}},"required":["addressLine1","city","postalCode","country"],"description":"Recipient address. Optional here for backward compatibility, but required to provision payouts — recipients without an address cannot receive payouts until one is added via PATCH. Required on create in v3."},"label":{"type":"string","maxLength":255,"description":"Optional label"},"metadata":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]},"description":"Custom key-value metadata"}},"required":["type","relationship"]}}}}},"get":{"responses":{"200":{"description":"Recipients retrieved"},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Requested resource not found","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"getV1CustomersByCustomerIdRecipients","tags":["Recipients"],"parameters":[{"in":"path","name":"customerId","schema":{"type":"string"},"required":true}],"summary":"List customer recipients","description":"Get all recipients for a customer."}},"/v1/customers/{customerId}/recipients/{recipientId}":{"get":{"responses":{"200":{"description":"Recipient retrieved"},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Requested resource not found","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"getV1CustomersByCustomerIdRecipientsByRecipientId","tags":["Recipients"],"parameters":[{"in":"path","name":"customerId","schema":{"type":"string"},"required":true},{"in":"path","name":"recipientId","schema":{"type":"string"},"required":true}],"summary":"Get recipient","description":"Retrieve a specific recipient with its bank accounts."},"patch":{"responses":{"200":{"description":"Recipient updated"},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Requested resource not found","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"patchV1CustomersByCustomerIdRecipientsByRecipientId","tags":["Recipients"],"parameters":[{"in":"path","name":"customerId","schema":{"type":"string"},"required":true},{"in":"path","name":"recipientId","schema":{"type":"string"},"required":true}],"summary":"Update recipient","description":"Update recipient fields. Cannot change type.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"relationship":{"enum":["employee","contractor","vendor","subsidiary","merchant","customer","landlord","family","other"]},"firstName":{"type":"string","minLength":1},"lastName":{"type":"string","minLength":1},"companyName":{"type":"string","minLength":1},"businessIndustry":{"type":"string","pattern":"^\\d{6}$","description":"6-digit NAICS 2022 code identifying the recipient's industry (see naics.com/search). Required before US ACH payout destinations of business recipients can be activated."},"email":{"type":"string","format":"email"},"phone":{"type":"string"},"mobileCode":{"type":"string"},"mobileNum":{"type":"string"},"address":{"type":"object","properties":{"addressLine1":{"type":"string","minLength":1,"description":"Street address"},"addressLine2":{"type":"string","description":"Apartment, suite, unit, floor, etc."},"city":{"type":"string","minLength":1,"description":"City"},"state":{"type":"string","description":"State or province"},"postalCode":{"type":"string","minLength":1,"description":"Postal / ZIP code"},"country":{"type":"string","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code"}},"required":["addressLine1","city","postalCode","country"]},"label":{"type":"string","maxLength":255},"metadata":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}}},"required":[]}}}}},"delete":{"responses":{"200":{"description":"Recipient archived"},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Requested resource not found","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"deleteV1CustomersByCustomerIdRecipientsByRecipientId","tags":["Recipients"],"parameters":[{"in":"path","name":"customerId","schema":{"type":"string"},"required":true},{"in":"path","name":"recipientId","schema":{"type":"string"},"required":true}],"summary":"Archive recipient","description":"Soft-delete a recipient."}},"/v1/customers/{customerId}/recipients/{recipientId}/accounts":{"post":{"responses":{"201":{"description":"Recipient account created","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"recipientId":{"type":"string"},"rail":{"enum":["sepa","swift","ach","fedwire","spei_pooled","pse_pooled","transfers_3_0_pooled"]},"status":{"enum":["temporarily_unsupported"]},"statusReason":{"type":"string"},"details":{"anyOf":[{"type":"object","properties":{"iban":{"type":"string","minLength":15,"maxLength":34},"bic":{"type":"string","minLength":8,"maxLength":11},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2},"currency":{"type":"string","minLength":3,"maxLength":3}},"required":["iban","accountHolderName","country","currency"]},{"type":"object","properties":{"swiftCode":{"type":"string","minLength":8,"maxLength":11},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2},"currency":{"type":"string","minLength":3,"maxLength":3},"routingNumber":{"type":"string","minLength":9,"maxLength":9},"intermediaryBankSwift":{"type":"string","minLength":8,"maxLength":11},"intermediaryBankName":{"type":"string","minLength":1,"maxLength":255},"intermediaryBankAddress":{"type":"string","minLength":1,"maxLength":512}},"required":["swiftCode","accountNumber","bankName","accountHolderName","country","currency"]},{"type":"object","properties":{"routingNumber":{"type":"string","minLength":9,"maxLength":9},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"accountType":{"enum":["checking","savings"],"default":"checking"},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2},"currency":{"type":"string","minLength":3,"maxLength":3}},"required":["routingNumber","accountNumber","bankName","accountHolderName","country","currency"]},{"type":"object","properties":{"routingNumber":{"type":"string","minLength":9,"maxLength":9},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"accountType":{"enum":["checking","savings"],"default":"checking"},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2},"currency":{"type":"string","minLength":3,"maxLength":3}},"required":["routingNumber","accountNumber","bankName","accountHolderName","country","currency"]},{"type":"object","properties":{"clabe":{"type":"string","minLength":18,"maxLength":18},"institutionName":{"type":"string","minLength":1,"maxLength":255},"bankName":{"type":"string","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2,"default":"MX"},"currency":{"type":"string","minLength":3,"maxLength":3,"default":"MXN"},"blindpay":{"type":"object","properties":{"provider":{"enum":["blindpay"]},"accountId":{"type":"string","minLength":1,"maxLength":255},"status":{"type":"string","minLength":1,"maxLength":255}},"required":["provider","accountId"]}},"required":["clabe","accountHolderName"]},{"type":"object","properties":{"bankCode":{"type":"string","minLength":1,"maxLength":64},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"documentType":{"type":"string","minLength":1,"maxLength":32},"documentNumber":{"type":"string","minLength":1,"maxLength":64},"email":{"type":"string","format":"email"},"bankName":{"type":"string","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2,"default":"CO"},"currency":{"type":"string","minLength":3,"maxLength":3,"default":"COP"},"blindpay":{"type":"object","properties":{"provider":{"enum":["blindpay"]},"accountId":{"type":"string","minLength":1,"maxLength":255},"status":{"type":"string","minLength":1,"maxLength":255}},"required":["provider","accountId"]}},"required":["bankCode","accountNumber","documentType","documentNumber","email","accountHolderName"]},{"type":"object","properties":{"cbu":{"type":"string","minLength":22,"maxLength":22},"alias":{"type":"string","minLength":1,"maxLength":255},"bankName":{"type":"string","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"taxId":{"type":"string","minLength":1,"maxLength":64},"country":{"type":"string","minLength":2,"maxLength":2,"default":"AR"},"currency":{"type":"string","minLength":3,"maxLength":3,"default":"ARS"},"blindpay":{"type":"object","properties":{"provider":{"enum":["blindpay"]},"accountId":{"type":"string","minLength":1,"maxLength":255},"status":{"type":"string","minLength":1,"maxLength":255}},"required":["provider","accountId"]}},"required":["cbu","accountHolderName"]}]},"createdAt":{"type":"string","description":"ISO 8601 creation timestamp"},"updatedAt":{"type":"string","description":"ISO 8601 last-updated timestamp"},"archivedAt":{"anyOf":[{"type":"string","description":"ISO 8601 archive timestamp; null if active","nullable":true}]}},"required":["id","recipientId","rail","details","createdAt","updatedAt","archivedAt"]}}}},"400":{"description":"Invalid body"},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Recipient not found or archived"},"409":{"description":"Required rail is not ready for this customer. Response includes `code: \"rail_not_ready\"`, `rail`, `requiredRails`, and `requestRailEndpoint` so the caller can surface the right verification step.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"enum":[true]},"success":{"enum":[false]},"code":{"enum":["rail_not_ready"]},"rail":{"enum":["sepa","swift","ach","fedwire","spei_pooled","pse_pooled","transfers_3_0_pooled"]},"requiredRails":{"type":"array","items":{"type":"string"}},"requestRailEndpoint":{"type":"string"},"nextAction":{"type":"string"},"message":{"type":"string"}},"required":["error","success","code","rail","requiredRails","requestRailEndpoint","nextAction","message"]},"example":{"error":true,"success":false,"code":"rail_not_ready","rail":"ach","requiredRails":["ach_pooled","ach_named"],"requestRailEndpoint":"/v1/customers/cus_xxx/rails","nextAction":"Call POST /v1/customers/cus_xxx/rails with {\"rails\":[\"ach\"]}, then retry after the returned rail is ready_to_use.","message":"No ACH rail is ready for this customer. Request and complete verification for one of: ach_pooled, ach_named."}}}},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"postV1CustomersByCustomerIdRecipientsByRecipientIdAccounts","tags":["Recipients"],"parameters":[{"in":"path","name":"customerId","schema":{"type":"string"},"required":true},{"in":"path","name":"recipientId","schema":{"type":"string"},"required":true}],"summary":"Create a recipient bank account","description":"Create a recipient-owned bank account directly. Supports SWIFT, ACH, Fedwire, and BlindPay local pooled payout rails. The bank details are stored on the recipient — no customer-account import is required.","requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","description":"SEPA recipient account","required":["rail","details"],"properties":{"rail":{"type":"string","enum":["sepa"],"description":"Selects the recipient-account rail and matching details schema. Fedwire and ACH use US ABA routing/account details; IBAN/BIC belongs to SEPA details.","example":"sepa"},"details":{"type":"object","description":"SEPA recipient details. Use this branch for EUR IBAN/BIC accounts.","required":["iban","accountHolderName","country","currency"],"properties":{"iban":{"type":"string","description":"Recipient IBAN.","minLength":15,"maxLength":34,"example":"DE89370400440532013000"},"bic":{"type":"string","description":"Recipient bank BIC/SWIFT code.","minLength":8,"maxLength":11,"example":"COBADEFFXXX"},"bankName":{"type":"string","description":"Receiving bank name.","minLength":1,"maxLength":255},"bankAddress":{"type":"string","description":"Receiving bank address.","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","description":"Legal name of the recipient account holder.","minLength":1,"maxLength":255},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","minLength":2,"maxLength":2,"example":"DE"},"currency":{"type":"string","description":"ISO 4217 alpha-3 currency code.","minLength":3,"maxLength":3,"example":"EUR"}}}}},{"type":"object","description":"SWIFT recipient account","required":["rail","details"],"properties":{"rail":{"type":"string","enum":["swift"],"description":"Selects the recipient-account rail and matching details schema. Fedwire and ACH use US ABA routing/account details; IBAN/BIC belongs to SEPA details.","example":"swift"},"details":{"type":"object","description":"SWIFT recipient details.","required":["swiftCode","accountNumber","bankName","accountHolderName","country","currency"],"properties":{"swiftCode":{"type":"string","description":"Recipient bank BIC/SWIFT code.","minLength":8,"maxLength":11,"example":"HSBCHKHHHKH"},"accountNumber":{"type":"string","description":"Recipient bank account number.","minLength":1,"maxLength":34},"bankName":{"type":"string","description":"Receiving bank name.","minLength":1,"maxLength":255},"bankAddress":{"type":"string","description":"Receiving bank address.","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","description":"Legal name of the recipient account holder.","minLength":1,"maxLength":255},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","minLength":2,"maxLength":2,"example":"HK"},"currency":{"type":"string","description":"ISO 4217 alpha-3 currency code.","minLength":3,"maxLength":3,"example":"USD"},"routingNumber":{"type":"string","description":"US ABA routing number. Required for ACH and Fedwire.","pattern":"^[0-9]{9}$","example":"021000021"},"intermediaryBankSwift":{"type":"string","description":"Optional intermediary bank BIC/SWIFT code.","minLength":8,"maxLength":11},"intermediaryBankName":{"type":"string","description":"Receiving bank name.","minLength":1,"maxLength":255},"intermediaryBankAddress":{"type":"string","description":"Receiving bank address.","minLength":1,"maxLength":512}}}}},{"type":"object","description":"ACH recipient account","required":["rail","details"],"properties":{"rail":{"type":"string","enum":["ach"],"description":"Selects the recipient-account rail and matching details schema. Fedwire and ACH use US ABA routing/account details; IBAN/BIC belongs to SEPA details.","example":"ach"},"details":{"type":"object","description":"ACH recipient details. Use routingNumber and accountNumber, not IBAN/BIC.","required":["routingNumber","accountNumber","bankName","accountHolderName","country","currency"],"properties":{"routingNumber":{"type":"string","description":"US ABA routing number. Required for ACH and Fedwire.","pattern":"^[0-9]{9}$","example":"021000021"},"accountNumber":{"type":"string","description":"Recipient bank account number.","minLength":1,"maxLength":34},"accountType":{"type":"string","description":"US bank account type. Defaults to checking.","enum":["checking","savings"],"default":"checking"},"bankName":{"type":"string","description":"Receiving bank name.","minLength":1,"maxLength":255},"bankAddress":{"type":"string","description":"Receiving bank address.","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","description":"Legal name of the recipient account holder.","minLength":1,"maxLength":255},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","minLength":2,"maxLength":2,"example":"US"},"currency":{"type":"string","description":"ISO 4217 alpha-3 currency code.","minLength":3,"maxLength":3,"example":"USD"}}}}},{"type":"object","description":"Fedwire recipient account","required":["rail","details"],"properties":{"rail":{"type":"string","enum":["fedwire"],"description":"Selects the recipient-account rail and matching details schema. Fedwire and ACH use US ABA routing/account details; IBAN/BIC belongs to SEPA details.","example":"fedwire"},"details":{"type":"object","description":"Fedwire recipient details. Use routingNumber and accountNumber, not IBAN/BIC.","required":["routingNumber","accountNumber","bankName","accountHolderName","country","currency"],"properties":{"routingNumber":{"type":"string","description":"US ABA routing number. Required for ACH and Fedwire.","pattern":"^[0-9]{9}$","example":"021000021"},"accountNumber":{"type":"string","description":"Recipient bank account number.","minLength":1,"maxLength":34},"accountType":{"type":"string","description":"US bank account type. Defaults to checking.","enum":["checking","savings"],"default":"checking"},"bankName":{"type":"string","description":"Receiving bank name.","minLength":1,"maxLength":255},"bankAddress":{"type":"string","description":"Receiving bank address.","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","description":"Legal name of the recipient account holder.","minLength":1,"maxLength":255},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","minLength":2,"maxLength":2,"example":"US"},"currency":{"type":"string","description":"ISO 4217 alpha-3 currency code.","minLength":3,"maxLength":3,"example":"USD"}}}}},{"type":"object","description":"SPEI pooled recipient account","required":["rail","details"],"properties":{"rail":{"type":"string","enum":["spei_pooled"],"description":"Selects the recipient-account rail and matching details schema. Fedwire and ACH use US ABA routing/account details; IBAN/BIC belongs to SEPA details.","example":"spei_pooled"},"details":{"type":"object","description":"SPEI pooled payout recipient details.","required":["clabe","accountHolderName"],"properties":{"clabe":{"type":"string","description":"Mexican CLABE.","minLength":18,"maxLength":18,"example":"002010077777777771"},"institutionName":{"type":"string","description":"Receiving bank name.","minLength":1,"maxLength":255},"bankName":{"type":"string","description":"Receiving bank name.","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","description":"Legal name of the recipient account holder.","minLength":1,"maxLength":255},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","minLength":2,"maxLength":2,"example":"MX","default":"MX"},"currency":{"type":"string","description":"ISO 4217 alpha-3 currency code.","minLength":3,"maxLength":3,"example":"MXN","default":"MXN"}}}}},{"type":"object","description":"PSE pooled recipient account","required":["rail","details"],"properties":{"rail":{"type":"string","enum":["pse_pooled"],"description":"Selects the recipient-account rail and matching details schema. Fedwire and ACH use US ABA routing/account details; IBAN/BIC belongs to SEPA details.","example":"pse_pooled"},"details":{"type":"object","description":"PSE pooled payout recipient details.","required":["bankCode","accountNumber","documentType","documentNumber","email","accountHolderName"],"properties":{"bankCode":{"type":"string","description":"Colombian PSE bank code.","minLength":1,"maxLength":64},"accountNumber":{"type":"string","description":"Recipient bank account number.","minLength":1,"maxLength":34},"documentType":{"type":"string","description":"Recipient identity document type.","minLength":1,"maxLength":32},"documentNumber":{"type":"string","description":"Recipient identity document number.","minLength":1,"maxLength":64},"email":{"type":"string","description":"Recipient email address.","format":"email"},"bankName":{"type":"string","description":"Receiving bank name.","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","description":"Legal name of the recipient account holder.","minLength":1,"maxLength":255},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","minLength":2,"maxLength":2,"example":"CO","default":"CO"},"currency":{"type":"string","description":"ISO 4217 alpha-3 currency code.","minLength":3,"maxLength":3,"example":"COP","default":"COP"}}}}},{"type":"object","description":"Transfers 3.0 pooled recipient account","required":["rail","details"],"properties":{"rail":{"type":"string","enum":["transfers_3_0_pooled"],"description":"Selects the recipient-account rail and matching details schema. Fedwire and ACH use US ABA routing/account details; IBAN/BIC belongs to SEPA details.","example":"transfers_3_0_pooled"},"details":{"type":"object","description":"Transfers 3.0 pooled payout recipient details.","required":["cbu","accountHolderName"],"properties":{"cbu":{"type":"string","description":"Argentinian CBU.","minLength":22,"maxLength":22,"example":"0000003100010000000001"},"alias":{"type":"string","description":"Optional Argentinian account alias.","minLength":1,"maxLength":255},"bankName":{"type":"string","description":"Receiving bank name.","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","description":"Legal name of the recipient account holder.","minLength":1,"maxLength":255},"taxId":{"type":"string","description":"Optional recipient tax identifier.","minLength":1,"maxLength":64},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","minLength":2,"maxLength":2,"example":"AR","default":"AR"},"currency":{"type":"string","description":"ISO 4217 alpha-3 currency code.","minLength":3,"maxLength":3,"example":"ARS","default":"ARS"}}}}}],"description":"Create one recipient-owned bank account. Choose the branch matching `rail`; Scalar shows these as separate Any Of variants."},"examples":{"sepa":{"summary":"SEPA IBAN/BIC","value":{"rail":"sepa","details":{"iban":"DE89370400440532013000","bic":"COBADEFFXXX","bankName":"Commerzbank","bankAddress":"Kaiserplatz, 60261 Frankfurt","accountHolderName":"Acme Corp","country":"DE","currency":"EUR"}}},"swift":{"summary":"SWIFT account","value":{"rail":"swift","details":{"swiftCode":"HSBCHKHHHKH","accountNumber":"202682539101","bankName":"HSBC Hong Kong","bankAddress":"1 Queens Road Central, Hong Kong","accountHolderName":"Acme Corp","country":"HK","currency":"USD"}}},"ach":{"summary":"ACH routing/account","value":{"rail":"ach","details":{"routingNumber":"021000021","accountNumber":"1234567890","accountType":"checking","bankName":"Chase","accountHolderName":"Acme Corp","country":"US","currency":"USD"}}},"fedwire":{"summary":"Fedwire routing/account","value":{"rail":"fedwire","details":{"routingNumber":"021000021","accountNumber":"1234567890","accountType":"checking","bankName":"JPMorgan Chase Bank","bankAddress":"383 Madison Avenue, New York, NY","accountHolderName":"Acme Corp","country":"US","currency":"USD"}}},"spei_pooled":{"summary":"SPEI pooled payout","value":{"rail":"spei_pooled","details":{"clabe":"002010077777777771","accountHolderName":"Acme Mexico"}}},"pse_pooled":{"summary":"PSE pooled payout","value":{"rail":"pse_pooled","details":{"bankCode":"001","accountNumber":"123456789","documentType":"NIT","documentNumber":"900123456","email":"finance@example.com","accountHolderName":"Acme Colombia"}}},"transfers_3_0_pooled":{"summary":"Transfers 3.0 pooled payout","value":{"rail":"transfers_3_0_pooled","details":{"cbu":"0000003100010000000001","alias":"ACME.ARS","accountHolderName":"Acme Argentina"}}}}}}}},"get":{"responses":{"200":{"description":"Accounts retrieved"},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Recipient not found or archived"},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"getV1CustomersByCustomerIdRecipientsByRecipientIdAccounts","tags":["Recipients"],"parameters":[{"in":"path","name":"customerId","schema":{"type":"string"},"required":true},{"in":"path","name":"recipientId","schema":{"type":"string"},"required":true}],"summary":"List recipient bank accounts","description":"List active (non-archived) bank accounts owned by a recipient."}},"/v1/customers/{customerId}/recipients/{recipientId}/accounts/{recipientAccountId}":{"get":{"responses":{"200":{"description":"Account retrieved"},"400":{"description":"Invalid account ID. Passing a rail id (`cfr_*`) returns `code: \"invalid_account_id\"`."},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Recipient or recipient account not found"},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"getV1CustomersByCustomerIdRecipientsByRecipientIdAccountsByRecipientAccountId","tags":["Recipients"],"parameters":[{"in":"path","name":"customerId","schema":{"type":"string"},"required":true},{"in":"path","name":"recipientId","schema":{"type":"string"},"required":true},{"in":"path","name":"recipientAccountId","schema":{"type":"string"},"required":true}],"summary":"Get a recipient bank account","description":"Retrieve a single recipient-owned bank account."},"delete":{"responses":{"200":{"description":"Account archived"},"400":{"description":"Invalid account ID. Passing a rail id (`cfr_*`) returns `code: \"invalid_account_id\"`."},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Recipient or recipient account not found"},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"deleteV1CustomersByCustomerIdRecipientsByRecipientIdAccountsByRecipientAccountId","tags":["Recipients"],"parameters":[{"in":"path","name":"customerId","schema":{"type":"string"},"required":true},{"in":"path","name":"recipientId","schema":{"type":"string"},"required":true},{"in":"path","name":"recipientAccountId","schema":{"type":"string"},"required":true}],"summary":"Archive a recipient bank account","description":"Soft-deletes the recipient-owned bank account. Idempotent — a second call on an already-archived account returns 200."}},"/v1/customers/{customerId}/rails":{"post":{"responses":{"201":{"description":"Rails requested successfully","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique rail record ID (cfr_xxx)"},"rail":{"enum":["ach_pooled","ach_named","fedwire_pooled","fedwire_named","wire_pooled","wire_named","rtp_pooled","rtp_named","sepa_pooled","sepa_named","swift_pooled","swift_named","pix_pooled","uaefts_pooled","faster_payments_pooled","faster_payments_named","sepa_instant_pooled","sepa_instant_named","ipp_pooled","ipp_named","spei_pooled","pse_pooled","transfers_3_0_pooled","spei","pse","rtp","transfers_3_0"],"description":"Rail verification target identifier"},"railStatus":{"enum":["requested","ready_to_use","action_required","rejected"],"description":"Aggregate rail status: requested is under review, ready_to_use is usable, action_required is retryable/needs attention, and rejected is terminal."},"rejectionReason":{"anyOf":[{"type":"string","nullable":true}],"description":"Merchant-visible reason for aggregate action_required or terminal rejected rails; null when no reason applies."},"banks":{"type":"array","items":{"type":"object","properties":{"bank":{"enum":["align_ae","align_gb","align_us","banking_circle_denmark","citi","cfsb","hsbc","jpmorgan_chase","nvio_pagos","stark_bank","zen"],"description":"Selected bank"},"status":{"enum":["requested","ready_to_use","rejected"],"description":"Current verification status of this bank attempt"},"rejectionReason":{"anyOf":[{"type":"string","nullable":true}],"description":"Bank-specific rejection reason if this attempt was rejected; null otherwise."},"requestedBy":{"enum":["merchant","swipelux_default"],"description":"Whether this bank was merchant-selected or defaulted"}},"required":["bank","status","rejectionReason","requestedBy"]},"description":"Bank attempts for this rail. Bankless rails return an empty array."},"createdAt":{"type":"string","description":"ISO 8601 creation timestamp"},"updatedAt":{"type":"string","description":"ISO 8601 last-updated timestamp"}},"required":["id","rail","railStatus","rejectionReason","banks","createdAt","updatedAt"]}}}}},"400":{"description":"Invalid qualified rail name"},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Customer not found for this merchant"},"422":{"description":"A provider-native requirement is incomplete or the requested rail/bank combination is unsupported"},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"postV1CustomersByCustomerIdRails","tags":["Rails"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"customerId","required":true}],"summary":"Request fiat rail verification","description":"Request one or more qualified fiat rails for a customer. Customer-level KYC/KYB approval is not required to create a request; capability and provider-native requirements still apply. Creates rail records in 'requested' status, or 'ready_to_use' when the rail satisfies auto-activation policy. The rail status updates automatically once verification completes; consumers should re-fetch the rail to observe any later state changes.\n\nQualified rails follow the format `{base}_{variant}` where base is one of `ach`, `sepa`, `swift`, `fedwire`, `wire`, `rtp`, `pix` and variant is `pooled` or `named`.\n\n- **pooled** — shared deposit details, supports payins only\n- **named** — dedicated virtual account per customer, supports payins and virtual accounts","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"rails":{"type":"array","items":{"anyOf":[{"enum":["ach_pooled","ach_named","fedwire_pooled","fedwire_named","wire_pooled","wire_named","rtp_pooled","rtp_named","sepa_pooled","sepa_named","swift_pooled","swift_named","pix_pooled","uaefts_pooled","faster_payments_pooled","faster_payments_named","sepa_instant_pooled","sepa_instant_named","ipp_pooled","ipp_named","spei_pooled","pse_pooled","transfers_3_0_pooled","spei","pse","rtp","transfers_3_0","pix_named","uaefts_named","ach","fedwire","wire","rtp","sepa","swift","pix","uaefts","faster_payments","sepa_instant","ipp"],"description":"Fiat rail verification target to request. Retired rail names may parse here so the API can return a stable not-supported error."},{"type":"object","properties":{"rail":{"enum":["ach_pooled","ach_named","fedwire_pooled","fedwire_named","wire_pooled","wire_named","rtp_pooled","rtp_named","sepa_pooled","sepa_named","swift_pooled","swift_named","pix_pooled","uaefts_pooled","faster_payments_pooled","faster_payments_named","sepa_instant_pooled","sepa_instant_named","ipp_pooled","ipp_named","spei_pooled","pse_pooled","transfers_3_0_pooled","spei","pse","rtp","transfers_3_0","pix_named","uaefts_named","ach","fedwire","wire","rtp","sepa","swift","pix","uaefts","faster_payments","sepa_instant","ipp"],"description":"Fiat rail verification target to request. Retired rail names may parse here so the API can return a stable not-supported error."},"banks":{"type":"array","items":{"enum":["align_ae","align_gb","align_us","banking_circle_denmark","citi","cfsb","hsbc","jpmorgan_chase","nvio_pagos","stark_bank","zen"]},"minItems":1}},"required":["rail"]}]},"minItems":1,"description":"List of fiat rail verification targets to request"}},"required":["rails"]}}}}},"get":{"responses":{"200":{"description":"Rails retrieved successfully","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique rail record ID (cfr_xxx)"},"rail":{"enum":["ach_pooled","ach_named","fedwire_pooled","fedwire_named","wire_pooled","wire_named","rtp_pooled","rtp_named","sepa_pooled","sepa_named","swift_pooled","swift_named","pix_pooled","uaefts_pooled","faster_payments_pooled","faster_payments_named","sepa_instant_pooled","sepa_instant_named","ipp_pooled","ipp_named","spei_pooled","pse_pooled","transfers_3_0_pooled","spei","pse","rtp","transfers_3_0"],"description":"Rail verification target identifier"},"railStatus":{"enum":["requested","ready_to_use","action_required","rejected"],"description":"Aggregate rail status: requested is under review, ready_to_use is usable, action_required is retryable/needs attention, and rejected is terminal."},"rejectionReason":{"anyOf":[{"type":"string","nullable":true}],"description":"Merchant-visible reason for aggregate action_required or terminal rejected rails; null when no reason applies."},"banks":{"type":"array","items":{"type":"object","properties":{"bank":{"enum":["align_ae","align_gb","align_us","banking_circle_denmark","citi","cfsb","hsbc","jpmorgan_chase","nvio_pagos","stark_bank","zen"],"description":"Selected bank"},"status":{"enum":["requested","ready_to_use","rejected"],"description":"Current verification status of this bank attempt"},"rejectionReason":{"anyOf":[{"type":"string","nullable":true}],"description":"Bank-specific rejection reason if this attempt was rejected; null otherwise."},"requestedBy":{"enum":["merchant","swipelux_default"],"description":"Whether this bank was merchant-selected or defaulted"}},"required":["bank","status","rejectionReason","requestedBy"]},"description":"Bank attempts for this rail. Bankless rails return an empty array."},"createdAt":{"type":"string","description":"ISO 8601 creation timestamp"},"updatedAt":{"type":"string","description":"ISO 8601 last-updated timestamp"}},"required":["id","rail","railStatus","rejectionReason","banks","createdAt","updatedAt"]}}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Requested resource not found","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"getV1CustomersByCustomerIdRails","tags":["Rails"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"customerId","required":true}],"summary":"List customer fiat rails","description":"Retrieve all fiat rails requested for a customer, with their current verification status."}},"/v1/customers/{customerId}/rails/capabilities":{"get":{"responses":{"200":{"description":"Customer-specific rail and bank options returned successfully","content":{"application/json":{"schema":{"type":"object","properties":{"customerId":{"type":"string","description":"Customer id these rail options apply to."},"customerType":{"enum":["business","individual"],"description":"Customer type used for rail eligibility. Business and individual customers use the same endpoint."},"country":{"anyOf":[{"type":"string","nullable":true}],"description":"Normalized ISO country used to decide country-specific rail and bank availability."},"canRequestRails":{"description":"Always true; individual rails can still be unavailable or require provider-native verification.","enum":[true]},"requestBlocker":{"description":"Always `null`; request eligibility is determined per rail and provider.","nullable":true},"rails":{"type":"array","items":{"type":"object","properties":{"rail":{"enum":["ach_pooled","ach_named","fedwire_pooled","fedwire_named","wire_pooled","wire_named","rtp_pooled","rtp_named","sepa_pooled","sepa_named","swift_pooled","swift_named","pix_pooled","uaefts_pooled","faster_payments_pooled","faster_payments_named","sepa_instant_pooled","sepa_instant_named","ipp_pooled","ipp_named","spei_pooled","pse_pooled","transfers_3_0_pooled","spei","pse","rtp","transfers_3_0"],"description":"Rail id to show to the customer and send in `POST /rails`, such as `ach_pooled` or `fedwire_named`."},"status":{"enum":["supported","unsupported"],"description":"`supported` rails can be requested for this customer. `unsupported` rails are included with a public reason so you can hide or disable them."},"supportsBankSelection":{"type":"boolean","description":"Whether your `POST /rails` request may include a `banks` field for this rail."},"defaultBanks":{"type":"array","items":{"enum":["align_ae","align_gb","align_us","banking_circle_denmark","citi","cfsb","hsbc","jpmorgan_chase","nvio_pagos","stark_bank","zen"]},"description":"Bank ids Swipelux will use if you request this rail without selecting banks explicitly."},"banks":{"type":"array","items":{"type":"object","properties":{"bank":{"enum":["align_ae","align_gb","align_us","banking_circle_denmark","citi","cfsb","hsbc","jpmorgan_chase","nvio_pagos","stark_bank","zen"],"description":"Public bank id you may send in `POST /rails` for this customer and rail."},"isDefault":{"type":"boolean","description":"Whether this bank is used when you request the rail without a `banks` field."}},"required":["bank","isDefault"]},"description":"Banks the customer may choose for this rail. Use these ids in `POST /rails`."},"reason":{"anyOf":[{"type":"string","nullable":true}],"description":"Customer-safe explanation when the rail is unsupported; `null` for supported rails."}},"required":["rail","status","supportsBankSelection","defaultBanks","banks","reason"]},"description":"Rail options to render for this customer, including bank choices and unsupported reasons."}},"required":["customerId","customerType","country","canRequestRails","requestBlocker","rails"]},"examples":{"businessCustomer":{"summary":"Approved business customer","value":{"customerId":"cus_abc123","customerType":"business","country":"US","canRequestRails":true,"requestBlocker":null,"rails":[{"rail":"ach_pooled","status":"supported","supportsBankSelection":true,"defaultBanks":["hsbc"],"banks":[{"bank":"hsbc","isDefault":true}],"reason":null},{"rail":"pse","status":"supported","supportsBankSelection":false,"defaultBanks":[],"banks":[],"reason":null},{"rail":"pix_named","status":"unsupported","supportsBankSelection":false,"defaultBanks":[],"banks":[],"reason":"Named PIX accounts are not supported yet."}]}}}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Customer not found under the authenticated merchant and space"},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"getV1CustomersByCustomerIdRailsCapabilities","tags":["Rails"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"customerId","required":true}],"summary":"Check available fiat rails and banks","description":"Call this before requesting fiat rails for a customer.\n\nThe endpoint works for both business and individual customers. It tells you which rails can be requested, whether a rail supports explicit bank selection, and which public bank ids are valid for that customer.\n\nUse the returned `rails[].rail` and `rails[].banks[].bank` values when calling `POST /v1/customers/{customerId}/rails`. Provider-native verification can still be required for an individual rail.\n\nThis is a read-only planning endpoint: it does not create rail records, start verification, or contact bank providers."}},"/v1/customers/{customerId}/rails/{rail}":{"get":{"responses":{"200":{"description":"Rail retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Unique rail record ID (cfr_xxx)"},"rail":{"enum":["ach_pooled","ach_named","fedwire_pooled","fedwire_named","wire_pooled","wire_named","rtp_pooled","rtp_named","sepa_pooled","sepa_named","swift_pooled","swift_named","pix_pooled","uaefts_pooled","faster_payments_pooled","faster_payments_named","sepa_instant_pooled","sepa_instant_named","ipp_pooled","ipp_named","spei_pooled","pse_pooled","transfers_3_0_pooled","spei","pse","rtp","transfers_3_0"],"description":"Rail verification target identifier"},"railStatus":{"enum":["requested","ready_to_use","action_required","rejected"],"description":"Aggregate rail status: requested is under review, ready_to_use is usable, action_required is retryable/needs attention, and rejected is terminal."},"rejectionReason":{"anyOf":[{"type":"string","nullable":true}],"description":"Merchant-visible reason for aggregate action_required or terminal rejected rails; null when no reason applies."},"banks":{"type":"array","items":{"type":"object","properties":{"bank":{"enum":["align_ae","align_gb","align_us","banking_circle_denmark","citi","cfsb","hsbc","jpmorgan_chase","nvio_pagos","stark_bank","zen"],"description":"Selected bank"},"status":{"enum":["requested","ready_to_use","rejected"],"description":"Current verification status of this bank attempt"},"rejectionReason":{"anyOf":[{"type":"string","nullable":true}],"description":"Bank-specific rejection reason if this attempt was rejected; null otherwise."},"requestedBy":{"enum":["merchant","swipelux_default"],"description":"Whether this bank was merchant-selected or defaulted"}},"required":["bank","status","rejectionReason","requestedBy"]},"description":"Bank attempts for this rail. Bankless rails return an empty array."},"createdAt":{"type":"string","description":"ISO 8601 creation timestamp"},"updatedAt":{"type":"string","description":"ISO 8601 last-updated timestamp"}},"required":["id","rail","railStatus","rejectionReason","banks","createdAt","updatedAt"]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Rail not found for this customer"},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"getV1CustomersByCustomerIdRailsByRail","tags":["Rails"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"customerId","required":true},{"schema":{"type":"string"},"in":"path","name":"rail","required":true}],"summary":"Get a single fiat rail","description":"Retrieve the verification status of a specific qualified fiat rail for a customer."}},"/v2/customers":{"post":{"responses":{"200":{"description":"Customer created successfully","content":{"application/json":{"schema":{"oneOf":[{"title":"Individual","type":"object","required":["id","type","personal","createdAt","updatedAt"],"properties":{"id":{"type":"string"},"type":{"type":"string","enum":["individual"]},"personal":{"type":"object","description":"Contact and identity information. Business customers require all listed fields; individual customers require email and may provide the other fields.","properties":{"firstName":{"type":"string"},"middleName":{"type":"string"},"lastName":{"type":"string"},"birthDate":{"type":"string","format":"date"},"email":{"type":"string","format":"email"},"phone":{"type":"string"}}},"address":{"type":"object","description":"Residential address for individuals or operating address for businesses.","required":["country","streetLine1","streetLine2","city","state","postalCode"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 or alpha-3 country code."},"streetLine1":{"type":"string"},"streetLine2":{"type":"string"},"city":{"type":"string"},"state":{"type":"string"},"postalCode":{"type":"string"}}},"taxInfo":{"type":"object","description":"Tax identifier. Required for business customers.","required":["country","type","value"],"properties":{"country":{"type":"string"},"type":{"type":"string","enum":["ssn","itin","ein","tin","vat","cpf","other"]},"value":{"type":"string"}}},"metadata":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},{"title":"Business","type":"object","required":["id","type","personal","createdAt","updatedAt"],"properties":{"id":{"type":"string"},"type":{"type":"string","enum":["business"]},"personal":{"type":"object","description":"Contact and identity information. Business customers require all listed fields; individual customers require email and may provide the other fields.","properties":{"firstName":{"type":"string"},"middleName":{"type":"string"},"lastName":{"type":"string"},"birthDate":{"type":"string","format":"date"},"email":{"type":"string","format":"email"},"phone":{"type":"string"}}},"business":{"type":"object","description":"Business profile. Required when type is business.","required":["legalName","tradeName","email","phone","websites","entityType","description","industryType","naicsCode"],"properties":{"legalName":{"type":"string"},"tradeName":{"type":"string"},"email":{"type":"string","format":"email"},"phone":{"type":"string"},"websites":{"type":"array","items":{"type":"string","format":"uri"}},"entityType":{"type":"string"},"description":{"type":"string"},"industryType":{"type":"string"},"naicsCode":{"type":"string"}}},"registration":{"type":"object","description":"Business registration. Required when type is business.","required":["jurisdiction","registrationNumber","incorporationDate"],"properties":{"jurisdiction":{"type":"string"},"registrationNumber":{"type":"string"},"incorporationDate":{"type":"string","format":"date"}}},"address":{"type":"object","description":"Residential address for individuals or operating address for businesses.","required":["country","streetLine1","streetLine2","city","state","postalCode"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 or alpha-3 country code."},"streetLine1":{"type":"string"},"streetLine2":{"type":"string"},"city":{"type":"string"},"state":{"type":"string"},"postalCode":{"type":"string"}}},"taxInfo":{"type":"object","description":"Tax identifier. Required for business customers.","required":["country","type","value"],"properties":{"country":{"type":"string"},"type":{"type":"string","enum":["ssn","itin","ein","tin","vat","cpf","other"]},"value":{"type":"string"}}},"transactionProfile":{"type":"object","description":"Expected transaction profile. Required when type is business.","required":["accountPurpose","expectedMonthlyVolumeUsd","estimatedAnnualRevenueUsd","flowOfFundsDescription"],"properties":{"accountPurpose":{"type":"string"},"expectedMonthlyVolumeUsd":{"type":"number"},"estimatedAnnualRevenueUsd":{"type":"number"},"flowOfFundsDescription":{"type":"string"}}},"riskProfile":{"type":"object","description":"Risk profile. Required when type is business.","required":["operatingCountries","sanctionedCountryOperations","handlesCustomerFunds","highRiskActivities","complianceScreeningDescription"],"properties":{"operatingCountries":{"type":"array","items":{"type":"string"}},"sanctionedCountryOperations":{"type":"boolean"},"handlesCustomerFunds":{"type":"boolean"},"highRiskActivities":{"type":"array","items":{"type":"string"}},"complianceScreeningDescription":{"type":"string"}}},"shareholders":{"type":"array","items":{"type":"object","description":"Beneficial owner or control person. At least one is required for business customers.","required":["personal","ownership","address","taxInfo","identityDocument","attestedOwnershipStructureAt"],"properties":{"personal":{"type":"object","description":"Contact and identity information. Business customers require all listed fields; individual customers require email and may provide the other fields.","properties":{"firstName":{"type":"string"},"middleName":{"type":"string"},"lastName":{"type":"string"},"birthDate":{"type":"string","format":"date"},"email":{"type":"string","format":"email"},"phone":{"type":"string"}}},"ownership":{"type":"object","required":["percentage","hasControl","isSigner","isDirector","title"],"properties":{"percentage":{"type":"number","minimum":0,"maximum":100},"hasControl":{"type":"boolean"},"isSigner":{"type":"boolean"},"isDirector":{"type":"boolean"},"title":{"type":"string"}}},"address":{"type":"object","description":"Residential address for individuals or operating address for businesses.","required":["country","streetLine1","streetLine2","city","state","postalCode"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 or alpha-3 country code."},"streetLine1":{"type":"string"},"streetLine2":{"type":"string"},"city":{"type":"string"},"state":{"type":"string"},"postalCode":{"type":"string"}}},"taxInfo":{"type":"object","required":["type","value"],"properties":{"type":{"type":"string","enum":["ssn","itin","other"]},"value":{"type":"string"}}},"identityDocument":{"type":"object","required":["type","issuingCountry","number"],"properties":{"type":{"type":"string","enum":["passport","id_card","drivers_license"]},"issuingCountry":{"type":"string"},"number":{"type":"string"}}},"attestedOwnershipStructureAt":{"type":"string","format":"date-time"}}}},"metadata":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}],"discriminator":{"propertyName":"type"}}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Requested resource not found","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"422":{"description":"Merchant KYB is not approved for this space. Customer creation is blocked until the compliance verdict approves the merchant's own business profile; on spaces that require KYB, creation is blocked as not_submitted until the merchant submits it. Sandbox spaces are never blocked."},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"postV2Customers","tags":["Customer"],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Create an individual or business customer. The type field controls which nested objects are required.","oneOf":[{"title":"Individual","type":"object","description":"Create an individual customer.","required":["type","personal"],"properties":{"type":{"type":"string","enum":["individual"],"description":"Customer type."},"externalId":{"type":"string"},"personal":{"type":"object","description":"Contact and identity information. Business customers require all listed fields; individual customers require email and may provide the other fields.","properties":{"firstName":{"type":"string"},"middleName":{"type":"string"},"lastName":{"type":"string"},"birthDate":{"type":"string","format":"date"},"email":{"type":"string","format":"email"},"phone":{"type":"string"}}},"address":{"type":"object","description":"Residential address for individuals or operating address for businesses.","required":["country","streetLine1","streetLine2","city","state","postalCode"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 or alpha-3 country code."},"streetLine1":{"type":"string"},"streetLine2":{"type":"string"},"city":{"type":"string"},"state":{"type":"string"},"postalCode":{"type":"string"}}},"taxInfo":{"type":"object","description":"Tax identifier. Required for business customers.","required":["country","type","value"],"properties":{"country":{"type":"string"},"type":{"type":"string","enum":["ssn","itin","ein","tin","vat","cpf","other"]},"value":{"type":"string"}}},"metadata":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}}}},{"title":"Business","type":"object","description":"Create a business customer.","required":["type","personal","business","registration","address","taxInfo","transactionProfile","riskProfile","shareholders"],"properties":{"type":{"type":"string","enum":["business"],"description":"Customer type."},"externalId":{"type":"string"},"personal":{"type":"object","description":"Contact and identity information. Business customers require all listed fields; individual customers require email and may provide the other fields.","properties":{"firstName":{"type":"string"},"middleName":{"type":"string"},"lastName":{"type":"string"},"birthDate":{"type":"string","format":"date"},"email":{"type":"string","format":"email"},"phone":{"type":"string"}}},"business":{"type":"object","description":"Business profile. Required when type is business.","required":["legalName","tradeName","email","phone","websites","entityType","description","industryType","naicsCode"],"properties":{"legalName":{"type":"string"},"tradeName":{"type":"string"},"email":{"type":"string","format":"email"},"phone":{"type":"string"},"websites":{"type":"array","items":{"type":"string","format":"uri"}},"entityType":{"type":"string"},"description":{"type":"string"},"industryType":{"type":"string"},"naicsCode":{"type":"string"}}},"registration":{"type":"object","description":"Business registration. Required when type is business.","required":["jurisdiction","registrationNumber","incorporationDate"],"properties":{"jurisdiction":{"type":"string"},"registrationNumber":{"type":"string"},"incorporationDate":{"type":"string","format":"date"}}},"address":{"type":"object","description":"Residential address for individuals or operating address for businesses.","required":["country","streetLine1","streetLine2","city","state","postalCode"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 or alpha-3 country code."},"streetLine1":{"type":"string"},"streetLine2":{"type":"string"},"city":{"type":"string"},"state":{"type":"string"},"postalCode":{"type":"string"}}},"taxInfo":{"type":"object","description":"Tax identifier. Required for business customers.","required":["country","type","value"],"properties":{"country":{"type":"string"},"type":{"type":"string","enum":["ssn","itin","ein","tin","vat","cpf","other"]},"value":{"type":"string"}}},"transactionProfile":{"type":"object","description":"Expected transaction profile. Required when type is business.","required":["accountPurpose","expectedMonthlyVolumeUsd","estimatedAnnualRevenueUsd","flowOfFundsDescription"],"properties":{"accountPurpose":{"type":"string"},"expectedMonthlyVolumeUsd":{"type":"number"},"estimatedAnnualRevenueUsd":{"type":"number"},"flowOfFundsDescription":{"type":"string"}}},"riskProfile":{"type":"object","description":"Risk profile. Required when type is business.","required":["operatingCountries","sanctionedCountryOperations","handlesCustomerFunds","highRiskActivities","complianceScreeningDescription"],"properties":{"operatingCountries":{"type":"array","items":{"type":"string"}},"sanctionedCountryOperations":{"type":"boolean"},"handlesCustomerFunds":{"type":"boolean"},"highRiskActivities":{"type":"array","items":{"type":"string"}},"complianceScreeningDescription":{"type":"string"}}},"shareholders":{"type":"array","items":{"type":"object","description":"Beneficial owner or control person. At least one is required for business customers.","required":["personal","ownership","address","taxInfo","identityDocument","attestedOwnershipStructureAt"],"properties":{"personal":{"type":"object","description":"Contact and identity information. Business customers require all listed fields; individual customers require email and may provide the other fields.","properties":{"firstName":{"type":"string"},"middleName":{"type":"string"},"lastName":{"type":"string"},"birthDate":{"type":"string","format":"date"},"email":{"type":"string","format":"email"},"phone":{"type":"string"}}},"ownership":{"type":"object","required":["percentage","hasControl","isSigner","isDirector","title"],"properties":{"percentage":{"type":"number","minimum":0,"maximum":100},"hasControl":{"type":"boolean"},"isSigner":{"type":"boolean"},"isDirector":{"type":"boolean"},"title":{"type":"string"}}},"address":{"type":"object","description":"Residential address for individuals or operating address for businesses.","required":["country","streetLine1","streetLine2","city","state","postalCode"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 or alpha-3 country code."},"streetLine1":{"type":"string"},"streetLine2":{"type":"string"},"city":{"type":"string"},"state":{"type":"string"},"postalCode":{"type":"string"}}},"taxInfo":{"type":"object","required":["type","value"],"properties":{"type":{"type":"string","enum":["ssn","itin","other"]},"value":{"type":"string"}}},"identityDocument":{"type":"object","required":["type","issuingCountry","number"],"properties":{"type":{"type":"string","enum":["passport","id_card","drivers_license"]},"issuingCountry":{"type":"string"},"number":{"type":"string"}}},"attestedOwnershipStructureAt":{"type":"string","format":"date-time"}}},"minItems":1},"metadata":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}}}}],"discriminator":{"propertyName":"type"}},"examples":{"individual":{"summary":"Individual customer","value":{"type":"individual","personal":{"email":"customer@example.com","firstName":"Avery","lastName":"Stone","birthDate":"1990-01-01","phone":"+14155550100"},"address":{"country":"US","streetLine1":"1 Market Street","streetLine2":"Suite 100","city":"San Francisco","state":"CA","postalCode":"94105"}}},"business":{"summary":"Business customer","value":{"type":"business","personal":{"firstName":"Jamie","middleName":"L","lastName":"Rivera","birthDate":"1985-05-05","email":"owner@example.com","phone":"+14155550101"},"business":{"legalName":"Example Payments Inc.","tradeName":"Example Payments","email":"ops@example.com","phone":"+14155550102","websites":["https://example.com"],"entityType":"corporation","description":"Software and payment operations.","industryType":"software_development","naicsCode":"541511"},"registration":{"jurisdiction":"US","registrationNumber":"REG-123456","incorporationDate":"2020-01-15"},"address":{"country":"US","streetLine1":"2 Market Street","streetLine2":"Floor 2","city":"San Francisco","state":"CA","postalCode":"94105"},"taxInfo":{"country":"US","type":"ein","value":"12-3456789"},"transactionProfile":{"accountPurpose":"operations","expectedMonthlyVolumeUsd":100000,"estimatedAnnualRevenueUsd":1200000,"flowOfFundsDescription":"Customers pay invoices and the business pays vendors."},"riskProfile":{"operatingCountries":["US"],"sanctionedCountryOperations":false,"handlesCustomerFunds":false,"highRiskActivities":[],"complianceScreeningDescription":"Counterparties are screened before funds move."},"shareholders":[{"personal":{"firstName":"Jamie","middleName":"L","lastName":"Rivera","birthDate":"1985-05-05","email":"owner@example.com","phone":"+14155550101"},"ownership":{"percentage":35.25,"hasControl":true,"isSigner":true,"isDirector":false,"title":"CEO"},"address":{"country":"US","streetLine1":"2 Market Street","streetLine2":"Floor 2","city":"San Francisco","state":"CA","postalCode":"94105"},"taxInfo":{"type":"ssn","value":"987654321"},"identityDocument":{"type":"passport","issuingCountry":"US","number":"P1234567"},"attestedOwnershipStructureAt":"2024-01-01T00:00:00.000Z"}]}}}}}},"summary":"Create customer","description":"Create an individual or business customer through one v2 endpoint. The request body is discriminated by type and groups related data into nested objects. Upload documents after creation through the dedicated document endpoints."}},"/v2/customers/{customerId}":{"get":{"responses":{"200":{"description":"Customer retrieved successfully","content":{"application/json":{"schema":{"oneOf":[{"title":"Individual","type":"object","required":["id","type","personal","createdAt","updatedAt"],"properties":{"id":{"type":"string"},"type":{"type":"string","enum":["individual"]},"personal":{"type":"object","description":"Contact and identity information. Business customers require all listed fields; individual customers require email and may provide the other fields.","properties":{"firstName":{"type":"string"},"middleName":{"type":"string"},"lastName":{"type":"string"},"birthDate":{"type":"string","format":"date"},"email":{"type":"string","format":"email"},"phone":{"type":"string"}}},"address":{"type":"object","description":"Residential address for individuals or operating address for businesses.","required":["country","streetLine1","streetLine2","city","state","postalCode"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 or alpha-3 country code."},"streetLine1":{"type":"string"},"streetLine2":{"type":"string"},"city":{"type":"string"},"state":{"type":"string"},"postalCode":{"type":"string"}}},"taxInfo":{"type":"object","description":"Tax identifier. Required for business customers.","required":["country","type","value"],"properties":{"country":{"type":"string"},"type":{"type":"string","enum":["ssn","itin","ein","tin","vat","cpf","other"]},"value":{"type":"string"}}},"metadata":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},{"title":"Business","type":"object","required":["id","type","personal","createdAt","updatedAt"],"properties":{"id":{"type":"string"},"type":{"type":"string","enum":["business"]},"personal":{"type":"object","description":"Contact and identity information. Business customers require all listed fields; individual customers require email and may provide the other fields.","properties":{"firstName":{"type":"string"},"middleName":{"type":"string"},"lastName":{"type":"string"},"birthDate":{"type":"string","format":"date"},"email":{"type":"string","format":"email"},"phone":{"type":"string"}}},"business":{"type":"object","description":"Business profile. Required when type is business.","required":["legalName","tradeName","email","phone","websites","entityType","description","industryType","naicsCode"],"properties":{"legalName":{"type":"string"},"tradeName":{"type":"string"},"email":{"type":"string","format":"email"},"phone":{"type":"string"},"websites":{"type":"array","items":{"type":"string","format":"uri"}},"entityType":{"type":"string"},"description":{"type":"string"},"industryType":{"type":"string"},"naicsCode":{"type":"string"}}},"registration":{"type":"object","description":"Business registration. Required when type is business.","required":["jurisdiction","registrationNumber","incorporationDate"],"properties":{"jurisdiction":{"type":"string"},"registrationNumber":{"type":"string"},"incorporationDate":{"type":"string","format":"date"}}},"address":{"type":"object","description":"Residential address for individuals or operating address for businesses.","required":["country","streetLine1","streetLine2","city","state","postalCode"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 or alpha-3 country code."},"streetLine1":{"type":"string"},"streetLine2":{"type":"string"},"city":{"type":"string"},"state":{"type":"string"},"postalCode":{"type":"string"}}},"taxInfo":{"type":"object","description":"Tax identifier. Required for business customers.","required":["country","type","value"],"properties":{"country":{"type":"string"},"type":{"type":"string","enum":["ssn","itin","ein","tin","vat","cpf","other"]},"value":{"type":"string"}}},"transactionProfile":{"type":"object","description":"Expected transaction profile. Required when type is business.","required":["accountPurpose","expectedMonthlyVolumeUsd","estimatedAnnualRevenueUsd","flowOfFundsDescription"],"properties":{"accountPurpose":{"type":"string"},"expectedMonthlyVolumeUsd":{"type":"number"},"estimatedAnnualRevenueUsd":{"type":"number"},"flowOfFundsDescription":{"type":"string"}}},"riskProfile":{"type":"object","description":"Risk profile. Required when type is business.","required":["operatingCountries","sanctionedCountryOperations","handlesCustomerFunds","highRiskActivities","complianceScreeningDescription"],"properties":{"operatingCountries":{"type":"array","items":{"type":"string"}},"sanctionedCountryOperations":{"type":"boolean"},"handlesCustomerFunds":{"type":"boolean"},"highRiskActivities":{"type":"array","items":{"type":"string"}},"complianceScreeningDescription":{"type":"string"}}},"shareholders":{"type":"array","items":{"type":"object","description":"Beneficial owner or control person. At least one is required for business customers.","required":["personal","ownership","address","taxInfo","identityDocument","attestedOwnershipStructureAt"],"properties":{"personal":{"type":"object","description":"Contact and identity information. Business customers require all listed fields; individual customers require email and may provide the other fields.","properties":{"firstName":{"type":"string"},"middleName":{"type":"string"},"lastName":{"type":"string"},"birthDate":{"type":"string","format":"date"},"email":{"type":"string","format":"email"},"phone":{"type":"string"}}},"ownership":{"type":"object","required":["percentage","hasControl","isSigner","isDirector","title"],"properties":{"percentage":{"type":"number","minimum":0,"maximum":100},"hasControl":{"type":"boolean"},"isSigner":{"type":"boolean"},"isDirector":{"type":"boolean"},"title":{"type":"string"}}},"address":{"type":"object","description":"Residential address for individuals or operating address for businesses.","required":["country","streetLine1","streetLine2","city","state","postalCode"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 or alpha-3 country code."},"streetLine1":{"type":"string"},"streetLine2":{"type":"string"},"city":{"type":"string"},"state":{"type":"string"},"postalCode":{"type":"string"}}},"taxInfo":{"type":"object","required":["type","value"],"properties":{"type":{"type":"string","enum":["ssn","itin","other"]},"value":{"type":"string"}}},"identityDocument":{"type":"object","required":["type","issuingCountry","number"],"properties":{"type":{"type":"string","enum":["passport","id_card","drivers_license"]},"issuingCountry":{"type":"string"},"number":{"type":"string"}}},"attestedOwnershipStructureAt":{"type":"string","format":"date-time"}}}},"metadata":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}],"discriminator":{"propertyName":"type"}}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Requested resource not found","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"getV2CustomersByCustomerId","tags":["Customer"],"parameters":[{"in":"path","name":"customerId","schema":{"type":"string","description":"The customer ID"},"required":true}],"summary":"Get customer","description":"Retrieve an individual or business customer through one v2 endpoint."},"put":{"responses":{"200":{"description":"Customer updated successfully","content":{"application/json":{"schema":{"oneOf":[{"title":"Individual","type":"object","required":["id","type","personal","createdAt","updatedAt"],"properties":{"id":{"type":"string"},"type":{"type":"string","enum":["individual"]},"personal":{"type":"object","description":"Contact and identity information. Business customers require all listed fields; individual customers require email and may provide the other fields.","properties":{"firstName":{"type":"string"},"middleName":{"type":"string"},"lastName":{"type":"string"},"birthDate":{"type":"string","format":"date"},"email":{"type":"string","format":"email"},"phone":{"type":"string"}}},"address":{"type":"object","description":"Residential address for individuals or operating address for businesses.","required":["country","streetLine1","streetLine2","city","state","postalCode"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 or alpha-3 country code."},"streetLine1":{"type":"string"},"streetLine2":{"type":"string"},"city":{"type":"string"},"state":{"type":"string"},"postalCode":{"type":"string"}}},"taxInfo":{"type":"object","description":"Tax identifier. Required for business customers.","required":["country","type","value"],"properties":{"country":{"type":"string"},"type":{"type":"string","enum":["ssn","itin","ein","tin","vat","cpf","other"]},"value":{"type":"string"}}},"metadata":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},{"title":"Business","type":"object","required":["id","type","personal","createdAt","updatedAt"],"properties":{"id":{"type":"string"},"type":{"type":"string","enum":["business"]},"personal":{"type":"object","description":"Contact and identity information. Business customers require all listed fields; individual customers require email and may provide the other fields.","properties":{"firstName":{"type":"string"},"middleName":{"type":"string"},"lastName":{"type":"string"},"birthDate":{"type":"string","format":"date"},"email":{"type":"string","format":"email"},"phone":{"type":"string"}}},"business":{"type":"object","description":"Business profile. Required when type is business.","required":["legalName","tradeName","email","phone","websites","entityType","description","industryType","naicsCode"],"properties":{"legalName":{"type":"string"},"tradeName":{"type":"string"},"email":{"type":"string","format":"email"},"phone":{"type":"string"},"websites":{"type":"array","items":{"type":"string","format":"uri"}},"entityType":{"type":"string"},"description":{"type":"string"},"industryType":{"type":"string"},"naicsCode":{"type":"string"}}},"registration":{"type":"object","description":"Business registration. Required when type is business.","required":["jurisdiction","registrationNumber","incorporationDate"],"properties":{"jurisdiction":{"type":"string"},"registrationNumber":{"type":"string"},"incorporationDate":{"type":"string","format":"date"}}},"address":{"type":"object","description":"Residential address for individuals or operating address for businesses.","required":["country","streetLine1","streetLine2","city","state","postalCode"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 or alpha-3 country code."},"streetLine1":{"type":"string"},"streetLine2":{"type":"string"},"city":{"type":"string"},"state":{"type":"string"},"postalCode":{"type":"string"}}},"taxInfo":{"type":"object","description":"Tax identifier. Required for business customers.","required":["country","type","value"],"properties":{"country":{"type":"string"},"type":{"type":"string","enum":["ssn","itin","ein","tin","vat","cpf","other"]},"value":{"type":"string"}}},"transactionProfile":{"type":"object","description":"Expected transaction profile. Required when type is business.","required":["accountPurpose","expectedMonthlyVolumeUsd","estimatedAnnualRevenueUsd","flowOfFundsDescription"],"properties":{"accountPurpose":{"type":"string"},"expectedMonthlyVolumeUsd":{"type":"number"},"estimatedAnnualRevenueUsd":{"type":"number"},"flowOfFundsDescription":{"type":"string"}}},"riskProfile":{"type":"object","description":"Risk profile. Required when type is business.","required":["operatingCountries","sanctionedCountryOperations","handlesCustomerFunds","highRiskActivities","complianceScreeningDescription"],"properties":{"operatingCountries":{"type":"array","items":{"type":"string"}},"sanctionedCountryOperations":{"type":"boolean"},"handlesCustomerFunds":{"type":"boolean"},"highRiskActivities":{"type":"array","items":{"type":"string"}},"complianceScreeningDescription":{"type":"string"}}},"shareholders":{"type":"array","items":{"type":"object","description":"Beneficial owner or control person. At least one is required for business customers.","required":["personal","ownership","address","taxInfo","identityDocument","attestedOwnershipStructureAt"],"properties":{"personal":{"type":"object","description":"Contact and identity information. Business customers require all listed fields; individual customers require email and may provide the other fields.","properties":{"firstName":{"type":"string"},"middleName":{"type":"string"},"lastName":{"type":"string"},"birthDate":{"type":"string","format":"date"},"email":{"type":"string","format":"email"},"phone":{"type":"string"}}},"ownership":{"type":"object","required":["percentage","hasControl","isSigner","isDirector","title"],"properties":{"percentage":{"type":"number","minimum":0,"maximum":100},"hasControl":{"type":"boolean"},"isSigner":{"type":"boolean"},"isDirector":{"type":"boolean"},"title":{"type":"string"}}},"address":{"type":"object","description":"Residential address for individuals or operating address for businesses.","required":["country","streetLine1","streetLine2","city","state","postalCode"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 or alpha-3 country code."},"streetLine1":{"type":"string"},"streetLine2":{"type":"string"},"city":{"type":"string"},"state":{"type":"string"},"postalCode":{"type":"string"}}},"taxInfo":{"type":"object","required":["type","value"],"properties":{"type":{"type":"string","enum":["ssn","itin","other"]},"value":{"type":"string"}}},"identityDocument":{"type":"object","required":["type","issuingCountry","number"],"properties":{"type":{"type":"string","enum":["passport","id_card","drivers_license"]},"issuingCountry":{"type":"string"},"number":{"type":"string"}}},"attestedOwnershipStructureAt":{"type":"string","format":"date-time"}}}},"metadata":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}],"discriminator":{"propertyName":"type"}}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Requested resource not found","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"putV2CustomersByCustomerId","tags":["Customer"],"parameters":[{"in":"path","name":"customerId","schema":{"type":"string","description":"The customer ID"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Update an individual or business customer. The type field selects the customer variant.","oneOf":[{"title":"Individual","type":"object","description":"Update an individual customer.","required":["type"],"properties":{"type":{"type":"string","enum":["individual"],"description":"Customer type."},"personal":{"type":"object","description":"Contact and identity information. Business customers require all listed fields; individual customers require email and may provide the other fields.","properties":{"firstName":{"type":"string"},"middleName":{"type":"string"},"lastName":{"type":"string"},"birthDate":{"type":"string","format":"date"},"email":{"type":"string","format":"email"},"phone":{"type":"string"}}},"taxInfo":{"type":"object","description":"Tax identifier. Required for business customers.","required":["country","type","value"],"properties":{"country":{"type":"string"},"type":{"type":"string","enum":["ssn","itin","ein","tin","vat","cpf","other"]},"value":{"type":"string"}}}}},{"title":"Business","type":"object","description":"Update a business customer.","required":["type"],"properties":{"type":{"type":"string","enum":["business"],"description":"Customer type."},"personal":{"type":"object","description":"Contact and identity information. Business customers require all listed fields; individual customers require email and may provide the other fields.","properties":{"firstName":{"type":"string"},"middleName":{"type":"string"},"lastName":{"type":"string"},"birthDate":{"type":"string","format":"date"},"email":{"type":"string","format":"email"},"phone":{"type":"string"}}},"business":{"type":"object","description":"Business profile. Required when type is business.","required":["legalName","tradeName","email","phone","websites","entityType","description","industryType","naicsCode"],"properties":{"legalName":{"type":"string"},"tradeName":{"type":"string"},"email":{"type":"string","format":"email"},"phone":{"type":"string"},"websites":{"type":"array","items":{"type":"string","format":"uri"}},"entityType":{"type":"string"},"description":{"type":"string"},"industryType":{"type":"string"},"naicsCode":{"type":"string"}}},"registration":{"type":"object","description":"Business registration. Required when type is business.","required":["jurisdiction","registrationNumber","incorporationDate"],"properties":{"jurisdiction":{"type":"string"},"registrationNumber":{"type":"string"},"incorporationDate":{"type":"string","format":"date"}}},"address":{"type":"object","description":"Residential address for individuals or operating address for businesses.","required":["country","streetLine1","streetLine2","city","state","postalCode"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 or alpha-3 country code."},"streetLine1":{"type":"string"},"streetLine2":{"type":"string"},"city":{"type":"string"},"state":{"type":"string"},"postalCode":{"type":"string"}}},"taxInfo":{"type":"object","description":"Tax identifier. Required for business customers.","required":["country","type","value"],"properties":{"country":{"type":"string"},"type":{"type":"string","enum":["ssn","itin","ein","tin","vat","cpf","other"]},"value":{"type":"string"}}},"transactionProfile":{"type":"object","description":"Expected transaction profile. Required when type is business.","required":["accountPurpose","expectedMonthlyVolumeUsd","estimatedAnnualRevenueUsd","flowOfFundsDescription"],"properties":{"accountPurpose":{"type":"string"},"expectedMonthlyVolumeUsd":{"type":"number"},"estimatedAnnualRevenueUsd":{"type":"number"},"flowOfFundsDescription":{"type":"string"}}},"riskProfile":{"type":"object","description":"Risk profile. Required when type is business.","required":["operatingCountries","sanctionedCountryOperations","handlesCustomerFunds","highRiskActivities","complianceScreeningDescription"],"properties":{"operatingCountries":{"type":"array","items":{"type":"string"}},"sanctionedCountryOperations":{"type":"boolean"},"handlesCustomerFunds":{"type":"boolean"},"highRiskActivities":{"type":"array","items":{"type":"string"}},"complianceScreeningDescription":{"type":"string"}}}}}],"discriminator":{"propertyName":"type"}},"examples":{"individual":{"summary":"Individual customer","value":{"type":"individual","personal":{"email":"updated.customer@example.com","firstName":"Avery","lastName":"Stone","phone":"+14155550100"}}},"business":{"summary":"Business customer","value":{"type":"business","business":{"legalName":"Example Payments Inc.","tradeName":"Example Payments","phone":"+14155550102","websites":["https://example.com"],"entityType":"corporation","description":"Software and payment operations.","industryType":"software_development","naicsCode":"541511"},"transactionProfile":{"expectedMonthlyVolumeUsd":150000,"estimatedAnnualRevenueUsd":1800000}}}}}}},"summary":"Update customer","description":"Update an individual or business customer through one v2 endpoint."},"delete":{"responses":{"200":{"description":"Customer deleted successfully","content":{"application/json":{"schema":{"oneOf":[{"title":"Individual","type":"object","required":["success","message","customerId","type"],"properties":{"success":{"type":"boolean"},"message":{"type":"string"},"customerId":{"type":"string"},"type":{"type":"string","enum":["individual"]}}},{"title":"Business","type":"object","required":["success","message","customerId","type"],"properties":{"success":{"type":"boolean"},"message":{"type":"string"},"customerId":{"type":"string"},"type":{"type":"string","enum":["business"]}}}],"discriminator":{"propertyName":"type"}}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Requested resource not found","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"deleteV2CustomersByCustomerId","tags":["Customer"],"parameters":[{"in":"path","name":"customerId","schema":{"type":"string","description":"The customer ID"},"required":true}],"summary":"Delete customer","description":"Delete an individual or business customer through one v2 endpoint."}},"/v2/customers/{customerId}/banks":{"get":{"responses":{"200":{"description":"Customer banks returned","content":{"application/json":{"schema":{"type":"object","properties":{"customerId":{"type":"string"},"banks":{"type":"array","items":{"type":"object","properties":{"name":{"enum":["align_ae","align_gb","align_us","banking_circle_denmark","citi","cfsb","hsbc","jpmorgan_chase","nvio_pagos","stark_bank","zen"]},"displayName":{"type":"string"},"methods":{"type":"array","items":{"type":"object","properties":{"name":{"enum":["ach","fedwire","wire","rtp","pix","sepa","swift","spei","pse","transfers_3_0","uaefts","faster_payments","sepa_instant","ipp"]},"status":{"enum":["requestable","pending_review","ready_to_use","action_required","rejected","unavailable"]},"statusReason":{"anyOf":[{"type":"string","nullable":true}]},"accountTypes":{"type":"array","items":{"type":"object","properties":{"name":{"enum":["pooled","named"]},"status":{"enum":["requestable","pending_review","ready_to_use","action_required","rejected","unavailable"]},"statusReason":{"anyOf":[{"type":"string","nullable":true}]}},"required":["name","status"]}}},"required":["name","status","accountTypes"]}}},"required":["name","displayName","methods"]}}},"required":["customerId","banks"]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Customer not found"},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"getV2CustomersByCustomerIdBanks","tags":["Bank"],"parameters":[{"in":"path","name":"customerId","schema":{"type":"string"},"required":true}],"summary":"List customer banks","description":"Returns customer-scoped bank onboarding status using public bank and method names."},"post":{"responses":{"201":{"description":"Bank methods requested","content":{"application/json":{"schema":{"type":"object","properties":{"customerId":{"type":"string"},"banks":{"type":"array","items":{"type":"object","properties":{"name":{"enum":["align_ae","align_gb","align_us","banking_circle_denmark","citi","cfsb","hsbc","jpmorgan_chase","nvio_pagos","stark_bank","zen"]},"displayName":{"type":"string"},"methods":{"type":"array","items":{"type":"object","properties":{"name":{"enum":["ach","fedwire","wire","rtp","pix","sepa","swift","spei","pse","transfers_3_0","uaefts","faster_payments","sepa_instant","ipp"]},"status":{"enum":["requestable","pending_review","ready_to_use","action_required","rejected","unavailable"]},"statusReason":{"anyOf":[{"type":"string","nullable":true}]},"accountTypes":{"type":"array","items":{"type":"object","properties":{"name":{"enum":["pooled","named"]},"status":{"enum":["requestable","pending_review","ready_to_use","action_required","rejected","unavailable"]},"statusReason":{"anyOf":[{"type":"string","nullable":true}]}},"required":["name","status"]}}},"required":["name","status","accountTypes"]}}},"required":["name","displayName","methods"]}}},"required":["customerId","banks"]}}}},"400":{"description":"Invalid bank or method selection"},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Customer not found"},"422":{"description":"Customer verification or bank/method support blocker"},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"postV2CustomersByCustomerIdBanks","tags":["Bank"],"parameters":[{"in":"path","name":"customerId","schema":{"type":"string"},"required":true}],"summary":"Request customer bank methods","description":"Starts onboarding for selected bank methods. Public method names are mapped to internal rail requests. For a customizable fee flow, request `citi` with `ach`, wait until the method is ready, then use the Account tab: create a virtual account with `fees` through `POST /v2/customers/{customerId}/accounts` or manage them later in Bank account fees.","requestBody":{"required":true,"content":{"application/json":{"schema":{},"examples":{"citiAchOnboarding":{"summary":"Request Citi ACH","value":{"bank":"citi","methods":["ach"]}}}}}}}},"/v2/customers/{customerId}/banks/{bank}":{"get":{"responses":{"200":{"description":"Customer bank returned","content":{"application/json":{"schema":{"type":"object","properties":{"customerId":{"type":"string"},"bank":{"type":"object","properties":{"name":{"enum":["align_ae","align_gb","align_us","banking_circle_denmark","citi","cfsb","hsbc","jpmorgan_chase","nvio_pagos","stark_bank","zen"]},"displayName":{"type":"string"},"methods":{"type":"array","items":{"type":"object","properties":{"name":{"enum":["ach","fedwire","wire","rtp","pix","sepa","swift","spei","pse","transfers_3_0","uaefts","faster_payments","sepa_instant","ipp"]},"status":{"enum":["requestable","pending_review","ready_to_use","action_required","rejected","unavailable"]},"statusReason":{"anyOf":[{"type":"string","nullable":true}]},"accountTypes":{"type":"array","items":{"type":"object","properties":{"name":{"enum":["pooled","named"]},"status":{"enum":["requestable","pending_review","ready_to_use","action_required","rejected","unavailable"]},"statusReason":{"anyOf":[{"type":"string","nullable":true}]}},"required":["name","status"]}}},"required":["name","status","accountTypes"]}}},"required":["name","displayName","methods"]}},"required":["customerId","bank"]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Customer or bank not found"},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"getV2CustomersByCustomerIdBanksByBank","tags":["V2 Banks"],"parameters":[{"in":"path","name":"customerId","schema":{"type":"string"},"required":true},{"in":"path","name":"bank","schema":{"enum":["align_ae","align_gb","align_us","banking_circle_denmark","citi","cfsb","hsbc","jpmorgan_chase","nvio_pagos","stark_bank","zen"]},"required":true}],"summary":"Get customer bank","description":"Returns the supported account methods and account types for one customer-scoped bank."}},"/v2/customers/{customerId}/documents":{"post":{"responses":{"201":{"description":"Document uploaded successfully","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"customerId":{"type":"string"},"subject":{"type":"object","properties":{"type":{"enum":["customer","shareholder"]},"id":{"type":"string"}},"required":["type","id"]},"type":{"type":"string"},"status":{"enum":["uploaded","pending","approved","rejected","requested"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["customerId","subject","type","status"]}}}},"400":{"description":"Invalid document request"},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Customer or shareholder not found"},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"postV2CustomersByCustomerIdDocuments","tags":["Document"],"parameters":[{"in":"path","name":"customerId","schema":{"type":"string"},"required":true}],"summary":"Upload customer document","description":"Uploads a document for the path customer, or for a shareholder when shareholderId is provided in the body.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"shareholderId":{"type":"string","minLength":1,"description":"Business shareholder ID when uploading shareholder evidence."},"type":{"type":"string","minLength":1,"description":"Document type accepted for the selected customer or shareholder."},"base64":{"type":"string","minLength":1,"description":"Base64-encoded file content. Max 25MB."},"issuingCountry":{"type":"string","pattern":"^[A-Z]{3}$","description":"ISO 3166-1 alpha-3 country code for individual documents."}},"required":["type","base64"],"additionalProperties":false}}}}},"get":{"responses":{"200":{"description":"Document state returned","content":{"application/json":{"schema":{"type":"object","properties":{"documents":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"customerId":{"type":"string"},"subject":{"type":"object","properties":{"type":{"enum":["customer","shareholder"]},"id":{"type":"string"}},"required":["type","id"]},"type":{"type":"string"},"status":{"enum":["uploaded","pending","approved","rejected","requested"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["customerId","subject","type","status"]}}},"required":["documents"]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Customer or shareholder not found"},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"getV2CustomersByCustomerIdDocuments","tags":["Document"],"parameters":[{"in":"path","name":"customerId","schema":{"type":"string"},"required":true},{"in":"query","name":"shareholderId","schema":{"type":"string","minLength":1,"description":"Business shareholder ID when listing shareholder evidence."},"required":false}],"summary":"List customer document state","description":"Lists document state for the path customer, or for a shareholder when shareholderId is provided as a query parameter."}},"/v2/customers/{customerId}/documents/upload-token":{"post":{"responses":{"201":{"description":"Upload token minted","content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"Bearer token for POST /v2/documents/direct-upload. Valid for 5 minutes."},"expiresAt":{"type":"string","description":"ISO 8601 token expiry timestamp."},"maxBytes":{"type":"number","description":"Maximum accepted file size in bytes (25MB)."}},"required":["token","expiresAt","maxBytes"]}}}},"400":{"description":"Invalid upload token request"},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Customer or shareholder not found"},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"503":{"description":"Direct document upload is not configured"}},"operationId":"postV2CustomersByCustomerIdDocumentsUpload-token","tags":["Document"],"parameters":[{"in":"path","name":"customerId","schema":{"type":"string"},"required":true}],"summary":"Mint a direct document-upload token","description":"Issues a short-lived token that lets a browser POST file bytes straight to /v2/documents/direct-upload, bypassing intermediary body-size limits. The token only parks bytes in storage; associating the resulting storageKey with the customer still goes through the document upload routes.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"shareholderId":{"type":"string","minLength":1,"description":"Business shareholder ID when the upload targets shareholder evidence."},"type":{"type":"string","minLength":1,"description":"Document type the upload is intended for."}},"required":["type"]}}}}}},"/v2/customers/{customerId}/documents/{documentId}":{"get":{"responses":{"200":{"description":"Presigned download URL returned","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"Presigned S3 download URL, valid for 1 hour, attachment disposition."}},"required":["url"]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Customer, shareholder, or document not found"},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"getV2CustomersByCustomerIdDocumentsByDocumentId","tags":["Document"],"parameters":[{"in":"path","name":"customerId","schema":{"type":"string"},"required":true},{"in":"path","name":"documentId","schema":{"type":"string"},"required":true},{"in":"query","name":"shareholderId","schema":{"type":"string","minLength":1,"description":"Business shareholder ID when downloading shareholder evidence."},"required":false}],"summary":"Get customer document download URL","description":"Returns a presigned, time-limited download URL for one document of the path customer, or of a shareholder when shareholderId is provided as a query parameter."},"delete":{"responses":{"200":{"description":"Document deleted successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"}},"required":["success","message"]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Customer or document not found"},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"deleteV2CustomersByCustomerIdDocumentsByDocumentId","tags":["Document"],"parameters":[{"in":"path","name":"customerId","schema":{"type":"string"},"required":true},{"in":"path","name":"documentId","schema":{"type":"string"},"required":true}],"summary":"Delete customer document","description":"Soft-deletes one document for the path customer. The file remains retained for compliance, but active document APIs no longer return or use it."}},"/v2/customers/{customerId}/rails":{"get":{"responses":{"200":{"description":"Customer rail setup overview returned successfully","content":{"application/json":{"schema":{"type":"object","properties":{"customerId":{"type":"string","description":"ID of the customer this rail setup overview belongs to."},"requirements":{"type":"object","properties":{"canRequestRails":{"description":"Always true; each rail reports its own request requirements.","enum":[true]},"blockedReasons":{"type":"array","items":{"type":"object","properties":{"code":{"enum":["rail_unavailable","rail_already_requested","bank_selection_required"],"description":"Stable reason code for a rail request that is not available."},"message":{"type":"string","description":"User-safe explanation of what prevents the request."}},"required":["code","message"]},"description":"Compatibility field. Global customer verification no longer blocks rail requests."}},"required":["canRequestRails","blockedReasons"]},"rails":{"type":"array","items":{"type":"object","properties":{"rail":{"type":"string","description":"Rail code accepted by POST /v1/customers/{customerId}/rails. A previously requested rail can still appear even when it is no longer available for new requests."},"displayName":{"type":"string","description":"Rail name to show in your UI."},"status":{"enum":["requestable","pending_review","ready_to_use","action_required","rejected","unavailable"],"description":"Display state for this rail: requestable, pending_review, ready_to_use, action_required, rejected, or unavailable. action_required is retryable; rejected is terminal."},"statusReason":{"anyOf":[{"type":"string","nullable":true}],"description":"Developer-facing explanation for action_required, unavailable, or rejected rails; otherwise null. Internal diagnostics and trace IDs are not exposed."},"banks":{"type":"object","properties":{"selection":{"enum":["optional","required","not_applicable","unavailable"],"description":"How bank selection works for this rail: optional, required, not_applicable, or unavailable."},"defaults":{"type":"array","items":{"enum":["align_ae","align_gb","align_us","banking_circle_denmark","citi","cfsb","hsbc","jpmorgan_chase","nvio_pagos","stark_bank","zen"]},"description":"Bank codes the API uses when this rail is requested without explicit banks."},"options":{"type":"array","items":{"type":"object","properties":{"id":{"enum":["align_ae","align_gb","align_us","banking_circle_denmark","citi","cfsb","hsbc","jpmorgan_chase","nvio_pagos","stark_bank","zen"],"description":"Stable bank code to include in request.body.rails[0].banks or POST /v1/customers/{customerId}/rails."},"displayName":{"type":"string","description":"Bank name to show in your UI."},"default":{"type":"boolean","description":"Whether this bank is preselected in request.body."}},"required":["id","displayName","default"]},"description":"Selectable bank codes for this rail."}},"required":["selection","defaults","options"]},"request":{"type":"object","properties":{"allowed":{"type":"boolean","description":"Whether the generated request body can be submitted as-is now. If false because bank selection is required, collect a bank option first."},"blockedReasons":{"type":"array","items":{"type":"object","properties":{"code":{"enum":["rail_unavailable","rail_already_requested","bank_selection_required"],"description":"Stable reason code for a rail request that is not available."},"message":{"type":"string","description":"User-safe explanation of what prevents the request."}},"required":["code","message"]},"description":"Stable reasons the generated request body cannot be submitted as-is now."},"body":{"anyOf":[{"type":"object","properties":{"rails":{"type":"array","items":{"type":"object","properties":{"rail":{"enum":["ach_pooled","ach_named","fedwire_pooled","fedwire_named","wire_pooled","wire_named","rtp_pooled","rtp_named","sepa_pooled","sepa_named","swift_pooled","swift_named","pix_pooled","uaefts_pooled","faster_payments_pooled","faster_payments_named","sepa_instant_pooled","sepa_instant_named","ipp_pooled","ipp_named","spei_pooled","pse_pooled","transfers_3_0_pooled","spei","pse","rtp","transfers_3_0"],"description":"Rail code to include in POST /v1/customers/{customerId}/rails."},"banks":{"type":"array","items":{"enum":["align_ae","align_gb","align_us","banking_circle_denmark","citi","cfsb","hsbc","jpmorgan_chase","nvio_pagos","stark_bank","zen"]},"description":"Bank codes to include in POST /v1/customers/{customerId}/rails."}},"required":["rail"]},"minItems":1,"description":"One-rail request body your integration can send to POST /v1/customers/{customerId}/rails once required customer and bank inputs are resolved."}},"required":["rails"],"nullable":true}],"description":"Ready-to-submit body for POST /v1/customers/{customerId}/rails, or null when extra input or another blocker must be resolved first."}},"required":["allowed","blockedReasons","body"]},"currentRequest":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","description":"Rail request ID, such as cfr_xxx."},"status":{"enum":["pending_review","ready_to_use","action_required","rejected"],"description":"Aggregate status for this rail request: pending_review, ready_to_use, action_required, or rejected. action_required is retryable; rejected is terminal."},"rejectionReason":{"anyOf":[{"type":"string","nullable":true}],"description":"Reason shown for action_required or terminal rejected rail requests; null when no reason applies."},"banks":{"type":"array","items":{"type":"object","properties":{"id":{"enum":["align_ae","align_gb","align_us","banking_circle_denmark","citi","cfsb","hsbc","jpmorgan_chase","nvio_pagos","stark_bank","zen"],"description":"Stable bank code for the requested bank."},"displayName":{"type":"string","description":"Bank name to show in your UI."},"status":{"enum":["pending_review","ready_to_use","rejected"],"description":"Bank-attempt status for this bank in the rail request: pending_review, ready_to_use, or rejected. Bank rejected is scoped to this bank attempt, not terminal aggregate rail rejection."},"rejectionReason":{"anyOf":[{"type":"string","nullable":true}],"description":"Reason this bank was rejected, or null when not rejected."},"selectedBy":{"enum":["merchant","default"],"description":"Whether the bank was selected by your integration or chosen automatically."}},"required":["id","displayName","status","rejectionReason","selectedBy"]},"description":"Review status for each bank included in this rail request."},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp when the rail request was created."},"updatedAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp when the rail request was last updated."}},"required":["id","status","rejectionReason","banks","createdAt","updatedAt"],"nullable":true}],"description":"Current request for this rail, or null if the customer has not requested it."}},"required":["rail","displayName","status","statusReason","banks","request","currentRequest"]},"description":"Setup entry for each rail, including status, bank choices, request body, and existing request state."}},"required":["customerId","requirements","rails"]},"examples":{"requestableCustomer":{"summary":"Customer can request rails","value":{"customerId":"cus_abc123","requirements":{"canRequestRails":true,"blockedReasons":[]},"rails":[{"rail":"ach_pooled","displayName":"ACH pooled","status":"requestable","statusReason":null,"banks":{"selection":"optional","defaults":["jpmorgan_chase"],"options":[{"id":"jpmorgan_chase","displayName":"JPMorgan Chase","default":true},{"id":"hsbc","displayName":"HSBC","default":false}]},"request":{"allowed":true,"blockedReasons":[],"body":{"rails":[{"rail":"ach_pooled","banks":["jpmorgan_chase"]}]}},"currentRequest":null},{"rail":"pse","displayName":"PSE","status":"requestable","statusReason":null,"banks":{"selection":"not_applicable","defaults":[],"options":[]},"request":{"allowed":true,"blockedReasons":[],"body":{"rails":[{"rail":"pse"}]}},"currentRequest":null}]}},"existingRequest":{"summary":"Rail already requested","value":{"customerId":"cus_ghi789","requirements":{"canRequestRails":true,"blockedReasons":[]},"rails":[{"rail":"ach_pooled","displayName":"ACH pooled","status":"pending_review","statusReason":null,"banks":{"selection":"optional","defaults":["jpmorgan_chase"],"options":[{"id":"jpmorgan_chase","displayName":"JPMorgan Chase","default":true}]},"request":{"allowed":false,"blockedReasons":[{"code":"rail_already_requested","message":"This rail has already been requested."}],"body":null},"currentRequest":{"id":"cfr_abc123","status":"pending_review","rejectionReason":null,"banks":[{"id":"jpmorgan_chase","displayName":"JPMorgan Chase","status":"pending_review","rejectionReason":null,"selectedBy":"default"}],"createdAt":"2026-05-21T12:00:00.000Z","updatedAt":"2026-05-21T12:00:00.000Z"}}]}}}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Missing or invalid API key"},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Customer not found under this merchant and space"},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"getV2CustomersByCustomerIdRails","tags":["Rails"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"customerId","required":true}],"summary":"Get customer rail setup overview","description":"Use this read-only endpoint to build a customer rail setup screen and decide which rail request, if any, your integration can submit.\n\nIt returns a compatibility customer-level summary in `requirements`, one setup entry per rail in `rails`, selectable bank codes for rails that support bank choice, a ready-to-submit `rails[].request.body` when a rail can be requested now, and `currentRequest` when the customer already has a rail request.\n\nHow to use it:\n1. `requirements.canRequestRails` is always true and remains for compatibility.\n2. For each rail, use `rails[].status` as the display state and `rails[].statusReason` for user-facing context.\n3. When `rails[].request.allowed` is true and `rails[].request.body` is not null, the body can be submitted as-is.\n4. When `rails[].banks.selection` is `required`, collect one or more `banks.options[].id` values, build `{ \"rails\": [{ \"rail\": rails[].rail, \"banks\": [...] }] }`, and submit it to `POST /v1/customers/{customerId}/rails`.\n5. When bank selection is `optional`, submit the generated body as-is or replace `request.body.rails[0].banks` with selected `banks.options[].id` values from the same rail entry.\n\nStatus values:\n- `requestable`: the rail can be requested when `request.allowed` is true.\n- `pending_review`: an existing rail or bank request is under review.\n- `ready_to_use`: the rail is approved and available.\n- `action_required`: provider verification, bank selection, or a retryable rail issue must be resolved.\n- `rejected`: the aggregate rail was terminally rejected and cannot be retried.\n- `unavailable`: this rail cannot be requested.\n\nWhen `currentRequest` is present, `currentRequest.status` describes the aggregate rail request. Bank entries under `currentRequest.banks` use a smaller bank-attempt status set: `pending_review`, `ready_to_use`, or `rejected`. A rejected bank attempt is not the same as a terminal aggregate rail rejection.\n\nThis endpoint does not create rail requests, start customer verification, or contact banking partners."}},"/v2/documents/direct-upload":{"post":{"responses":{"200":{"description":"File parked in storage","content":{"application/json":{"schema":{"type":"object","properties":{"storageKey":{"type":"string","description":"Opaque signed reference for the parked file. Customer references can be associated through document upload routes; merchant-KYB references can be resolved through the merchant parked-URL route."}},"required":["storageKey"]}}}},"400":{"description":"Missing multipart file field"},"401":{"description":"Missing, invalid, or expired upload token"},"403":{"description":"Upload token claims are inconsistent"},"404":{"description":"Requested resource not found","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"413":{"description":"File exceeds the size allowed by the token"},"415":{"description":"Unsupported or mismatching file type"},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"503":{"description":"Direct document upload is not configured"}},"operationId":"postV2DocumentsDirect-upload","tags":["Document"],"parameters":[],"summary":"Upload document bytes with an upload token","security":[{"uploadToken":[]}],"description":"Parks one document file in storage, authorized solely by a short-lived customer-document or merchant-KYB Bearer upload token in the Authorization header. Send multipart/form-data with a single `file` field — every other property (scope, document type, size limit) comes from the verified token claims. Max 25MB. Supported formats: JPEG, PNG, PDF, WebP, HEIF. The route only parks bytes; use the returned opaque storageKey with the matching customer association route or merchant parked-URL route."}},"/v2/meta/banks":{"get":{"responses":{"200":{"description":"Supported banks returned","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"name":{"enum":["align_ae","align_gb","align_us","banking_circle_denmark","citi","cfsb","hsbc","jpmorgan_chase","nvio_pagos","stark_bank","zen"]},"methods":{"type":"array","items":{"enum":["ach","fedwire","wire","rtp","pix","sepa","swift","spei","pse","transfers_3_0","uaefts","faster_payments","sepa_instant","ipp"]}}},"required":["name","methods"]}}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Requested resource not found","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"getV2MetaBanks","tags":["Bank"],"parameters":[],"summary":"List supported banks and methods","description":"Returns the public bank/method catalog used by v2 bank onboarding and account requests."}},"/v2/quote":{"post":{"responses":{"200":{"description":"Quote created","content":{"application/json":{"schema":{"type":"object","description":"Quote response. Shape varies by direction; direction is always payin or payout.","required":["id","direction","rate","fee","destination_amount","state","expires_at","created_at"],"properties":{"id":{"type":"string","description":"Quote ID (quo_xxx)."},"direction":{"type":"string","enum":["payin","payout"],"description":"Quote direction."},"from":{"type":"object","description":"Source details for the quote.","additionalProperties":true},"to":{"type":"object","description":"Destination details for payout quotes.","additionalProperties":true},"wallet_to":{"type":"string","description":"Destination wallet for payin quotes."},"account":{"type":"string","description":"Destination account for payout quotes."},"wallet_from":{"type":"string","description":"Source wallet for payout quotes."},"rate":{"type":"string","description":"Exchange rate."},"fee":{"type":"object","required":["percent","fixed","total","currency"],"properties":{"percent":{"type":"string"},"fixed":{"type":"string"},"total":{"type":"string"},"currency":{"type":"string"}}},"destination_amount":{"type":"string","description":"Final destination amount after rate and fees."},"state":{"type":"string","enum":["pending","used","expired"]},"expires_at":{"type":"string"},"created_at":{"type":"string"}}}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Requested resource not found","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"postV2Quote","tags":["Transfer"],"parameters":[],"summary":"Create quote","description":"Creates a payin or payout quote. Public v2 requests use direction plus bank/method or account fields. For deterministic per-account pay-in fees, include the virtual account `acc_*` returned by `POST /v2/customers/{customerId}/accounts`.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Create a payin or payout quote. Payin quotes require bank, method, and wallet_to; include account to deterministically apply per-account virtual-account fees. Payout quotes require account and wallet_from.","additionalProperties":false,"required":["direction","amount"],"properties":{"direction":{"type":"string","enum":["payin","payout"],"description":"Quote direction. Use payin to fund a wallet or payout to send from a wallet."},"amount":{"anyOf":[{"type":"string","minLength":1},{"type":"number","minimum":0.1}],"description":"Source amount for the quote."},"currency":{"type":"string","description":"Source currency. Defaults to USD for payin quotes and USDC for payout quotes."},"bank":{"type":"string","enum":["align_ae","align_gb","align_us","banking_circle_denmark","citi","cfsb","hsbc","jpmorgan_chase","nvio_pagos","stark_bank","zen"],"description":"Required for payin quotes."},"method":{"type":"string","enum":["ach","fedwire","wire","rtp","pix","sepa","swift","spei","pse","transfers_3_0","uaefts","faster_payments","sepa_instant","ipp"],"description":"Required for payin quotes."},"wallet_to":{"type":"string","pattern":"^wal_.+","description":"Required for payin quotes. Wallet receiving the funds."},"account":{"type":"string","pattern":"^(acc_|racc_).+","description":"Optional for payin quotes to apply a specific acc_xxx virtual-account fee config. Required for payout quotes as the destination account ID."},"wallet_from":{"type":"string","pattern":"^wal_.+","description":"Required for payout quotes. Wallet sending the funds."}}},"examples":{"citiAchPayinWithAccountFees":{"summary":"Citi ACH pay-in using account fee config","value":{"direction":"payin","amount":"1000.00","currency":"USD","bank":"citi","method":"ach","account":"acc_citi_ach_123","wallet_to":"wal_usdc_123"}},"payin":{"summary":"Payin quote","value":{"direction":"payin","amount":"100.00","currency":"USD","bank":"cfsb","method":"ach","wallet_to":"wal_xxx"}},"payout":{"summary":"Payout quote","value":{"direction":"payout","amount":"100.00","currency":"USDC","account":"acc_xxx","wallet_from":"wal_xxx"}}}}}}}},"/v2/transfer":{"post":{"responses":{"200":{"description":"Transfer created","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","description":"Transfer ID for tracking the payin"},"to":{"type":"string","description":"Wallet ID"},"rail":{"type":"string","description":"Payment rail"},"currency":{"type":"string","description":"Currency code (e.g., USD, EUR, USDC)"},"amount":{"type":"string","description":"Amount to pay in"},"resource":{"type":"string","description":"Deprecated: Use recipient_details instead. Wallet address or payment URL."},"recipient_details":{"anyOf":[{"type":"object","properties":{"type":{"anyOf":[{"enum":["iban"]},{"enum":["sepa"]},{"enum":["uaefts"]}],"description":"Recipient type: SEPA, UAEFTS, or generic IBAN transfer"},"description":{"type":"string","description":"Human-readable description of how to complete the payment"},"reference":{"type":"string","description":"Wire transfer reference to include in payment"},"iban":{"type":"string","description":"IBAN to send payment to"},"bic":{"type":"string","description":"BIC/SWIFT code"},"bank_name":{"type":"string","description":"Bank name"},"account_holder_name":{"type":"string","description":"Account holder name"}},"required":["type","description","reference","iban","bic","bank_name","account_holder_name"]},{"type":"object","properties":{"type":{"description":"Recipient type: UK Faster Payments","enum":["faster_payments"]},"description":{"type":"string","description":"Human-readable description of how to complete the payment"},"reference":{"type":"string","description":"Payment reference to include in the transfer"},"sort_code":{"type":"string","description":"UK bank sort code"},"account_number":{"type":"string","description":"UK account number"},"bank_name":{"type":"string","description":"Bank name"},"account_holder_name":{"type":"string","description":"Account holder name"}},"required":["type","description","reference","sort_code","account_number","bank_name","account_holder_name"]},{"type":"object","properties":{"type":{"description":"Recipient type: SWIFT international wire transfer","enum":["swift"]},"description":{"type":"string","description":"Human-readable description of how to complete the payment"},"reference":{"type":"string","description":"Wire transfer reference to include in payment"},"swift_code":{"type":"string","description":"SWIFT/BIC code of the receiving bank"},"account_number":{"type":"string","description":"Bank account number"},"bank_name":{"type":"string","description":"Bank name"},"account_holder_name":{"type":"string","description":"Account holder name"},"routing_number":{"type":"string","description":"Routing number (ABA for US, sort code for UK)"}},"required":["type","description","reference","swift_code","account_number","bank_name","account_holder_name"]},{"type":"object","properties":{"type":{"description":"Recipient type: ACH bank transfer (US)","enum":["ach"]},"description":{"type":"string","description":"Human-readable description of how to complete the payment"},"reference":{"type":"string","description":"ACH transfer reference to include in payment"},"routing_number":{"type":"string","description":"ABA routing number (9 digits)"},"account_number":{"type":"string","description":"Bank account number"},"account_type":{"type":"string","description":"Account type (checking or savings)"},"bank_name":{"type":"string","description":"Bank name"},"account_holder_name":{"type":"string","description":"Account holder name"}},"required":["type","description","reference","routing_number","account_number","account_type","bank_name","account_holder_name"]},{"type":"object","properties":{"type":{"description":"Recipient type: Fedwire bank transfer (US)","enum":["fedwire"]},"description":{"type":"string","description":"Human-readable description of how to complete the payment"},"reference":{"type":"string","description":"Wire transfer reference to include in payment"},"routing_number":{"type":"string","description":"ABA routing number (9 digits)"},"account_number":{"type":"string","description":"Bank account number"},"account_type":{"type":"string","description":"Account type (checking or savings)"},"bank_name":{"type":"string","description":"Bank name"},"account_holder_name":{"type":"string","description":"Account holder name"}},"required":["type","description","reference","routing_number","account_number","account_type","bank_name","account_holder_name"]},{"type":"object","properties":{"type":{"description":"Recipient type: RTP bank transfer (US)","enum":["rtp"]},"description":{"type":"string","description":"Human-readable description of how to complete the payment"},"reference":{"type":"string","description":"RTP transfer reference to include in payment"},"routing_number":{"type":"string","description":"ABA routing number (9 digits)"},"account_number":{"type":"string","description":"Bank account number"},"account_type":{"type":"string","description":"Account type (checking or savings)"},"bank_name":{"type":"string","description":"Bank name"},"account_holder_name":{"type":"string","description":"Account holder name"}},"required":["type","description","reference","routing_number","account_number","account_type","bank_name","account_holder_name"]},{"type":"object","properties":{"type":{"description":"Recipient type: wallet address for crypto deposits","enum":["wallet_address"]},"description":{"type":"string","description":"Human-readable description of how to complete the payment"},"wallet_address":{"type":"string","description":"Wallet address to send crypto to"},"network":{"type":"string","description":"Blockchain network (e.g., polygon, ethereum)"}},"required":["type","description","wallet_address","network"]},{"type":"object","properties":{"type":{"description":"Recipient type: payment link for fiat onramp","enum":["payment_link"]},"description":{"type":"string","description":"Human-readable description of how to complete the payment"},"url":{"type":"string","description":"URL to complete the payment"}},"required":["type","description","url"]},{"type":"object","properties":{"type":{"description":"Recipient type: PIX (Brazil instant payment)","enum":["pix"]},"description":{"type":"string","description":"Human-readable description of how to complete the payment"},"pix_code":{"type":"string","description":"EMV/BR Code payload — paste into banking app or render as QR client-side"},"brl_amount":{"type":"string","description":"Exact BRL amount the end user must transfer"},"expires_at":{"type":"number","description":"Unix timestamp (ms) when the PIX code expires — typically ~5 minutes after creation"}},"required":["type","description","pix_code"]},{"type":"object","properties":{"type":{"description":"Recipient type: SPEI (Mexico bank transfer)","enum":["spei"]},"description":{"type":"string","description":"Human-readable description of how to complete the payment"},"clabe":{"type":"string","description":"CLABE details to copy into the banking app"},"mxn_amount":{"type":"string","description":"Exact MXN amount the end user must transfer"},"reference":{"type":"string","description":"Payment reference to include when available"},"expires_at":{"type":"number","description":"Unix timestamp (ms) when the payment instructions expire"}},"required":["type","description","clabe"]},{"type":"object","properties":{"type":{"description":"Recipient type: PSE (Colombia payment link)","enum":["pse"]},"description":{"type":"string","description":"Human-readable description of how to complete the payment"},"url":{"type":"string","description":"URL to complete the PSE payment"},"cop_amount":{"type":"string","description":"Exact COP amount the end user must pay"},"expires_at":{"type":"number","description":"Unix timestamp (ms) when the payment link expires"}},"required":["type","description","url"]},{"type":"object","properties":{"type":{"description":"Recipient type: Transfers 3.0 (Argentina bank transfer)","enum":["transfers"]},"description":{"type":"string","description":"Human-readable description of how to complete the payment"},"cbu":{"type":"string","description":"CBU details to copy into the banking app"},"ars_amount":{"type":"string","description":"Exact ARS amount the end user must transfer"},"reference":{"type":"string","description":"Payment reference to include when available"},"expires_at":{"type":"number","description":"Unix timestamp (ms) when the payment instructions expire"}},"required":["type","description","cbu"]}],"description":"Payment instructions based on rail type"},"state":{"type":"string","description":"PayIn state"},"sender":{"type":"object","properties":{"name":{"type":"string"},"bankName":{"type":"string"},"accountLast4":{"type":"string","pattern":"^\\d{4}$"}},"required":[],"description":"Available sender identity evidence; absent when the provider did not supply it"}},"required":["id","to","rail","currency","amount","recipient_details","state"]},{"type":"object","properties":{"id":{"type":"string","description":"Transfer ID for tracking the payout"},"state":{"type":"string","description":"Payout state"},"from":{"type":"object","properties":{"rail":{"type":"string","description":"Source rail (inferred from wallet)"},"id":{"type":"string","description":"Wallet ID (wal_xxx)"},"amount":{"type":"number","description":"Source amount"},"currency":{"type":"string","description":"Source currency"}},"required":["rail","id","amount","currency"],"description":"Source details"},"to":{"type":"object","properties":{"rail":{"type":"string","description":"Destination rail"},"id":{"type":"string","description":"Destination identifier"},"amount":{"type":"number","description":"Destination amount"},"currency":{"type":"string","description":"Destination currency"}},"required":["rail","id","amount","currency"],"description":"Destination details"},"recipient_details":{"type":"object","properties":{"masked_iban":{"type":"string","description":"Masked IBAN (SEPA only, e.g., DE89***1234)"},"masked_account_number":{"type":"string","description":"Masked domestic account number (ACH/fedwire/SWIFT, e.g., 5551**4567)"},"account_holder_name":{"anyOf":[{"type":"string","nullable":true}],"description":"Account holder name"},"bank_name":{"anyOf":[{"type":"string","nullable":true}],"description":"Bank name"}},"required":["account_holder_name","bank_name"],"description":"Recipient account details (for bank offramps)"},"url":{"type":"string","description":"Legacy primary link: payment link for fiat sources, explorer URL otherwise"},"onchain_url":{"type":"string","description":"Always the blockchain explorer URL when available"},"tracking":{"type":"object","properties":{"current":{"type":"object","properties":{"key":{"enum":["payout_created","preparing_route","funds_sent_onchain","funds_received_banking_partner","bank_transfer_initiated","payout_completed","payout_failed","needs_review"],"description":"Stable current tracking step identifier"},"label":{"type":"string","description":"Current tracking label"},"description":{"type":"string","description":"Current tracking description"}},"required":["key","label","description"]},"steps":{"type":"array","items":{"type":"object","properties":{"key":{"enum":["payout_created","preparing_route","funds_sent_onchain","funds_received_banking_partner","bank_transfer_initiated","payout_completed","payout_failed","needs_review"],"description":"Stable payout tracking step identifier"},"label":{"type":"string","description":"Customer-facing step label"},"description":{"type":"string","description":"Customer-facing step description"},"status":{"enum":["completed","current","pending","failed","attention"],"description":"Step display status"},"timestamp":{"type":"string","description":"ISO timestamp when known"},"details":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string","description":"Detail label"},"value":{"type":"string","description":"Detail value"},"href":{"type":"string","description":"Optional public link for the detail"},"copyLabel":{"type":"string","description":"Optional copy button label"},"monospace":{"type":"boolean","description":"Whether the value should be displayed as a code-like value"}},"required":["label","value"]},"description":"Optional safe public details for this step"}},"required":["key","label","description","status"]},"description":"Customer-facing payout tracking timeline"}},"required":["current","steps"],"description":"Customer-facing payout tracking timeline"}},"required":["id","state","from","to"]}]}}}},"400":{"description":"Quote was not created through /v2/quote"},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Quote not found"},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"postV2Transfer","tags":["Transfer"],"parameters":[],"summary":"Create transfer from quote","description":"Executes a v2 quote by dispatching to the existing payin or payout transfer service based on persisted quote direction.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"quote":{"type":"string","pattern":"^quo_[a-zA-Z0-9]+$"}},"required":["quote"],"additionalProperties":false}}}}}},"/v3/customers/{customerId}/related-parties":{"post":{"responses":{"201":{"description":"Related party created","headers":{"Idempotency-Replayed":{"description":"Present with value `true` when an idempotent request is replayed.","schema":{"type":"string","enum":["true"]}}},"content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/RelatedParty"}}},"examples":{"personDirector":{"summary":"Created person director","value":{"data":{"id":"rp_01JDIRECTOR","customerId":"cus_01JBUSINESS","partyType":"person","roles":["director"],"title":"Chief executive officer","person":{"firstName":"Amina","lastName":"Diallo","residenceCountry":"FR"},"createdAt":"2026-07-15T18:20:00.000Z","updatedAt":"2026-07-15T18:20:00.000Z"}}}}}}},"400":{"description":"Invalid related-party body, wrong union field, or missing idempotency key.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["validation_error","invalid_field_for_type"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Customer not found, foreign, or archived.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["customer_not_found"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"409":{"description":"Idempotency conflict or request in progress.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["idempotency_conflict","idempotency_request_in_progress"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}},"examples":{"requestInProgress":{"summary":"An identical request is still in progress","value":{"type":"https://docs.swipelux.com/errors/idempotency-request-in-progress","title":"Idempotency Request In Progress","status":409,"code":"idempotency_request_in_progress","detail":"A request with this Idempotency-Key is still in progress.","correlationId":"01JERRORIDEMPOTENCY","retryable":true}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"postV3CustomersByCustomerIdRelated-parties","tags":["customers"],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":255},"example":"idem_20260626_0001","description":"Required for effectful v3 requests (POST, PATCH, PUT, DELETE). Reuse the same key with the same body to replay the cached response."},{"schema":{"type":"string"},"in":"path","name":"customerId","required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["partyType","roles","person"],"properties":{"partyType":{"type":"string","enum":["person"]},"roles":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["control_person","director","officer","authorized_signer","authorized_representative","compliance_officer","primary_contact","account_administrator","trustee","settlor","protector","beneficiary","general_partner","limited_partner","other"]}},"roleDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"title":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"ownership":{"type":"object","minProperties":1,"properties":{"declared":{"type":"boolean"},"directPercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$"},"indirectPercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$"},"effectivePercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$"}}},"votingRights":{"type":"object","minProperties":1,"properties":{"declared":{"type":"boolean"},"directPercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$"},"indirectPercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$"},"effectivePercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$"}}},"control":{"type":"object","properties":{"declared":{"type":"boolean"},"direct":{"type":"boolean"},"indirect":{"type":"boolean"},"description":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected."}}},"person":{"type":"object","properties":{"firstName":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"middleName":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"lastName":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"birthDate":{"type":"string","format":"date"},"birthCountry":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"nationalities":{"type":"array","uniqueItems":true,"items":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"residenceCountry":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"email":{"type":"string","format":"email","maxLength":254},"phone":{"type":"string","pattern":"^\\+[1-9][0-9]{1,14}$"},"residentialAddress":{"type":"object","minProperties":1,"properties":{"streetLine1":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"streetLine2":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"city":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"state":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"postalCode":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"description":"Progressively collected address with at least one supplied fact."},"mailingAddress":{"type":"object","minProperties":1,"properties":{"streetLine1":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"streetLine2":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"city":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"state":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"postalCode":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"description":"Progressively collected address with at least one supplied fact."},"taxResidencies":{"type":"array","uniqueItems":true,"items":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"taxIdentifiers":{"type":"array","items":{"type":"object","required":["type","country","value"],"properties":{"type":{"type":"string","enum":["ssn","itin","ein","tin","vat","cpf","cnpj","other"]},"typeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"value":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."}},"description":"Tax identifier. typeDescription is required and allowed only for type other."}},"identityDocuments":{"type":"array","items":{"type":"object","required":["type","issuingCountry"],"properties":{"type":{"type":"string","enum":["passport","national_id","drivers_license","residence_permit","government_id","state_or_provincial_id","other"]},"typeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"issuingCountry":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"issuingRegion":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"number":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"issuedOn":{"type":"string","format":"date"},"expiresOn":{"type":"string","format":"date"},"doesNotExpire":{"type":"boolean"}},"description":"Identity-document metadata; number is optional and expiry facts are mutually consistent."}},"employment":{"type":"object","minProperties":1,"properties":{"status":{"type":"string","enum":["employed","self_employed","unemployed","student","retired","homemaker","other"]},"statusDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"occupation":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."}},"description":"Employment requires status or occupation; statusDescription is exclusive to other."}},"description":"Reusable progressively collected individual identity facts."}}},{"type":"object","required":["partyType","roles","entity"],"properties":{"partyType":{"type":"string","enum":["entity"]},"roles":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["control_person","director","officer","authorized_signer","authorized_representative","compliance_officer","primary_contact","account_administrator","trustee","settlor","protector","beneficiary","general_partner","limited_partner","other"]}},"roleDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"title":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"ownership":{"type":"object","minProperties":1,"properties":{"declared":{"type":"boolean"},"directPercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$"},"indirectPercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$"},"effectivePercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$"}}},"votingRights":{"type":"object","minProperties":1,"properties":{"declared":{"type":"boolean"},"directPercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$"},"indirectPercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$"},"effectivePercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$"}}},"control":{"type":"object","properties":{"declared":{"type":"boolean"},"direct":{"type":"boolean"},"indirect":{"type":"boolean"},"description":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected."}}},"entity":{"type":"object","required":["legalName"],"properties":{"legalName":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"tradeNames":{"type":"array","uniqueItems":true,"items":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."}},"legalForm":{"type":"string","enum":["corporation","limited_liability_company","partnership","limited_partnership","sole_proprietorship","nonprofit","cooperative","association","professional_association","foundation","trust","investment_fund","society","dao","government_entity","other"]},"legalFormDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"email":{"type":"string","format":"email","maxLength":254},"complianceEmail":{"type":"string","format":"email","maxLength":254},"phone":{"type":"string","pattern":"^\\+[1-9][0-9]{1,14}$"},"websites":{"type":"array","uniqueItems":true,"items":{"type":"string","format":"uri","maxLength":2048}},"description":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected."},"productsAndServices":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected."},"industryClassifications":{"type":"array","items":{"type":"object","required":["scheme","code"],"properties":{"scheme":{"type":"string","enum":["naics","sic","nace","isic","mcc","other"]},"schemeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"code":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."}}}},"customerTypes":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["individual","business","financial_institution","government","nonprofit","other"]}},"customerTypeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"salesChannels":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["online","in_person","marketplace","mobile_app","business_to_business","other"]}},"salesChannelDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"registration":{"type":"object","minProperties":1,"properties":{"jurisdiction":{"type":"object","required":["country"],"properties":{"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"region":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."}},"description":"Country and optional country-specific registration region."},"number":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"formationDate":{"type":"string","format":"date"}}},"registeredAddress":{"type":"object","minProperties":1,"properties":{"streetLine1":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"streetLine2":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"city":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"state":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"postalCode":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"description":"Progressively collected address with at least one supplied fact."},"operatingAddress":{"type":"object","minProperties":1,"properties":{"streetLine1":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"streetLine2":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"city":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"state":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"postalCode":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"description":"Progressively collected address with at least one supplied fact."},"mailingAddress":{"type":"object","minProperties":1,"properties":{"streetLine1":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"streetLine2":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"city":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"state":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"postalCode":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"description":"Progressively collected address with at least one supplied fact."},"operatingCountries":{"type":"array","uniqueItems":true,"items":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"taxResidencies":{"type":"array","uniqueItems":true,"items":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"taxIdentifiers":{"type":"array","items":{"type":"object","required":["type","country","value"],"properties":{"type":{"type":"string","enum":["ssn","itin","ein","tin","vat","cpf","cnpj","other"]},"typeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"value":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."}},"description":"Tax identifier. typeDescription is required and allowed only for type other."}},"publicListing":{"type":"object","minProperties":1,"properties":{"exchange":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"ticker":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"jurisdiction":{"type":"object","required":["country"],"properties":{"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"region":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."}},"description":"Country and optional country-specific registration region."}}},"regulatoryStatus":{"type":"string","enum":["regulated","pending","unregulated","exempt"]},"regulatoryRegistrations":{"type":"array","items":{"type":"object","required":["type","jurisdiction"],"properties":{"type":{"type":"string","enum":["money_transmitter","money_services_business","bank","electronic_money_institution","payment_institution","virtual_asset_service_provider","broker_dealer","investment_adviser","lender","other"]},"typeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"jurisdiction":{"type":"object","required":["country"],"properties":{"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"region":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."}},"description":"Country and optional country-specific registration region."},"authority":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"number":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"status":{"type":"string","enum":["active","pending","suspended","revoked","expired"]},"issuedOn":{"type":"string","format":"date"},"expiresOn":{"type":"string","format":"date"}}}}},"description":"Reusable business identity; legalName is the required anchor."}}}],"discriminator":{"propertyName":"partyType"}},"examples":{"personDirector":{"summary":"Person director","value":{"partyType":"person","roles":["director"],"title":"Chief executive officer","person":{"firstName":"Amina","lastName":"Diallo","residenceCountry":"FR"}}}}}}},"summary":"Create related party","description":"Creates a person or entity related party for a business customer. The party gets a stable rp_ id, requires at least one role or one ownership, voting, or control fact, and the parent customer's updatedAt advances in the same transaction."},"get":{"responses":{"200":{"description":"Related-party summaries","content":{"application/json":{"schema":{"type":"object","required":["data","nextCursor","hasMore"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/RelatedPartySummary"}},"nextCursor":{"type":"string","nullable":true},"hasMore":{"type":"boolean"}}},"examples":{"activeParties":{"summary":"Active related-party summaries","value":{"data":[{"id":"rp_01JDIRECTOR","customerId":"cus_01JBUSINESS","partyType":"person","roles":["director"],"displayName":"Amina Diallo","hasOwnership":false,"hasVotingRights":false,"hasControl":false,"createdAt":"2026-07-15T18:20:00.000Z","updatedAt":"2026-07-15T18:20:00.000Z"}],"nextCursor":null,"hasMore":false}}}}}},"400":{"description":"Invalid or unknown related-party list query parameter.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["validation_error","unknown_parameter"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Customer not found, foreign, or archived.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["customer_not_found"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"getV3CustomersByCustomerIdRelated-parties","tags":["customers"],"parameters":[{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer"}},{"name":"updatedAfter","in":"query","required":false,"schema":{"type":"string","format":"date-time"},"description":"Return only records updated at or after this RFC 3339 timestamp. Use it to recover from missed webhooks by replaying a window of changes."},{"schema":{"type":"string"},"in":"path","name":"customerId","required":true}],"summary":"List related parties","description":"Returns active related-party summaries for the customer with cursor pagination. Summaries carry roles, derived display name, and ownership, voting, and control indicator booleans; archived parties are excluded."}},"/v3/customers/{customerId}/related-parties/{relatedPartyId}":{"get":{"responses":{"200":{"description":"Related party","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/RelatedParty"}}},"examples":{"personDirector":{"summary":"Person related-party detail","value":{"data":{"id":"rp_01JDIRECTOR","customerId":"cus_01JBUSINESS","partyType":"person","roles":["director"],"title":"Chief executive officer","person":{"firstName":"Amina","lastName":"Diallo","residenceCountry":"FR"},"createdAt":"2026-07-15T18:20:00.000Z","updatedAt":"2026-07-15T18:20:00.000Z"}}}}}}},"400":{"description":"Invalid request.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Customer or related party not found, foreign, or archived.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["customer_not_found","related_party_not_found"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"getV3CustomersByCustomerIdRelated-partiesByRelatedPartyId","tags":["customers"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"customerId","required":true},{"schema":{"type":"string"},"in":"path","name":"relatedPartyId","required":true}],"summary":"Get related party","description":"Returns the complete related-party resource. Absent, foreign, and archived ids all return 404 related_party_not_found."},"patch":{"responses":{"200":{"description":"Related party updated","headers":{"Idempotency-Replayed":{"description":"Present with value `true` when an idempotent request is replayed.","schema":{"type":"string","enum":["true"]}}},"content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/RelatedParty"}}},"examples":{"deepMergeAndNullClear":{"summary":"Updated person related party","value":{"data":{"id":"rp_01JDIRECTOR","customerId":"cus_01JBUSINESS","partyType":"person","roles":["director"],"title":"Chief executive officer","person":{"firstName":"Amina","lastName":"Diallo","residenceCountry":"FR","mailingAddress":{"city":"Paris","country":"FR"}},"createdAt":"2026-07-15T18:20:00.000Z","updatedAt":"2026-07-15T19:05:00.000Z"}}}}}}},"400":{"description":"Invalid merge document, immutable field, wrong union field, or missing idempotency key.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["validation_error","invalid_field_for_type"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Customer or related party not found, foreign, or archived.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["customer_not_found","related_party_not_found"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"409":{"description":"Idempotency conflict or request in progress.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["idempotency_conflict","idempotency_request_in_progress"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}},"examples":{"requestInProgress":{"summary":"An identical request is still in progress","value":{"type":"https://docs.swipelux.com/errors/idempotency-request-in-progress","title":"Idempotency Request In Progress","status":409,"code":"idempotency_request_in_progress","detail":"A request with this Idempotency-Key is still in progress.","correlationId":"01JERRORIDEMPOTENCY","retryable":true}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"patchV3CustomersByCustomerIdRelated-partiesByRelatedPartyId","tags":["customers"],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":255},"example":"idem_20260626_0001","description":"Required for effectful v3 requests (POST, PATCH, PUT, DELETE). Reuse the same key with the same body to replay the cached response."},{"schema":{"type":"string"},"in":"path","name":"customerId","required":true},{"schema":{"type":"string"},"in":"path","name":"relatedPartyId","required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"roles":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["control_person","director","officer","authorized_signer","authorized_representative","compliance_officer","primary_contact","account_administrator","trustee","settlor","protector","beneficiary","general_partner","limited_partner","other"]}},"roleDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"title":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"ownership":{"type":"object","properties":{"declared":{"type":"boolean","nullable":true},"directPercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$","nullable":true},"indirectPercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$","nullable":true},"effectivePercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$","nullable":true}},"nullable":true},"votingRights":{"type":"object","properties":{"declared":{"type":"boolean","nullable":true},"directPercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$","nullable":true},"indirectPercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$","nullable":true},"effectivePercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$","nullable":true}},"nullable":true},"control":{"type":"object","properties":{"declared":{"type":"boolean","nullable":true},"direct":{"type":"boolean","nullable":true},"indirect":{"type":"boolean","nullable":true},"description":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected.","nullable":true}},"nullable":true},"person":{"type":"object","properties":{"firstName":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"middleName":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"lastName":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"birthDate":{"type":"string","format":"date","nullable":true},"birthCountry":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code.","nullable":true},"nationalities":{"type":"array","uniqueItems":true,"items":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"residenceCountry":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code.","nullable":true},"email":{"type":"string","format":"email","maxLength":254,"nullable":true},"phone":{"type":"string","pattern":"^\\+[1-9][0-9]{1,14}$","nullable":true},"residentialAddress":{"type":"object","properties":{"streetLine1":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"streetLine2":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"city":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"state":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"postalCode":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls.","nullable":true},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code.","nullable":true}},"nullable":true},"mailingAddress":{"type":"object","properties":{"streetLine1":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"streetLine2":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"city":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"state":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"postalCode":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls.","nullable":true},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code.","nullable":true}},"nullable":true},"taxResidencies":{"type":"array","uniqueItems":true,"items":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"taxIdentifiers":{"type":"array","items":{"type":"object","required":["type","country","value"],"properties":{"type":{"type":"string","enum":["ssn","itin","ein","tin","vat","cpf","cnpj","other"]},"typeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"value":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."}},"description":"Tax identifier. typeDescription is required and allowed only for type other."}},"identityDocuments":{"type":"array","items":{"type":"object","required":["type","issuingCountry"],"properties":{"type":{"type":"string","enum":["passport","national_id","drivers_license","residence_permit","government_id","state_or_provincial_id","other"]},"typeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"issuingCountry":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"issuingRegion":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"number":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"issuedOn":{"type":"string","format":"date"},"expiresOn":{"type":"string","format":"date"},"doesNotExpire":{"type":"boolean"}},"description":"Identity-document metadata; number is optional and expiry facts are mutually consistent."}},"employment":{"type":"object","properties":{"status":{"type":"string","enum":["employed","self_employed","unemployed","student","retired","homemaker","other"],"nullable":true},"statusDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"occupation":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true}},"nullable":true}}}}},{"type":"object","properties":{"roles":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["control_person","director","officer","authorized_signer","authorized_representative","compliance_officer","primary_contact","account_administrator","trustee","settlor","protector","beneficiary","general_partner","limited_partner","other"]}},"roleDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"title":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"ownership":{"type":"object","properties":{"declared":{"type":"boolean","nullable":true},"directPercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$","nullable":true},"indirectPercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$","nullable":true},"effectivePercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$","nullable":true}},"nullable":true},"votingRights":{"type":"object","properties":{"declared":{"type":"boolean","nullable":true},"directPercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$","nullable":true},"indirectPercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$","nullable":true},"effectivePercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$","nullable":true}},"nullable":true},"control":{"type":"object","properties":{"declared":{"type":"boolean","nullable":true},"direct":{"type":"boolean","nullable":true},"indirect":{"type":"boolean","nullable":true},"description":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected.","nullable":true}},"nullable":true},"entity":{"type":"object","properties":{"legalName":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"tradeNames":{"type":"array","uniqueItems":true,"items":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."}},"legalForm":{"type":"string","enum":["corporation","limited_liability_company","partnership","limited_partnership","sole_proprietorship","nonprofit","cooperative","association","professional_association","foundation","trust","investment_fund","society","dao","government_entity","other"],"nullable":true},"legalFormDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"email":{"type":"string","format":"email","maxLength":254,"nullable":true},"complianceEmail":{"type":"string","format":"email","maxLength":254,"nullable":true},"phone":{"type":"string","pattern":"^\\+[1-9][0-9]{1,14}$","nullable":true},"websites":{"type":"array","uniqueItems":true,"items":{"type":"string","format":"uri","maxLength":2048}},"description":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected.","nullable":true},"productsAndServices":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected.","nullable":true},"industryClassifications":{"type":"array","items":{"type":"object","required":["scheme","code"],"properties":{"scheme":{"type":"string","enum":["naics","sic","nace","isic","mcc","other"]},"schemeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"code":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."}}}},"customerTypes":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["individual","business","financial_institution","government","nonprofit","other"]}},"customerTypeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"salesChannels":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["online","in_person","marketplace","mobile_app","business_to_business","other"]}},"salesChannelDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"registration":{"type":"object","properties":{"jurisdiction":{"type":"object","properties":{"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"region":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true}},"nullable":true},"number":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls.","nullable":true},"formationDate":{"type":"string","format":"date","nullable":true}},"nullable":true},"registeredAddress":{"type":"object","properties":{"streetLine1":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"streetLine2":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"city":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"state":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"postalCode":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls.","nullable":true},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code.","nullable":true}},"nullable":true},"operatingAddress":{"type":"object","properties":{"streetLine1":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"streetLine2":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"city":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"state":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"postalCode":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls.","nullable":true},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code.","nullable":true}},"nullable":true},"mailingAddress":{"type":"object","properties":{"streetLine1":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"streetLine2":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"city":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"state":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"postalCode":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls.","nullable":true},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code.","nullable":true}},"nullable":true},"operatingCountries":{"type":"array","uniqueItems":true,"items":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"taxResidencies":{"type":"array","uniqueItems":true,"items":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"taxIdentifiers":{"type":"array","items":{"type":"object","required":["type","country","value"],"properties":{"type":{"type":"string","enum":["ssn","itin","ein","tin","vat","cpf","cnpj","other"]},"typeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"value":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."}},"description":"Tax identifier. typeDescription is required and allowed only for type other."}},"publicListing":{"type":"object","properties":{"exchange":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"ticker":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls.","nullable":true},"jurisdiction":{"type":"object","properties":{"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"region":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true}},"nullable":true}},"nullable":true},"regulatoryStatus":{"type":"string","enum":["regulated","pending","unregulated","exempt"],"nullable":true},"regulatoryRegistrations":{"type":"array","items":{"type":"object","required":["type","jurisdiction"],"properties":{"type":{"type":"string","enum":["money_transmitter","money_services_business","bank","electronic_money_institution","payment_institution","virtual_asset_service_provider","broker_dealer","investment_adviser","lender","other"]},"typeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"jurisdiction":{"type":"object","required":["country"],"properties":{"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"region":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."}},"description":"Country and optional country-specific registration region."},"authority":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"number":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"status":{"type":"string","enum":["active","pending","suspended","revoked","expired"]},"issuedOn":{"type":"string","format":"date"},"expiresOn":{"type":"string","format":"date"}}}}}}}}],"description":"Related-party-type-specific JSON merge document. The stored party type selects the applicable branch; shared-only patches can satisfy both schemas. Unknown request fields are silently ignored."},"examples":{"deepMergeAndNullClear":{"summary":"Deep merge identity facts and clear title","value":{"title":null,"person":{"mailingAddress":{"city":"Paris","country":"FR"}}}}}}}},"summary":"Update related party","description":"Deep-merges the supplied fields into the party: omitted fields stay unchanged, explicit null clears optional fields, and arrays are replaced whole. The id, customerId, and partyType are immutable."},"delete":{"responses":{"204":{"description":"Related party archived","headers":{"Idempotency-Replayed":{"description":"Present with value `true` when an idempotent request is replayed.","schema":{"type":"string","enum":["true"]}}}},"400":{"description":"Missing or invalid idempotency key.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["validation_error"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Customer or related party not found, foreign, or archived.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["customer_not_found","related_party_not_found"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"409":{"description":"Related party is in review, idempotency conflict, or request in progress.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["related_party_in_review","idempotency_conflict","idempotency_request_in_progress"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}},"examples":{"activeReview":{"summary":"An active review blocks related-party archival","value":{"type":"https://docs.swipelux.com/errors/related-party-in-review","title":"Related Party In Review","status":409,"code":"related_party_in_review","detail":"Wait for the active review to finish before archiving the party.","correlationId":"01JERRORRELATEDPARTY","retryable":false}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"deleteV3CustomersByCustomerIdRelated-partiesByRelatedPartyId","tags":["customers"],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":255},"example":"idem_20260626_0001","description":"Required for effectful v3 requests (POST, PATCH, PUT, DELETE). Reuse the same key with the same body to replay the cached response."},{"schema":{"type":"string"},"in":"path","name":"customerId","required":true},{"schema":{"type":"string"},"in":"path","name":"relatedPartyId","required":true}],"summary":"Archive related party","description":"Archives the related party: the id is never reused, normal reads return 404 afterwards, and an idempotent replay returns the same 204. Deletion is blocked with 409 related_party_in_review while an active review depends on the party."}},"/v3/customers":{"get":{"responses":{"200":{"description":"Customer summaries returned","content":{"application/json":{"schema":{"type":"object","required":["data","nextCursor","hasMore"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CustomerSummary"}},"nextCursor":{"type":"string","nullable":true},"hasMore":{"type":"boolean"}}},"examples":{"customers":{"summary":"Customer summaries","value":{"data":[{"id":"cus_01JBUSINESS","type":"business","externalId":null,"displayName":"Acme Payments SAS","email":"operations@acme.example","country":"US","createdAt":"2026-07-15T18:20:00.000Z","updatedAt":"2026-07-15T18:20:00.000Z"},{"id":"cus_01JINDIVIDUAL","type":"individual","externalId":null,"displayName":null,"email":null,"country":null,"createdAt":"2026-07-15T18:20:00.000Z","updatedAt":"2026-07-15T18:20:00.000Z"}],"nextCursor":null,"hasMore":false}}}}}},"400":{"description":"Invalid or unknown customer-list query parameter.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["validation_error","unknown_parameter"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Resource not found.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"getV3Customers","tags":["customers"],"parameters":[{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer"}},{"name":"externalId","in":"query","schema":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[\\x20-\\x7E]+$","description":"Developer correlation identifier using 1-256 printable ASCII characters."}},{"name":"email","in":"query","description":"Case-insensitive partial match against the canonical individual or business email. C0 controls and DEL are rejected.","schema":{"type":"string","minLength":1,"maxLength":256}},{"name":"phone","in":"query","description":"Case-insensitive partial match against the canonical individual or business phone. C0 controls and DEL are rejected.","schema":{"type":"string","minLength":1,"maxLength":256}},{"name":"search","in":"query","description":"Case-insensitive search over customer-id prefix, canonical display name, email, phone, and business trade names. General and +phone terms require 3 characters; cus_ prefixes require 5. C0 controls and DEL are rejected.","schema":{"type":"string","minLength":3,"maxLength":256}},{"name":"type","in":"query","schema":{"type":"string","enum":["individual","business"]}},{"name":"country","in":"query","description":"Exact case-insensitive match against the resolved ISO 3166-1 alpha-2 customer country.","schema":{"type":"string","minLength":2,"maxLength":2,"pattern":"^[A-Za-z]{2}$"}},{"name":"include","in":"query","style":"form","explode":false,"description":"Comma-separated optional expansions; surrounding whitespace around each item is ignored. Only `capabilities` is currently supported, and it additionally requires `accounts:read` or `rails:read`.","schema":{"type":"array","minItems":1,"items":{"type":"string","enum":["capabilities"]}}},{"name":"createdAfter","in":"query","description":"Inclusive lower createdAt bound as a strict RFC 3339 timestamp.","schema":{"type":"string","format":"date-time"}},{"name":"createdBefore","in":"query","description":"Inclusive upper createdAt bound as a strict RFC 3339 timestamp; the complete supplied millisecond is included.","schema":{"type":"string","format":"date-time"}},{"name":"updatedAfter","in":"query","required":false,"schema":{"type":"string","format":"date-time"},"description":"Return only records updated at or after this RFC 3339 timestamp. Use it to recover from missed webhooks by replaying a window of changes."}],"summary":"List customers","description":"Lists CustomerSummary resources in deterministic createdAt DESC, id DESC order. Canonical contact and free-text filters are case-insensitive and compose with exact identity and strict timestamp filters. Pass include=capabilities to attach capability summaries to every customer."},"post":{"responses":{"201":{"description":"Customer created successfully","headers":{"Idempotency-Replayed":{"description":"Present with value `true` when an idempotent request is replayed.","schema":{"type":"string","enum":["true"]}}},"content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Customer"}}},"examples":{"minimalIndividual":{"summary":"Minimal individual","value":{"data":{"id":"cus_01JINDIVIDUAL","type":"individual","externalId":null,"individual":{},"financialProfile":{},"metadata":{},"createdAt":"2026-07-15T18:20:00.000Z","updatedAt":"2026-07-15T18:20:00.000Z"}}},"minimalBusiness":{"summary":"Minimal business","value":{"data":{"id":"cus_01JBUSINESS","type":"business","externalId":null,"business":{"legalName":"Acme Payments SAS"},"financialProfile":{},"relatedParties":[],"metadata":{},"createdAt":"2026-07-15T18:20:00.000Z","updatedAt":"2026-07-15T18:20:00.000Z"}}},"businessWithRelatedParty":{"summary":"Business with an inline related party","value":{"data":{"id":"cus_01JBUSINESS","type":"business","externalId":"company_456","business":{"legalName":"Acme Payments SAS"},"financialProfile":{},"relatedParties":[{"id":"rp_01JDIRECTOR","customerId":"cus_01JBUSINESS","partyType":"person","roles":["director"],"title":"Chief executive officer","person":{"firstName":"Amina","lastName":"Diallo","residenceCountry":"FR"},"createdAt":"2026-07-15T18:20:00.000Z","updatedAt":"2026-07-15T18:20:00.000Z"}],"metadata":{},"createdAt":"2026-07-15T18:20:00.000Z","updatedAt":"2026-07-15T18:20:00.000Z"}}}}}}},"400":{"description":"Invalid request body, wrong customer-union field, or missing idempotency key.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["validation_error","invalid_field_for_type"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}},"examples":{"invalidFieldForType":{"summary":"Field belongs to the other union branch","value":{"type":"https://docs.swipelux.com/errors/invalid-field-for-type","title":"Invalid Field For Type","status":400,"code":"invalid_field_for_type","detail":"Request contains fields invalid for the selected customer type.","correlationId":"01JERRORINVALIDBRANCH","retryable":false,"errors":[{"pointer":"/business","code":"invalid_field_for_type","message":"Field is not valid for customer type individual."}]}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Resource not found.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"409":{"description":"Duplicate externalId, idempotency conflict, or request in progress.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["duplicate_external_id","idempotency_conflict","idempotency_request_in_progress"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}},"examples":{"requestInProgress":{"summary":"An identical request is still in progress","value":{"type":"https://docs.swipelux.com/errors/idempotency-request-in-progress","title":"Idempotency Request In Progress","status":409,"code":"idempotency_request_in_progress","detail":"A request with this Idempotency-Key is still in progress.","correlationId":"01JERRORIDEMPOTENCY","retryable":true}}}}}},"422":{"description":"Merchant KYB is not approved for this live space.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["merchant_kyb_not_approved"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"postV3Customers","tags":["customers"],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":255},"example":"idem_20260626_0001","description":"Required for effectful v3 requests (POST, PATCH, PUT, DELETE). Reuse the same key with the same body to replay the cached response."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["type"],"properties":{"type":{"type":"string","enum":["individual"]},"externalId":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[\\x20-\\x7E]+$","description":"Developer correlation identifier using 1-256 printable ASCII characters."},"individual":{"type":"object","properties":{"firstName":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"middleName":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"lastName":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"birthDate":{"type":"string","format":"date"},"birthCountry":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"nationalities":{"type":"array","uniqueItems":true,"items":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"residenceCountry":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"email":{"type":"string","format":"email","maxLength":254},"phone":{"type":"string","pattern":"^\\+[1-9][0-9]{1,14}$"},"residentialAddress":{"type":"object","minProperties":1,"properties":{"streetLine1":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"streetLine2":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"city":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"state":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"postalCode":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"description":"Progressively collected address with at least one supplied fact."},"mailingAddress":{"type":"object","minProperties":1,"properties":{"streetLine1":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"streetLine2":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"city":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"state":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"postalCode":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"description":"Progressively collected address with at least one supplied fact."},"taxResidencies":{"type":"array","uniqueItems":true,"items":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"taxIdentifiers":{"type":"array","items":{"type":"object","required":["type","country","value"],"properties":{"type":{"type":"string","enum":["ssn","itin","ein","tin","vat","cpf","cnpj","other"]},"typeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"value":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."}},"description":"Tax identifier. typeDescription is required and allowed only for type other."}},"identityDocuments":{"type":"array","items":{"type":"object","required":["type","issuingCountry"],"properties":{"type":{"type":"string","enum":["passport","national_id","drivers_license","residence_permit","government_id","state_or_provincial_id","other"]},"typeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"issuingCountry":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"issuingRegion":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"number":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"issuedOn":{"type":"string","format":"date"},"expiresOn":{"type":"string","format":"date"},"doesNotExpire":{"type":"boolean"}},"description":"Identity-document metadata; number is optional and expiry facts are mutually consistent."}},"employment":{"type":"object","minProperties":1,"properties":{"status":{"type":"string","enum":["employed","self_employed","unemployed","student","retired","homemaker","other"]},"statusDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"occupation":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."}},"description":"Employment requires status or occupation; statusDescription is exclusive to other."}},"description":"Reusable progressively collected individual identity facts."},"financialProfile":{"type":"object","properties":{"accountPurposes":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["business_expenses","charitable_donations","cross_border_remittance","ecommerce","family_support","investment","payroll","operate_company","personal_expenses","purchase_goods_and_services","receive_freelance_payments","receive_payments","receive_salary","tax_optimization","tax_payments","third_party_money_transmission","treasury_management","wealth_preservation","other"]}},"accountPurposeDescription":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected."},"expectedTransactionPurposes":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["business_payments","charitable_donations","cross_border_remittance","family_support","goods_and_services","investment","payroll","personal_expenses","receive_freelance_payments","receive_salary","wealth_preservation","other"]}},"expectedTransactionPurposeDescription":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected."},"expectedActivityDescription":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected."},"sourcesOfFunds":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["salary","savings","business_revenue","investment_income","asset_sale","inheritance","gift","pension","government_benefits","loan","owner_contribution","investor_contribution","company_funds","intercompany_funds","investment_proceeds","legal_settlement","tax_refund","treasury_reserves","insurance_proceeds","equity_compensation","grants_and_donations","third_party_funds","gambling","other"]}},"sourceOfFundsDescription":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected."},"sourcesOfWealth":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["employment_income","business_ownership","investments","business_dividends_or_profits","client_or_investor_contributions","charitable_contributions","affiliate_income","real_estate","asset_sale","inheritance","gift","gambling","royalties","other"]}},"sourceOfWealthDescription":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected."},"estimatedAnnualRevenue":{"type":"object","required":["amount","currency"],"properties":{"amount":{"type":"string","pattern":"^(0|[1-9][0-9]*)(\\.[0-9]+)?$","description":"Non-negative major-unit decimal string with at most 38 digits; currency scale is validated without rounding."},"currency":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$","description":"ISO 4217 alpha-3 code or documented stablecoin symbol."}}},"expectedMonthlyVolume":{"type":"object","required":["amount","currency"],"properties":{"amount":{"type":"string","pattern":"^(0|[1-9][0-9]*)(\\.[0-9]+)?$","description":"Non-negative major-unit decimal string with at most 38 digits; currency scale is validated without rounding."},"currency":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$","description":"ISO 4217 alpha-3 code or documented stablecoin symbol."}}},"expectedMonthlyPayinVolume":{"type":"object","required":["amount","currency"],"properties":{"amount":{"type":"string","pattern":"^(0|[1-9][0-9]*)(\\.[0-9]+)?$","description":"Non-negative major-unit decimal string with at most 38 digits; currency scale is validated without rounding."},"currency":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$","description":"ISO 4217 alpha-3 code or documented stablecoin symbol."}}},"expectedMonthlyPayoutVolume":{"type":"object","required":["amount","currency"],"properties":{"amount":{"type":"string","pattern":"^(0|[1-9][0-9]*)(\\.[0-9]+)?$","description":"Non-negative major-unit decimal string with at most 38 digits; currency scale is validated without rounding."},"currency":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$","description":"ISO 4217 alpha-3 code or documented stablecoin symbol."}}},"expectedMonthlyTransactionCount":{"type":"integer","minimum":0,"maximum":2147483647},"typicalTransactionAmount":{"type":"object","required":["amount","currency"],"properties":{"amount":{"type":"string","pattern":"^(0|[1-9][0-9]*)(\\.[0-9]+)?$","description":"Non-negative major-unit decimal string with at most 38 digits; currency scale is validated without rounding."},"currency":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$","description":"ISO 4217 alpha-3 code or documented stablecoin symbol."}}},"maximumTransactionAmount":{"type":"object","required":["amount","currency"],"properties":{"amount":{"type":"string","pattern":"^(0|[1-9][0-9]*)(\\.[0-9]+)?$","description":"Non-negative major-unit decimal string with at most 38 digits; currency scale is validated without rounding."},"currency":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$","description":"ISO 4217 alpha-3 code or documented stablecoin symbol."}}},"expectedCurrencies":{"type":"array","uniqueItems":true,"items":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$"}},"expectedCorridors":{"type":"array","items":{"type":"object","required":["fromCountry","toCountry"],"properties":{"fromCountry":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"toCountry":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"fromCurrency":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$"},"toCurrency":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$"}}}},"expectedCounterpartyEntityTypes":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["individual","business","financial_institution","government","nonprofit","exchange","own_account","other"]}},"expectedCounterpartyEntityTypeDescription":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected."},"expectedCounterpartyRelationships":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["employee","contractor","vendor","subsidiary","merchant","customer","landlord","family","other"]}},"expectedCounterpartyRelationshipDescription":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected."},"flows":{"type":"object","properties":{"payin":{"type":"object","required":["firstParty","thirdParty"],"properties":{"firstParty":{"type":"boolean"},"thirdParty":{"type":"boolean"}}},"payout":{"type":"object","required":["firstParty","thirdParty"],"properties":{"firstParty":{"type":"boolean"},"thirdParty":{"type":"boolean"}}}}},"fundsHandlingActivities":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["receive","hold","pool","aggregate","convert","settle","forward","disburse","custody","other"]}},"fundsHandlingActivityDescription":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected."},"actsAsIntermediary":{"type":"boolean"},"ownAccountTreasuryOnly":{"type":"boolean"}},"description":"Provider-neutral expected financial activity and funds-handling facts."},"metadata":{"type":"object","maxProperties":50,"additionalProperties":{"anyOf":[{"type":"string","maxLength":1024},{"type":"number"},{"type":"boolean"}]},"description":"Developer-owned scalar metadata map with at most 50 entries."}}},{"type":"object","required":["type","business"],"properties":{"type":{"type":"string","enum":["business"]},"externalId":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[\\x20-\\x7E]+$","description":"Developer correlation identifier using 1-256 printable ASCII characters."},"business":{"type":"object","required":["legalName"],"properties":{"legalName":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"tradeNames":{"type":"array","uniqueItems":true,"items":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."}},"legalForm":{"type":"string","enum":["corporation","limited_liability_company","partnership","limited_partnership","sole_proprietorship","nonprofit","cooperative","association","professional_association","foundation","trust","investment_fund","society","dao","government_entity","other"]},"legalFormDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"email":{"type":"string","format":"email","maxLength":254},"complianceEmail":{"type":"string","format":"email","maxLength":254},"phone":{"type":"string","pattern":"^\\+[1-9][0-9]{1,14}$"},"websites":{"type":"array","uniqueItems":true,"items":{"type":"string","format":"uri","maxLength":2048}},"description":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected."},"productsAndServices":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected."},"industryClassifications":{"type":"array","items":{"type":"object","required":["scheme","code"],"properties":{"scheme":{"type":"string","enum":["naics","sic","nace","isic","mcc","other"]},"schemeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"code":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."}}}},"customerTypes":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["individual","business","financial_institution","government","nonprofit","other"]}},"customerTypeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"salesChannels":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["online","in_person","marketplace","mobile_app","business_to_business","other"]}},"salesChannelDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"registration":{"type":"object","minProperties":1,"properties":{"jurisdiction":{"type":"object","required":["country"],"properties":{"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"region":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."}},"description":"Country and optional country-specific registration region."},"number":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"formationDate":{"type":"string","format":"date"}}},"registeredAddress":{"type":"object","minProperties":1,"properties":{"streetLine1":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"streetLine2":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"city":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"state":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"postalCode":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"description":"Progressively collected address with at least one supplied fact."},"operatingAddress":{"type":"object","minProperties":1,"properties":{"streetLine1":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"streetLine2":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"city":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"state":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"postalCode":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"description":"Progressively collected address with at least one supplied fact."},"mailingAddress":{"type":"object","minProperties":1,"properties":{"streetLine1":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"streetLine2":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"city":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"state":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"postalCode":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"description":"Progressively collected address with at least one supplied fact."},"operatingCountries":{"type":"array","uniqueItems":true,"items":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"taxResidencies":{"type":"array","uniqueItems":true,"items":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"taxIdentifiers":{"type":"array","items":{"type":"object","required":["type","country","value"],"properties":{"type":{"type":"string","enum":["ssn","itin","ein","tin","vat","cpf","cnpj","other"]},"typeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"value":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."}},"description":"Tax identifier. typeDescription is required and allowed only for type other."}},"publicListing":{"type":"object","minProperties":1,"properties":{"exchange":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"ticker":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"jurisdiction":{"type":"object","required":["country"],"properties":{"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"region":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."}},"description":"Country and optional country-specific registration region."}}},"regulatoryStatus":{"type":"string","enum":["regulated","pending","unregulated","exempt"]},"regulatoryRegistrations":{"type":"array","items":{"type":"object","required":["type","jurisdiction"],"properties":{"type":{"type":"string","enum":["money_transmitter","money_services_business","bank","electronic_money_institution","payment_institution","virtual_asset_service_provider","broker_dealer","investment_adviser","lender","other"]},"typeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"jurisdiction":{"type":"object","required":["country"],"properties":{"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"region":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."}},"description":"Country and optional country-specific registration region."},"authority":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"number":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"status":{"type":"string","enum":["active","pending","suspended","revoked","expired"]},"issuedOn":{"type":"string","format":"date"},"expiresOn":{"type":"string","format":"date"}}}},"ownershipStructure":{"type":"object","required":["type"],"properties":{"type":{"type":"string","enum":["privately_held","publicly_traded","government_owned","subsidiary","trust","fund","other"]},"description":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"parentType":{"type":"string","enum":["publicly_traded_company","financial_institution","other"]},"parentTypeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"parentOwnershipPercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$"}}}},"description":"Reusable business identity; legalName is the required anchor."},"financialProfile":{"type":"object","properties":{"accountPurposes":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["business_expenses","charitable_donations","cross_border_remittance","ecommerce","family_support","investment","payroll","operate_company","personal_expenses","purchase_goods_and_services","receive_freelance_payments","receive_payments","receive_salary","tax_optimization","tax_payments","third_party_money_transmission","treasury_management","wealth_preservation","other"]}},"accountPurposeDescription":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected."},"expectedTransactionPurposes":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["business_payments","charitable_donations","cross_border_remittance","family_support","goods_and_services","investment","payroll","personal_expenses","receive_freelance_payments","receive_salary","wealth_preservation","other"]}},"expectedTransactionPurposeDescription":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected."},"expectedActivityDescription":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected."},"sourcesOfFunds":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["salary","savings","business_revenue","investment_income","asset_sale","inheritance","gift","pension","government_benefits","loan","owner_contribution","investor_contribution","company_funds","intercompany_funds","investment_proceeds","legal_settlement","tax_refund","treasury_reserves","insurance_proceeds","equity_compensation","grants_and_donations","third_party_funds","gambling","other"]}},"sourceOfFundsDescription":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected."},"sourcesOfWealth":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["employment_income","business_ownership","investments","business_dividends_or_profits","client_or_investor_contributions","charitable_contributions","affiliate_income","real_estate","asset_sale","inheritance","gift","gambling","royalties","other"]}},"sourceOfWealthDescription":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected."},"estimatedAnnualRevenue":{"type":"object","required":["amount","currency"],"properties":{"amount":{"type":"string","pattern":"^(0|[1-9][0-9]*)(\\.[0-9]+)?$","description":"Non-negative major-unit decimal string with at most 38 digits; currency scale is validated without rounding."},"currency":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$","description":"ISO 4217 alpha-3 code or documented stablecoin symbol."}}},"expectedMonthlyVolume":{"type":"object","required":["amount","currency"],"properties":{"amount":{"type":"string","pattern":"^(0|[1-9][0-9]*)(\\.[0-9]+)?$","description":"Non-negative major-unit decimal string with at most 38 digits; currency scale is validated without rounding."},"currency":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$","description":"ISO 4217 alpha-3 code or documented stablecoin symbol."}}},"expectedMonthlyPayinVolume":{"type":"object","required":["amount","currency"],"properties":{"amount":{"type":"string","pattern":"^(0|[1-9][0-9]*)(\\.[0-9]+)?$","description":"Non-negative major-unit decimal string with at most 38 digits; currency scale is validated without rounding."},"currency":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$","description":"ISO 4217 alpha-3 code or documented stablecoin symbol."}}},"expectedMonthlyPayoutVolume":{"type":"object","required":["amount","currency"],"properties":{"amount":{"type":"string","pattern":"^(0|[1-9][0-9]*)(\\.[0-9]+)?$","description":"Non-negative major-unit decimal string with at most 38 digits; currency scale is validated without rounding."},"currency":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$","description":"ISO 4217 alpha-3 code or documented stablecoin symbol."}}},"expectedMonthlyTransactionCount":{"type":"integer","minimum":0,"maximum":2147483647},"typicalTransactionAmount":{"type":"object","required":["amount","currency"],"properties":{"amount":{"type":"string","pattern":"^(0|[1-9][0-9]*)(\\.[0-9]+)?$","description":"Non-negative major-unit decimal string with at most 38 digits; currency scale is validated without rounding."},"currency":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$","description":"ISO 4217 alpha-3 code or documented stablecoin symbol."}}},"maximumTransactionAmount":{"type":"object","required":["amount","currency"],"properties":{"amount":{"type":"string","pattern":"^(0|[1-9][0-9]*)(\\.[0-9]+)?$","description":"Non-negative major-unit decimal string with at most 38 digits; currency scale is validated without rounding."},"currency":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$","description":"ISO 4217 alpha-3 code or documented stablecoin symbol."}}},"expectedCurrencies":{"type":"array","uniqueItems":true,"items":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$"}},"expectedCorridors":{"type":"array","items":{"type":"object","required":["fromCountry","toCountry"],"properties":{"fromCountry":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"toCountry":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"fromCurrency":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$"},"toCurrency":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$"}}}},"expectedCounterpartyEntityTypes":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["individual","business","financial_institution","government","nonprofit","exchange","own_account","other"]}},"expectedCounterpartyEntityTypeDescription":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected."},"expectedCounterpartyRelationships":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["employee","contractor","vendor","subsidiary","merchant","customer","landlord","family","other"]}},"expectedCounterpartyRelationshipDescription":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected."},"flows":{"type":"object","properties":{"payin":{"type":"object","required":["firstParty","thirdParty"],"properties":{"firstParty":{"type":"boolean"},"thirdParty":{"type":"boolean"}}},"payout":{"type":"object","required":["firstParty","thirdParty"],"properties":{"firstParty":{"type":"boolean"},"thirdParty":{"type":"boolean"}}}}},"fundsHandlingActivities":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["receive","hold","pool","aggregate","convert","settle","forward","disburse","custody","other"]}},"fundsHandlingActivityDescription":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected."},"actsAsIntermediary":{"type":"boolean"},"ownAccountTreasuryOnly":{"type":"boolean"}},"description":"Provider-neutral expected financial activity and funds-handling facts."},"relatedParties":{"type":"array","items":{"oneOf":[{"type":"object","required":["partyType","roles","person"],"properties":{"partyType":{"type":"string","enum":["person"]},"roles":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["control_person","director","officer","authorized_signer","authorized_representative","compliance_officer","primary_contact","account_administrator","trustee","settlor","protector","beneficiary","general_partner","limited_partner","other"]}},"roleDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"title":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"ownership":{"type":"object","minProperties":1,"properties":{"declared":{"type":"boolean"},"directPercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$"},"indirectPercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$"},"effectivePercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$"}}},"votingRights":{"type":"object","minProperties":1,"properties":{"declared":{"type":"boolean"},"directPercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$"},"indirectPercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$"},"effectivePercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$"}}},"control":{"type":"object","properties":{"declared":{"type":"boolean"},"direct":{"type":"boolean"},"indirect":{"type":"boolean"},"description":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected."}}},"person":{"type":"object","properties":{"firstName":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"middleName":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"lastName":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"birthDate":{"type":"string","format":"date"},"birthCountry":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"nationalities":{"type":"array","uniqueItems":true,"items":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"residenceCountry":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"email":{"type":"string","format":"email","maxLength":254},"phone":{"type":"string","pattern":"^\\+[1-9][0-9]{1,14}$"},"residentialAddress":{"type":"object","minProperties":1,"properties":{"streetLine1":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"streetLine2":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"city":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"state":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"postalCode":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"description":"Progressively collected address with at least one supplied fact."},"mailingAddress":{"type":"object","minProperties":1,"properties":{"streetLine1":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"streetLine2":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"city":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"state":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"postalCode":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"description":"Progressively collected address with at least one supplied fact."},"taxResidencies":{"type":"array","uniqueItems":true,"items":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"taxIdentifiers":{"type":"array","items":{"type":"object","required":["type","country","value"],"properties":{"type":{"type":"string","enum":["ssn","itin","ein","tin","vat","cpf","cnpj","other"]},"typeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"value":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."}},"description":"Tax identifier. typeDescription is required and allowed only for type other."}},"identityDocuments":{"type":"array","items":{"type":"object","required":["type","issuingCountry"],"properties":{"type":{"type":"string","enum":["passport","national_id","drivers_license","residence_permit","government_id","state_or_provincial_id","other"]},"typeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"issuingCountry":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"issuingRegion":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"number":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"issuedOn":{"type":"string","format":"date"},"expiresOn":{"type":"string","format":"date"},"doesNotExpire":{"type":"boolean"}},"description":"Identity-document metadata; number is optional and expiry facts are mutually consistent."}},"employment":{"type":"object","minProperties":1,"properties":{"status":{"type":"string","enum":["employed","self_employed","unemployed","student","retired","homemaker","other"]},"statusDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"occupation":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."}},"description":"Employment requires status or occupation; statusDescription is exclusive to other."}},"description":"Reusable progressively collected individual identity facts."}}},{"type":"object","required":["partyType","roles","entity"],"properties":{"partyType":{"type":"string","enum":["entity"]},"roles":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["control_person","director","officer","authorized_signer","authorized_representative","compliance_officer","primary_contact","account_administrator","trustee","settlor","protector","beneficiary","general_partner","limited_partner","other"]}},"roleDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"title":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"ownership":{"type":"object","minProperties":1,"properties":{"declared":{"type":"boolean"},"directPercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$"},"indirectPercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$"},"effectivePercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$"}}},"votingRights":{"type":"object","minProperties":1,"properties":{"declared":{"type":"boolean"},"directPercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$"},"indirectPercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$"},"effectivePercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$"}}},"control":{"type":"object","properties":{"declared":{"type":"boolean"},"direct":{"type":"boolean"},"indirect":{"type":"boolean"},"description":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected."}}},"entity":{"type":"object","required":["legalName"],"properties":{"legalName":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"tradeNames":{"type":"array","uniqueItems":true,"items":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."}},"legalForm":{"type":"string","enum":["corporation","limited_liability_company","partnership","limited_partnership","sole_proprietorship","nonprofit","cooperative","association","professional_association","foundation","trust","investment_fund","society","dao","government_entity","other"]},"legalFormDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"email":{"type":"string","format":"email","maxLength":254},"complianceEmail":{"type":"string","format":"email","maxLength":254},"phone":{"type":"string","pattern":"^\\+[1-9][0-9]{1,14}$"},"websites":{"type":"array","uniqueItems":true,"items":{"type":"string","format":"uri","maxLength":2048}},"description":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected."},"productsAndServices":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected."},"industryClassifications":{"type":"array","items":{"type":"object","required":["scheme","code"],"properties":{"scheme":{"type":"string","enum":["naics","sic","nace","isic","mcc","other"]},"schemeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"code":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."}}}},"customerTypes":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["individual","business","financial_institution","government","nonprofit","other"]}},"customerTypeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"salesChannels":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["online","in_person","marketplace","mobile_app","business_to_business","other"]}},"salesChannelDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"registration":{"type":"object","minProperties":1,"properties":{"jurisdiction":{"type":"object","required":["country"],"properties":{"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"region":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."}},"description":"Country and optional country-specific registration region."},"number":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"formationDate":{"type":"string","format":"date"}}},"registeredAddress":{"type":"object","minProperties":1,"properties":{"streetLine1":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"streetLine2":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"city":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"state":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"postalCode":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"description":"Progressively collected address with at least one supplied fact."},"operatingAddress":{"type":"object","minProperties":1,"properties":{"streetLine1":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"streetLine2":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"city":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"state":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"postalCode":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"description":"Progressively collected address with at least one supplied fact."},"mailingAddress":{"type":"object","minProperties":1,"properties":{"streetLine1":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"streetLine2":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"city":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"state":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"postalCode":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"description":"Progressively collected address with at least one supplied fact."},"operatingCountries":{"type":"array","uniqueItems":true,"items":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"taxResidencies":{"type":"array","uniqueItems":true,"items":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"taxIdentifiers":{"type":"array","items":{"type":"object","required":["type","country","value"],"properties":{"type":{"type":"string","enum":["ssn","itin","ein","tin","vat","cpf","cnpj","other"]},"typeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"value":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."}},"description":"Tax identifier. typeDescription is required and allowed only for type other."}},"publicListing":{"type":"object","minProperties":1,"properties":{"exchange":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"ticker":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"jurisdiction":{"type":"object","required":["country"],"properties":{"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"region":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."}},"description":"Country and optional country-specific registration region."}}},"regulatoryStatus":{"type":"string","enum":["regulated","pending","unregulated","exempt"]},"regulatoryRegistrations":{"type":"array","items":{"type":"object","required":["type","jurisdiction"],"properties":{"type":{"type":"string","enum":["money_transmitter","money_services_business","bank","electronic_money_institution","payment_institution","virtual_asset_service_provider","broker_dealer","investment_adviser","lender","other"]},"typeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"jurisdiction":{"type":"object","required":["country"],"properties":{"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"region":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."}},"description":"Country and optional country-specific registration region."},"authority":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"number":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"status":{"type":"string","enum":["active","pending","suspended","revoked","expired"]},"issuedOn":{"type":"string","format":"date"},"expiresOn":{"type":"string","format":"date"}}}}},"description":"Reusable business identity; legalName is the required anchor."}}}],"discriminator":{"propertyName":"partyType"}}},"metadata":{"type":"object","maxProperties":50,"additionalProperties":{"anyOf":[{"type":"string","maxLength":1024},{"type":"number"},{"type":"boolean"}]},"description":"Developer-owned scalar metadata map with at most 50 entries."}}}],"discriminator":{"propertyName":"type"},"description":"Create a strict v3 customer union. Unknown request fields are silently ignored."},"examples":{"minimalIndividual":{"summary":"Minimal individual","value":{"type":"individual"}},"minimalBusiness":{"summary":"Minimal business","value":{"type":"business","business":{"legalName":"Acme Payments SAS"}}},"businessWithRelatedParty":{"summary":"Business with an inline related party","value":{"type":"business","externalId":"company_456","business":{"legalName":"Acme Payments SAS"},"relatedParties":[{"partyType":"person","roles":["director"],"title":"Chief executive officer","person":{"firstName":"Amina","lastName":"Diallo","residenceCountry":"FR"}}]}}}}}},"summary":"Create customer","description":"Creates the canonical customer union atomically. Individuals require only type; businesses require business.legalName. Email and phone values are not unique customer keys."}},"/v3/customers/{customerId}":{"get":{"responses":{"200":{"description":"Customer returned","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Customer"}}},"examples":{"business":{"summary":"Business customer detail","value":{"data":{"id":"cus_01JBUSINESS","type":"business","externalId":"company_456","business":{"legalName":"Acme Payments SAS"},"financialProfile":{},"relatedParties":[{"id":"rp_01JDIRECTOR","customerId":"cus_01JBUSINESS","partyType":"person","roles":["director"],"title":"Chief executive officer","person":{"firstName":"Amina","lastName":"Diallo","residenceCountry":"FR"},"createdAt":"2026-07-15T18:20:00.000Z","updatedAt":"2026-07-15T18:20:00.000Z"}],"metadata":{},"createdAt":"2026-07-15T18:20:00.000Z","updatedAt":"2026-07-15T18:20:00.000Z"}}}}}}},"400":{"description":"Invalid request.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Customer not found, foreign, or archived.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["customer_not_found"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"getV3CustomersByCustomerId","tags":["customers"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"customerId","required":true}],"summary":"Get customer","description":"Returns the canonical customer detail union. Business details embed active related parties."},"patch":{"responses":{"200":{"description":"Customer updated successfully","headers":{"Idempotency-Replayed":{"description":"Present with value `true` when an idempotent request is replayed.","schema":{"type":"string","enum":["true"]}}},"content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Customer"}}},"examples":{"deepMergeAndNullClear":{"summary":"Merged business customer","value":{"data":{"id":"cus_01JBUSINESS","type":"business","externalId":null,"business":{"legalName":"Acme Payments SAS","registeredAddress":{"streetLine1":"1 Avenue Exemple","city":"Paris","country":"FR"}},"financialProfile":{"accountPurposes":["treasury_management"]},"relatedParties":[{"id":"rp_01JDIRECTOR","customerId":"cus_01JBUSINESS","partyType":"person","roles":["director"],"title":"Chief executive officer","person":{"firstName":"Amina","lastName":"Diallo","residenceCountry":"FR"},"createdAt":"2026-07-15T18:20:00.000Z","updatedAt":"2026-07-15T18:20:00.000Z"}],"metadata":{"segment":"growth"},"createdAt":"2026-07-15T18:20:00.000Z","updatedAt":"2026-07-15T19:05:00.000Z"}}}}}}},"400":{"description":"Invalid merge document, wrong customer-union field, or missing idempotency key.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["validation_error","invalid_field_for_type"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}},"examples":{"invalidFieldForType":{"summary":"Field belongs to the other union branch","value":{"type":"https://docs.swipelux.com/errors/invalid-field-for-type","title":"Invalid Field For Type","status":400,"code":"invalid_field_for_type","detail":"Request contains fields invalid for the selected customer type.","correlationId":"01JERRORINVALIDBRANCH","retryable":false,"errors":[{"pointer":"/business","code":"invalid_field_for_type","message":"Field is not valid for customer type individual."}]}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Customer not found, foreign, or archived.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["customer_not_found"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"409":{"description":"Duplicate externalId, idempotency conflict, or request in progress.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["duplicate_external_id","idempotency_conflict","idempotency_request_in_progress"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}},"examples":{"requestInProgress":{"summary":"An identical request is still in progress","value":{"type":"https://docs.swipelux.com/errors/idempotency-request-in-progress","title":"Idempotency Request In Progress","status":409,"code":"idempotency_request_in_progress","detail":"A request with this Idempotency-Key is still in progress.","correlationId":"01JERRORIDEMPOTENCY","retryable":true}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"patchV3CustomersByCustomerId","tags":["customers"],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":255},"example":"idem_20260626_0001","description":"Required for effectful v3 requests (POST, PATCH, PUT, DELETE). Reuse the same key with the same body to replay the cached response."},{"schema":{"type":"string"},"in":"path","name":"customerId","required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"externalId":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[\\x20-\\x7E]+$","description":"Developer correlation identifier using 1-256 printable ASCII characters.","nullable":true},"individual":{"type":"object","properties":{"firstName":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"middleName":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"lastName":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"birthDate":{"type":"string","format":"date","nullable":true},"birthCountry":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code.","nullable":true},"nationalities":{"type":"array","uniqueItems":true,"items":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"residenceCountry":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code.","nullable":true},"email":{"type":"string","format":"email","maxLength":254,"nullable":true},"phone":{"type":"string","pattern":"^\\+[1-9][0-9]{1,14}$","nullable":true},"residentialAddress":{"type":"object","properties":{"streetLine1":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"streetLine2":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"city":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"state":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"postalCode":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls.","nullable":true},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code.","nullable":true}},"nullable":true},"mailingAddress":{"type":"object","properties":{"streetLine1":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"streetLine2":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"city":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"state":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"postalCode":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls.","nullable":true},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code.","nullable":true}},"nullable":true},"taxResidencies":{"type":"array","uniqueItems":true,"items":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"taxIdentifiers":{"type":"array","items":{"type":"object","required":["type","country","value"],"properties":{"type":{"type":"string","enum":["ssn","itin","ein","tin","vat","cpf","cnpj","other"]},"typeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"value":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."}},"description":"Tax identifier. typeDescription is required and allowed only for type other."}},"identityDocuments":{"type":"array","items":{"type":"object","required":["type","issuingCountry"],"properties":{"type":{"type":"string","enum":["passport","national_id","drivers_license","residence_permit","government_id","state_or_provincial_id","other"]},"typeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"issuingCountry":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"issuingRegion":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"number":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"issuedOn":{"type":"string","format":"date"},"expiresOn":{"type":"string","format":"date"},"doesNotExpire":{"type":"boolean"}},"description":"Identity-document metadata; number is optional and expiry facts are mutually consistent."}},"employment":{"type":"object","properties":{"status":{"type":"string","enum":["employed","self_employed","unemployed","student","retired","homemaker","other"],"nullable":true},"statusDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"occupation":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true}},"nullable":true}}},"financialProfile":{"type":"object","properties":{"accountPurposes":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["business_expenses","charitable_donations","cross_border_remittance","ecommerce","family_support","investment","payroll","operate_company","personal_expenses","purchase_goods_and_services","receive_freelance_payments","receive_payments","receive_salary","tax_optimization","tax_payments","third_party_money_transmission","treasury_management","wealth_preservation","other"]}},"accountPurposeDescription":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected.","nullable":true},"expectedTransactionPurposes":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["business_payments","charitable_donations","cross_border_remittance","family_support","goods_and_services","investment","payroll","personal_expenses","receive_freelance_payments","receive_salary","wealth_preservation","other"]}},"expectedTransactionPurposeDescription":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected.","nullable":true},"expectedActivityDescription":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected.","nullable":true},"sourcesOfFunds":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["salary","savings","business_revenue","investment_income","asset_sale","inheritance","gift","pension","government_benefits","loan","owner_contribution","investor_contribution","company_funds","intercompany_funds","investment_proceeds","legal_settlement","tax_refund","treasury_reserves","insurance_proceeds","equity_compensation","grants_and_donations","third_party_funds","gambling","other"]}},"sourceOfFundsDescription":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected.","nullable":true},"sourcesOfWealth":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["employment_income","business_ownership","investments","business_dividends_or_profits","client_or_investor_contributions","charitable_contributions","affiliate_income","real_estate","asset_sale","inheritance","gift","gambling","royalties","other"]}},"sourceOfWealthDescription":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected.","nullable":true},"estimatedAnnualRevenue":{"type":"object","properties":{"amount":{"type":"string","pattern":"^(0|[1-9][0-9]*)(\\.[0-9]+)?$","description":"Non-negative major-unit decimal string with at most 38 digits; currency scale is validated without rounding."},"currency":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$","description":"ISO 4217 alpha-3 code or documented stablecoin symbol."}},"nullable":true},"expectedMonthlyVolume":{"type":"object","properties":{"amount":{"type":"string","pattern":"^(0|[1-9][0-9]*)(\\.[0-9]+)?$","description":"Non-negative major-unit decimal string with at most 38 digits; currency scale is validated without rounding."},"currency":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$","description":"ISO 4217 alpha-3 code or documented stablecoin symbol."}},"nullable":true},"expectedMonthlyPayinVolume":{"type":"object","properties":{"amount":{"type":"string","pattern":"^(0|[1-9][0-9]*)(\\.[0-9]+)?$","description":"Non-negative major-unit decimal string with at most 38 digits; currency scale is validated without rounding."},"currency":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$","description":"ISO 4217 alpha-3 code or documented stablecoin symbol."}},"nullable":true},"expectedMonthlyPayoutVolume":{"type":"object","properties":{"amount":{"type":"string","pattern":"^(0|[1-9][0-9]*)(\\.[0-9]+)?$","description":"Non-negative major-unit decimal string with at most 38 digits; currency scale is validated without rounding."},"currency":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$","description":"ISO 4217 alpha-3 code or documented stablecoin symbol."}},"nullable":true},"expectedMonthlyTransactionCount":{"type":"integer","minimum":0,"maximum":2147483647,"nullable":true},"typicalTransactionAmount":{"type":"object","properties":{"amount":{"type":"string","pattern":"^(0|[1-9][0-9]*)(\\.[0-9]+)?$","description":"Non-negative major-unit decimal string with at most 38 digits; currency scale is validated without rounding."},"currency":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$","description":"ISO 4217 alpha-3 code or documented stablecoin symbol."}},"nullable":true},"maximumTransactionAmount":{"type":"object","properties":{"amount":{"type":"string","pattern":"^(0|[1-9][0-9]*)(\\.[0-9]+)?$","description":"Non-negative major-unit decimal string with at most 38 digits; currency scale is validated without rounding."},"currency":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$","description":"ISO 4217 alpha-3 code or documented stablecoin symbol."}},"nullable":true},"expectedCurrencies":{"type":"array","uniqueItems":true,"items":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$"}},"expectedCorridors":{"type":"array","items":{"type":"object","required":["fromCountry","toCountry"],"properties":{"fromCountry":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"toCountry":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"fromCurrency":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$"},"toCurrency":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$"}}}},"expectedCounterpartyEntityTypes":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["individual","business","financial_institution","government","nonprofit","exchange","own_account","other"]}},"expectedCounterpartyEntityTypeDescription":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected.","nullable":true},"expectedCounterpartyRelationships":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["employee","contractor","vendor","subsidiary","merchant","customer","landlord","family","other"]}},"expectedCounterpartyRelationshipDescription":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected.","nullable":true},"flows":{"type":"object","properties":{"payin":{"type":"object","properties":{"firstParty":{"type":"boolean"},"thirdParty":{"type":"boolean"}},"nullable":true},"payout":{"type":"object","properties":{"firstParty":{"type":"boolean"},"thirdParty":{"type":"boolean"}},"nullable":true}},"nullable":true},"fundsHandlingActivities":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["receive","hold","pool","aggregate","convert","settle","forward","disburse","custody","other"]}},"fundsHandlingActivityDescription":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected.","nullable":true},"actsAsIntermediary":{"type":"boolean","nullable":true},"ownAccountTreasuryOnly":{"type":"boolean","nullable":true}},"nullable":true},"metadata":{"type":"object","maxProperties":50,"additionalProperties":{"oneOf":[{"type":"string","maxLength":1024},{"type":"number"},{"type":"boolean"}],"nullable":true},"nullable":true}},"description":"Individual JSON merge document. Arrays replace; null clears only nullable facts."},{"type":"object","properties":{"externalId":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[\\x20-\\x7E]+$","description":"Developer correlation identifier using 1-256 printable ASCII characters.","nullable":true},"business":{"type":"object","properties":{"legalName":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"tradeNames":{"type":"array","uniqueItems":true,"items":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."}},"legalForm":{"type":"string","enum":["corporation","limited_liability_company","partnership","limited_partnership","sole_proprietorship","nonprofit","cooperative","association","professional_association","foundation","trust","investment_fund","society","dao","government_entity","other"],"nullable":true},"legalFormDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"email":{"type":"string","format":"email","maxLength":254,"nullable":true},"complianceEmail":{"type":"string","format":"email","maxLength":254,"nullable":true},"phone":{"type":"string","pattern":"^\\+[1-9][0-9]{1,14}$","nullable":true},"websites":{"type":"array","uniqueItems":true,"items":{"type":"string","format":"uri","maxLength":2048}},"description":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected.","nullable":true},"productsAndServices":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected.","nullable":true},"industryClassifications":{"type":"array","items":{"type":"object","required":["scheme","code"],"properties":{"scheme":{"type":"string","enum":["naics","sic","nace","isic","mcc","other"]},"schemeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"code":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."}}}},"customerTypes":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["individual","business","financial_institution","government","nonprofit","other"]}},"customerTypeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"salesChannels":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["online","in_person","marketplace","mobile_app","business_to_business","other"]}},"salesChannelDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"registration":{"type":"object","properties":{"jurisdiction":{"type":"object","properties":{"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"region":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true}},"nullable":true},"number":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls.","nullable":true},"formationDate":{"type":"string","format":"date","nullable":true}},"nullable":true},"registeredAddress":{"type":"object","properties":{"streetLine1":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"streetLine2":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"city":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"state":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"postalCode":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls.","nullable":true},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code.","nullable":true}},"nullable":true},"operatingAddress":{"type":"object","properties":{"streetLine1":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"streetLine2":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"city":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"state":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"postalCode":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls.","nullable":true},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code.","nullable":true}},"nullable":true},"mailingAddress":{"type":"object","properties":{"streetLine1":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"streetLine2":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"city":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"state":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"postalCode":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls.","nullable":true},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code.","nullable":true}},"nullable":true},"operatingCountries":{"type":"array","uniqueItems":true,"items":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"taxResidencies":{"type":"array","uniqueItems":true,"items":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"taxIdentifiers":{"type":"array","items":{"type":"object","required":["type","country","value"],"properties":{"type":{"type":"string","enum":["ssn","itin","ein","tin","vat","cpf","cnpj","other"]},"typeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"value":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."}},"description":"Tax identifier. typeDescription is required and allowed only for type other."}},"publicListing":{"type":"object","properties":{"exchange":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"ticker":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls.","nullable":true},"jurisdiction":{"type":"object","properties":{"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"region":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true}},"nullable":true}},"nullable":true},"regulatoryStatus":{"type":"string","enum":["regulated","pending","unregulated","exempt"],"nullable":true},"regulatoryRegistrations":{"type":"array","items":{"type":"object","required":["type","jurisdiction"],"properties":{"type":{"type":"string","enum":["money_transmitter","money_services_business","bank","electronic_money_institution","payment_institution","virtual_asset_service_provider","broker_dealer","investment_adviser","lender","other"]},"typeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"jurisdiction":{"type":"object","required":["country"],"properties":{"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"region":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."}},"description":"Country and optional country-specific registration region."},"authority":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"number":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"status":{"type":"string","enum":["active","pending","suspended","revoked","expired"]},"issuedOn":{"type":"string","format":"date"},"expiresOn":{"type":"string","format":"date"}}}},"ownershipStructure":{"type":"object","properties":{"type":{"type":"string","enum":["privately_held","publicly_traded","government_owned","subsidiary","trust","fund","other"]},"description":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"parentType":{"type":"string","enum":["publicly_traded_company","financial_institution","other"],"nullable":true},"parentTypeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"parentOwnershipPercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$","nullable":true}},"nullable":true}}},"financialProfile":{"type":"object","properties":{"accountPurposes":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["business_expenses","charitable_donations","cross_border_remittance","ecommerce","family_support","investment","payroll","operate_company","personal_expenses","purchase_goods_and_services","receive_freelance_payments","receive_payments","receive_salary","tax_optimization","tax_payments","third_party_money_transmission","treasury_management","wealth_preservation","other"]}},"accountPurposeDescription":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected.","nullable":true},"expectedTransactionPurposes":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["business_payments","charitable_donations","cross_border_remittance","family_support","goods_and_services","investment","payroll","personal_expenses","receive_freelance_payments","receive_salary","wealth_preservation","other"]}},"expectedTransactionPurposeDescription":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected.","nullable":true},"expectedActivityDescription":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected.","nullable":true},"sourcesOfFunds":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["salary","savings","business_revenue","investment_income","asset_sale","inheritance","gift","pension","government_benefits","loan","owner_contribution","investor_contribution","company_funds","intercompany_funds","investment_proceeds","legal_settlement","tax_refund","treasury_reserves","insurance_proceeds","equity_compensation","grants_and_donations","third_party_funds","gambling","other"]}},"sourceOfFundsDescription":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected.","nullable":true},"sourcesOfWealth":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["employment_income","business_ownership","investments","business_dividends_or_profits","client_or_investor_contributions","charitable_contributions","affiliate_income","real_estate","asset_sale","inheritance","gift","gambling","royalties","other"]}},"sourceOfWealthDescription":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected.","nullable":true},"estimatedAnnualRevenue":{"type":"object","properties":{"amount":{"type":"string","pattern":"^(0|[1-9][0-9]*)(\\.[0-9]+)?$","description":"Non-negative major-unit decimal string with at most 38 digits; currency scale is validated without rounding."},"currency":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$","description":"ISO 4217 alpha-3 code or documented stablecoin symbol."}},"nullable":true},"expectedMonthlyVolume":{"type":"object","properties":{"amount":{"type":"string","pattern":"^(0|[1-9][0-9]*)(\\.[0-9]+)?$","description":"Non-negative major-unit decimal string with at most 38 digits; currency scale is validated without rounding."},"currency":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$","description":"ISO 4217 alpha-3 code or documented stablecoin symbol."}},"nullable":true},"expectedMonthlyPayinVolume":{"type":"object","properties":{"amount":{"type":"string","pattern":"^(0|[1-9][0-9]*)(\\.[0-9]+)?$","description":"Non-negative major-unit decimal string with at most 38 digits; currency scale is validated without rounding."},"currency":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$","description":"ISO 4217 alpha-3 code or documented stablecoin symbol."}},"nullable":true},"expectedMonthlyPayoutVolume":{"type":"object","properties":{"amount":{"type":"string","pattern":"^(0|[1-9][0-9]*)(\\.[0-9]+)?$","description":"Non-negative major-unit decimal string with at most 38 digits; currency scale is validated without rounding."},"currency":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$","description":"ISO 4217 alpha-3 code or documented stablecoin symbol."}},"nullable":true},"expectedMonthlyTransactionCount":{"type":"integer","minimum":0,"maximum":2147483647,"nullable":true},"typicalTransactionAmount":{"type":"object","properties":{"amount":{"type":"string","pattern":"^(0|[1-9][0-9]*)(\\.[0-9]+)?$","description":"Non-negative major-unit decimal string with at most 38 digits; currency scale is validated without rounding."},"currency":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$","description":"ISO 4217 alpha-3 code or documented stablecoin symbol."}},"nullable":true},"maximumTransactionAmount":{"type":"object","properties":{"amount":{"type":"string","pattern":"^(0|[1-9][0-9]*)(\\.[0-9]+)?$","description":"Non-negative major-unit decimal string with at most 38 digits; currency scale is validated without rounding."},"currency":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$","description":"ISO 4217 alpha-3 code or documented stablecoin symbol."}},"nullable":true},"expectedCurrencies":{"type":"array","uniqueItems":true,"items":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$"}},"expectedCorridors":{"type":"array","items":{"type":"object","required":["fromCountry","toCountry"],"properties":{"fromCountry":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"toCountry":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"fromCurrency":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$"},"toCurrency":{"type":"string","pattern":"^(?:[A-Z]{3}|USDC|USDT)$"}}}},"expectedCounterpartyEntityTypes":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["individual","business","financial_institution","government","nonprofit","exchange","own_account","other"]}},"expectedCounterpartyEntityTypeDescription":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected.","nullable":true},"expectedCounterpartyRelationships":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["employee","contractor","vendor","subsidiary","merchant","customer","landlord","family","other"]}},"expectedCounterpartyRelationshipDescription":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected.","nullable":true},"flows":{"type":"object","properties":{"payin":{"type":"object","properties":{"firstParty":{"type":"boolean"},"thirdParty":{"type":"boolean"}},"nullable":true},"payout":{"type":"object","properties":{"firstParty":{"type":"boolean"},"thirdParty":{"type":"boolean"}},"nullable":true}},"nullable":true},"fundsHandlingActivities":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["receive","hold","pool","aggregate","convert","settle","forward","disburse","custody","other"]}},"fundsHandlingActivityDescription":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected.","nullable":true},"actsAsIntermediary":{"type":"boolean","nullable":true},"ownAccountTreasuryOnly":{"type":"boolean","nullable":true}},"nullable":true},"relatedParties":{"type":"array","items":{"oneOf":[{"oneOf":[{"type":"object","required":["partyType","roles","person"],"properties":{"partyType":{"type":"string","enum":["person"]},"roles":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["control_person","director","officer","authorized_signer","authorized_representative","compliance_officer","primary_contact","account_administrator","trustee","settlor","protector","beneficiary","general_partner","limited_partner","other"]}},"roleDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"title":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"ownership":{"type":"object","minProperties":1,"properties":{"declared":{"type":"boolean"},"directPercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$"},"indirectPercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$"},"effectivePercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$"}}},"votingRights":{"type":"object","minProperties":1,"properties":{"declared":{"type":"boolean"},"directPercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$"},"indirectPercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$"},"effectivePercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$"}}},"control":{"type":"object","properties":{"declared":{"type":"boolean"},"direct":{"type":"boolean"},"indirect":{"type":"boolean"},"description":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected."}}},"person":{"type":"object","properties":{"firstName":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"middleName":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"lastName":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"birthDate":{"type":"string","format":"date"},"birthCountry":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"nationalities":{"type":"array","uniqueItems":true,"items":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"residenceCountry":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"email":{"type":"string","format":"email","maxLength":254},"phone":{"type":"string","pattern":"^\\+[1-9][0-9]{1,14}$"},"residentialAddress":{"type":"object","minProperties":1,"properties":{"streetLine1":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"streetLine2":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"city":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"state":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"postalCode":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"description":"Progressively collected address with at least one supplied fact."},"mailingAddress":{"type":"object","minProperties":1,"properties":{"streetLine1":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"streetLine2":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"city":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"state":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"postalCode":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"description":"Progressively collected address with at least one supplied fact."},"taxResidencies":{"type":"array","uniqueItems":true,"items":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"taxIdentifiers":{"type":"array","items":{"type":"object","required":["type","country","value"],"properties":{"type":{"type":"string","enum":["ssn","itin","ein","tin","vat","cpf","cnpj","other"]},"typeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"value":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."}},"description":"Tax identifier. typeDescription is required and allowed only for type other."}},"identityDocuments":{"type":"array","items":{"type":"object","required":["type","issuingCountry"],"properties":{"type":{"type":"string","enum":["passport","national_id","drivers_license","residence_permit","government_id","state_or_provincial_id","other"]},"typeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"issuingCountry":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"issuingRegion":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"number":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"issuedOn":{"type":"string","format":"date"},"expiresOn":{"type":"string","format":"date"},"doesNotExpire":{"type":"boolean"}},"description":"Identity-document metadata; number is optional and expiry facts are mutually consistent."}},"employment":{"type":"object","minProperties":1,"properties":{"status":{"type":"string","enum":["employed","self_employed","unemployed","student","retired","homemaker","other"]},"statusDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"occupation":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."}},"description":"Employment requires status or occupation; statusDescription is exclusive to other."}},"description":"Reusable progressively collected individual identity facts."}}},{"type":"object","required":["partyType","roles","entity"],"properties":{"partyType":{"type":"string","enum":["entity"]},"roles":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["control_person","director","officer","authorized_signer","authorized_representative","compliance_officer","primary_contact","account_administrator","trustee","settlor","protector","beneficiary","general_partner","limited_partner","other"]}},"roleDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"title":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"ownership":{"type":"object","minProperties":1,"properties":{"declared":{"type":"boolean"},"directPercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$"},"indirectPercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$"},"effectivePercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$"}}},"votingRights":{"type":"object","minProperties":1,"properties":{"declared":{"type":"boolean"},"directPercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$"},"indirectPercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$"},"effectivePercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$"}}},"control":{"type":"object","properties":{"declared":{"type":"boolean"},"direct":{"type":"boolean"},"indirect":{"type":"boolean"},"description":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected."}}},"entity":{"type":"object","required":["legalName"],"properties":{"legalName":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"tradeNames":{"type":"array","uniqueItems":true,"items":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."}},"legalForm":{"type":"string","enum":["corporation","limited_liability_company","partnership","limited_partnership","sole_proprietorship","nonprofit","cooperative","association","professional_association","foundation","trust","investment_fund","society","dao","government_entity","other"]},"legalFormDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"email":{"type":"string","format":"email","maxLength":254},"complianceEmail":{"type":"string","format":"email","maxLength":254},"phone":{"type":"string","pattern":"^\\+[1-9][0-9]{1,14}$"},"websites":{"type":"array","uniqueItems":true,"items":{"type":"string","format":"uri","maxLength":2048}},"description":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected."},"productsAndServices":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected."},"industryClassifications":{"type":"array","items":{"type":"object","required":["scheme","code"],"properties":{"scheme":{"type":"string","enum":["naics","sic","nace","isic","mcc","other"]},"schemeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"code":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."}}}},"customerTypes":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["individual","business","financial_institution","government","nonprofit","other"]}},"customerTypeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"salesChannels":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["online","in_person","marketplace","mobile_app","business_to_business","other"]}},"salesChannelDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"registration":{"type":"object","minProperties":1,"properties":{"jurisdiction":{"type":"object","required":["country"],"properties":{"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"region":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."}},"description":"Country and optional country-specific registration region."},"number":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"formationDate":{"type":"string","format":"date"}}},"registeredAddress":{"type":"object","minProperties":1,"properties":{"streetLine1":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"streetLine2":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"city":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"state":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"postalCode":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"description":"Progressively collected address with at least one supplied fact."},"operatingAddress":{"type":"object","minProperties":1,"properties":{"streetLine1":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"streetLine2":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"city":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"state":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"postalCode":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"description":"Progressively collected address with at least one supplied fact."},"mailingAddress":{"type":"object","minProperties":1,"properties":{"streetLine1":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"streetLine2":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"city":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"state":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"postalCode":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"description":"Progressively collected address with at least one supplied fact."},"operatingCountries":{"type":"array","uniqueItems":true,"items":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"taxResidencies":{"type":"array","uniqueItems":true,"items":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"taxIdentifiers":{"type":"array","items":{"type":"object","required":["type","country","value"],"properties":{"type":{"type":"string","enum":["ssn","itin","ein","tin","vat","cpf","cnpj","other"]},"typeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"value":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."}},"description":"Tax identifier. typeDescription is required and allowed only for type other."}},"publicListing":{"type":"object","minProperties":1,"properties":{"exchange":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"ticker":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"jurisdiction":{"type":"object","required":["country"],"properties":{"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"region":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."}},"description":"Country and optional country-specific registration region."}}},"regulatoryStatus":{"type":"string","enum":["regulated","pending","unregulated","exempt"]},"regulatoryRegistrations":{"type":"array","items":{"type":"object","required":["type","jurisdiction"],"properties":{"type":{"type":"string","enum":["money_transmitter","money_services_business","bank","electronic_money_institution","payment_institution","virtual_asset_service_provider","broker_dealer","investment_adviser","lender","other"]},"typeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"jurisdiction":{"type":"object","required":["country"],"properties":{"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"region":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."}},"description":"Country and optional country-specific registration region."},"authority":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"number":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"status":{"type":"string","enum":["active","pending","suspended","revoked","expired"]},"issuedOn":{"type":"string","format":"date"},"expiresOn":{"type":"string","format":"date"}}}}},"description":"Reusable business identity; legalName is the required anchor."}}}],"discriminator":{"propertyName":"partyType"}},{"type":"object","required":["id"],"properties":{"id":{"type":"string","pattern":"^rp_[0-9A-Za-z]+$","example":"rp_5rW7cQvGWX0altPGIqM6O"},"partyType":{"type":"string","enum":["person","entity"]},"roles":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["control_person","director","officer","authorized_signer","authorized_representative","compliance_officer","primary_contact","account_administrator","trustee","settlor","protector","beneficiary","general_partner","limited_partner","other"]}},"roleDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"title":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"ownership":{"type":"object","properties":{"declared":{"type":"boolean","nullable":true},"directPercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$","nullable":true},"indirectPercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$","nullable":true},"effectivePercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$","nullable":true}},"nullable":true},"votingRights":{"type":"object","properties":{"declared":{"type":"boolean","nullable":true},"directPercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$","nullable":true},"indirectPercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$","nullable":true},"effectivePercentage":{"type":"string","pattern":"^(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)$","nullable":true}},"nullable":true},"control":{"type":"object","properties":{"declared":{"type":"boolean","nullable":true},"direct":{"type":"boolean","nullable":true},"indirect":{"type":"boolean","nullable":true},"description":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected.","nullable":true}},"nullable":true},"person":{"type":"object","properties":{"firstName":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"middleName":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"lastName":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"birthDate":{"type":"string","format":"date","nullable":true},"birthCountry":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code.","nullable":true},"nationalities":{"type":"array","uniqueItems":true,"items":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"residenceCountry":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code.","nullable":true},"email":{"type":"string","format":"email","maxLength":254,"nullable":true},"phone":{"type":"string","pattern":"^\\+[1-9][0-9]{1,14}$","nullable":true},"residentialAddress":{"type":"object","properties":{"streetLine1":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"streetLine2":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"city":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"state":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"postalCode":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls.","nullable":true},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code.","nullable":true}},"nullable":true},"mailingAddress":{"type":"object","properties":{"streetLine1":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"streetLine2":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"city":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"state":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"postalCode":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls.","nullable":true},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code.","nullable":true}},"nullable":true},"taxResidencies":{"type":"array","uniqueItems":true,"items":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"taxIdentifiers":{"type":"array","items":{"type":"object","required":["type","country","value"],"properties":{"type":{"type":"string","enum":["ssn","itin","ein","tin","vat","cpf","cnpj","other"]},"typeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"value":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."}},"description":"Tax identifier. typeDescription is required and allowed only for type other."}},"identityDocuments":{"type":"array","items":{"type":"object","required":["type","issuingCountry"],"properties":{"type":{"type":"string","enum":["passport","national_id","drivers_license","residence_permit","government_id","state_or_provincial_id","other"]},"typeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"issuingCountry":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"issuingRegion":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"number":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"issuedOn":{"type":"string","format":"date"},"expiresOn":{"type":"string","format":"date"},"doesNotExpire":{"type":"boolean"}},"description":"Identity-document metadata; number is optional and expiry facts are mutually consistent."}},"employment":{"type":"object","properties":{"status":{"type":"string","enum":["employed","self_employed","unemployed","student","retired","homemaker","other"],"nullable":true},"statusDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"occupation":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true}},"nullable":true}}},"entity":{"type":"object","properties":{"legalName":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"tradeNames":{"type":"array","uniqueItems":true,"items":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."}},"legalForm":{"type":"string","enum":["corporation","limited_liability_company","partnership","limited_partnership","sole_proprietorship","nonprofit","cooperative","association","professional_association","foundation","trust","investment_fund","society","dao","government_entity","other"],"nullable":true},"legalFormDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"email":{"type":"string","format":"email","maxLength":254,"nullable":true},"complianceEmail":{"type":"string","format":"email","maxLength":254,"nullable":true},"phone":{"type":"string","pattern":"^\\+[1-9][0-9]{1,14}$","nullable":true},"websites":{"type":"array","uniqueItems":true,"items":{"type":"string","format":"uri","maxLength":2048}},"description":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected.","nullable":true},"productsAndServices":{"type":"string","minLength":1,"maxLength":4096,"description":"Preserved narrative; line feed and tab are allowed and other controls are rejected.","nullable":true},"industryClassifications":{"type":"array","items":{"type":"object","required":["scheme","code"],"properties":{"scheme":{"type":"string","enum":["naics","sic","nace","isic","mcc","other"]},"schemeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"code":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."}}}},"customerTypes":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["individual","business","financial_institution","government","nonprofit","other"]}},"customerTypeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"salesChannels":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["online","in_person","marketplace","mobile_app","business_to_business","other"]}},"salesChannelDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"registration":{"type":"object","properties":{"jurisdiction":{"type":"object","properties":{"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"region":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true}},"nullable":true},"number":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls.","nullable":true},"formationDate":{"type":"string","format":"date","nullable":true}},"nullable":true},"registeredAddress":{"type":"object","properties":{"streetLine1":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"streetLine2":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"city":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"state":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"postalCode":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls.","nullable":true},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code.","nullable":true}},"nullable":true},"operatingAddress":{"type":"object","properties":{"streetLine1":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"streetLine2":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"city":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"state":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"postalCode":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls.","nullable":true},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code.","nullable":true}},"nullable":true},"mailingAddress":{"type":"object","properties":{"streetLine1":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"streetLine2":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"city":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"state":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"postalCode":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls.","nullable":true},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code.","nullable":true}},"nullable":true},"operatingCountries":{"type":"array","uniqueItems":true,"items":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"taxResidencies":{"type":"array","uniqueItems":true,"items":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."}},"taxIdentifiers":{"type":"array","items":{"type":"object","required":["type","country","value"],"properties":{"type":{"type":"string","enum":["ssn","itin","ein","tin","vat","cpf","cnpj","other"]},"typeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"value":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."}},"description":"Tax identifier. typeDescription is required and allowed only for type other."}},"publicListing":{"type":"object","properties":{"exchange":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true},"ticker":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls.","nullable":true},"jurisdiction":{"type":"object","properties":{"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"region":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected.","nullable":true}},"nullable":true}},"nullable":true},"regulatoryStatus":{"type":"string","enum":["regulated","pending","unregulated","exempt"],"nullable":true},"regulatoryRegistrations":{"type":"array","items":{"type":"object","required":["type","jurisdiction"],"properties":{"type":{"type":"string","enum":["money_transmitter","money_services_business","bank","electronic_money_institution","payment_institution","virtual_asset_service_provider","broker_dealer","investment_adviser","lender","other"]},"typeDescription":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"jurisdiction":{"type":"object","required":["country"],"properties":{"country":{"type":"string","pattern":"^[A-Z]{2}$","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"region":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."}},"description":"Country and optional country-specific registration region."},"authority":{"type":"string","minLength":1,"maxLength":256,"description":"Preserved exactly; leading/trailing whitespace and control characters are rejected."},"number":{"type":"string","minLength":1,"maxLength":256,"description":"Identifier preserved exactly, without leading/trailing whitespace or controls."},"status":{"type":"string","enum":["active","pending","suspended","revoked","expired"]},"issuedOn":{"type":"string","format":"date"},"expiresOn":{"type":"string","format":"date"}}}}}}}}]}},"metadata":{"type":"object","maxProperties":50,"additionalProperties":{"oneOf":[{"type":"string","maxLength":1024},{"type":"number"},{"type":"boolean"}],"nullable":true},"nullable":true}},"description":"Business JSON merge document. Arrays replace except inline related parties, which upsert."}],"description":"Customer-type-specific JSON merge document. The stored customer type selects the applicable branch; shared-only patches can satisfy both schemas. Unknown request fields are silently ignored."},"examples":{"deepMergeAndNullClear":{"summary":"Deep merge nested facts and clear selected values","description":"The registered-address city is merged without erasing its siblings; null clears externalId and business.phone; metadata null deletes one key.","value":{"externalId":null,"business":{"phone":null,"registeredAddress":{"city":"Paris"}},"financialProfile":{"accountPurposes":["treasury_management"]},"metadata":{"segment":"growth","legacySegment":null}}}}}}},"summary":"Update customer","description":"Deep-merges canonical customer facts. Arrays replace atomically, null clears nullable facts, metadata merges by key, and related-party ids upsert in place."},"delete":{"responses":{"204":{"description":"Customer archived","headers":{"Idempotency-Replayed":{"description":"Present with value `true` when an idempotent request is replayed.","schema":{"type":"string","enum":["true"]}}}},"400":{"description":"Missing or invalid idempotency key.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["validation_error"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Customer not found, foreign, or archived.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["customer_not_found"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"409":{"description":"Customer has active resources, idempotency conflict, or request in progress.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["customer_has_active_resources","idempotency_conflict","idempotency_request_in_progress"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}},"examples":{"activeResources":{"summary":"An active account blocks archival","value":{"type":"https://docs.swipelux.com/errors/customer-has-active-resources","title":"Customer Has Active Resources","status":409,"code":"customer_has_active_resources","detail":"Archive or resolve every blocking resource before retrying.","correlationId":"01JERRORCUSTOMERARCHIVE","retryable":false,"blockingResources":[{"type":"account","id":"acc_01JACTIVE","requiredAction":"archive_account"}]}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"deleteV3CustomersByCustomerId","tags":["customers"],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":255},"example":"idem_20260626_0001","description":"Required for effectful v3 requests (POST, PATCH, PUT, DELETE). Reuse the same key with the same body to replay the cached response."},{"schema":{"type":"string"},"in":"path","name":"customerId","required":true}],"summary":"Archive customer","description":"Archives the customer aggregate atomically. Active accounts and in-flight transfers must be resolved first; the externalId reservation and immutable history are retained."}},"/v3/customers/{customerId}/export":{"post":{"responses":{"200":{"description":"Export produced. `json_basic_data` returns a JSON attachment; `sumsub_share_token` returns a token response.","headers":{"Content-Disposition":{"description":"Set to the JSON attachment filename for `json_basic_data` exports.","schema":{"type":"string"}},"Idempotency-Replayed":{"description":"Present with value `true` when an idempotent request is replayed.","schema":{"type":"string","enum":["true"]}}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/Customer"},{"type":"object","required":["data"],"properties":{"data":{"type":"object","required":["provider","token","expiresAt"],"properties":{"provider":{"type":"string","enum":["sumsub"],"description":"KYC provider that issued the share token."},"token":{"type":"string","description":"One-time token for importing the approved KYC data."},"expiresAt":{"type":"integer","format":"int64","description":"Unix timestamp in seconds when the token expires."}}}}}]},"examples":{"jsonBasicData":{"summary":"Canonical customer JSON attachment","value":{"id":"cus_01JINDIVIDUAL","type":"individual","externalId":null,"individual":{},"financialProfile":{},"metadata":{},"createdAt":"2026-07-15T18:20:00.000Z","updatedAt":"2026-07-15T18:20:00.000Z"}},"sumsubShareToken":{"summary":"One-time Sumsub share token","value":{"data":{"provider":"sumsub","token":"_shr-example-token","expiresAt":1800000000}}}}}}},"400":{"description":"Invalid request body or missing idempotency key.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["validation_error"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"API key is missing the required permission.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Customer not found, foreign, or archived.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["customer_not_found"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"409":{"description":"Customer verification is incomplete, or an idempotency conflict/request is in progress.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["conflict","idempotency_conflict","idempotency_request_in_progress"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}},"examples":{"requestInProgress":{"summary":"An identical request is still in progress","value":{"type":"https://docs.swipelux.com/errors/idempotency-request-in-progress","title":"Idempotency Request In Progress","status":409,"code":"idempotency_request_in_progress","detail":"A request with this Idempotency-Key is still in progress.","correlationId":"01JERRORIDEMPOTENCY","retryable":true}}}}}},"422":{"description":"Share-token format is invalid for a business customer.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["invalid_field_for_type"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"502":{"description":"KYC provider request failed.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["request_failed"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"503":{"description":"KYC provider is not configured.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["request_failed"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"postV3CustomersByCustomerIdExport","tags":["customers"],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":255},"example":"idem_20260626_0001","description":"Required for every export. Reuse the same key and body to replay a `sumsub_share_token`; `json_basic_data` safely recomputes the direct download without storing a second copy of customer data."},{"schema":{"type":"string"},"in":"path","name":"customerId","required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"type":"object","additionalProperties":false,"required":["format"],"properties":{"format":{"type":"string","enum":["json_basic_data"]}}},{"type":"object","additionalProperties":false,"required":["format","forClientId"],"properties":{"format":{"type":"string","enum":["sumsub_share_token"]},"forClientId":{"type":"string","minLength":1}}}],"discriminator":{"propertyName":"format"}},"examples":{"jsonBasicData":{"summary":"Download canonical customer data","value":{"format":"json_basic_data"}},"sumsubShareToken":{"summary":"Create an approved individual Sumsub share token","value":{"format":"sumsub_share_token","forClientId":"partner-sumsub-client-id"}}}}}},"summary":"Export customer data","description":"Exports a customer in the requested format. `json_basic_data` returns the public v3 customer resource as a JSON attachment with profile and related-party data only. `sumsub_share_token` creates a one-time Sumsub share token for an approved individual customer; it requires `forClientId` and an `Idempotency-Key`."}},"/v3/institutions":{"get":{"responses":{"200":{"description":"Institutions returned","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Opaque public institution id."},"name":{"type":"string","description":"Institution display name."},"bic":{"anyOf":[{"type":"string","nullable":true}],"description":"BIC/SWIFT code when known."},"countries":{"type":"array","items":{"type":"string"},"description":"ISO 3166-1 alpha-2 countries where this institution is offered."}},"required":["id","name","bic","countries"]},"description":"Institutions."},"nextCursor":{"anyOf":[{"type":"string","nullable":true}],"description":"Cursor for the next page, or null when there is no next page."},"hasMore":{"type":"boolean","description":"Whether another page is available."}},"required":["data","nextCursor","hasMore"]}}}},"400":{"description":"Invalid request.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Resource not found.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"getV3Institutions","tags":["institutions"],"parameters":[{"name":"cursor","in":"query","required":false,"schema":{"type":"string"},"description":"Opaque cursor returned as `nextCursor` from the previous page."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25},"description":"Maximum number of records to return. Defaults to 25."}],"summary":"List institutions","description":"Lists institution IDs referenced by capability support and application resources."}},"/v3/capabilities":{"get":{"responses":{"200":{"description":"Capabilities returned","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z0-9]+(?:_[a-z0-9]+)*$","description":"Permanent capability id, for example `ach_pooled`. `wire_pooled`/`wire_named` cover bank-wire capability requests, including provider routes that use the domestic wire network as the underlying rail. The internal rail remains a method/rail vocabulary value, not a public capability id. Open enum — values are added over time; clients must tolerate unknown values."},"customerId":{"type":"string","description":"Customer identifier."},"method":{"enum":["ach","wire","rtp","pix","sepa","swift","spei","pse","transfers_3_0","uaefts","faster_payments","sepa_instant","ipp","card","stablecoin_transfers"],"description":"Single payment method represented by this capability. Open enum — values are added over time; clients must tolerate unknown values."},"accountType":{"anyOf":[{"enum":["pooled","named"],"nullable":true}],"description":"Bank account type when the capability is bank-account based."},"status":{"description":"Capability status. Closed enum — exhaustive; additions would be a breaking change.","enum":["ready"]},"statusReason":{"allOf":[{"type":"string"},{"type":"number"}],"description":"Structured reason for a non-ready capability. Ready capabilities omit this field."},"openTaskIds":{"type":"array","items":{"type":"string"},"description":"Ids of open tasks associated with this capability or one of its applications, including shared customer tasks reached through an active dependency, ordered by creation time and then task id. Empty when nothing is open."},"applications":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Application identifier (`apl_...`)."},"institution":{"type":"object","properties":{"id":{"type":"string","description":"Opaque public institution id to send in `institutions`."},"name":{"type":"string","description":"Public institution name."},"bic":{"anyOf":[{"type":"string","nullable":true}],"description":"BIC/SWIFT code when known."}},"required":["id","name","bic"]},"status":{"enum":["requested","in_review","action_required","ready","rejected","disabled","canceled"],"description":"Institution application status. Closed enum — exhaustive; additions would be a breaking change."},"statusReason":{"anyOf":[{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"nullable":true}],"description":"Structured reason for the current status. `in_review` always returns a stored or synthesized reason; self-explanatory statuses may return null."},"openTaskIds":{"type":"array","items":{"type":"string"},"description":"Ids of open tasks associated with this application, including shared customer tasks reached through an active dependency, ordered by creation time and then task id. Empty when nothing is open."},"submittedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Submitted at."},"createdAt":{"type":"string","description":"Created at."},"updatedAt":{"type":"string","description":"Updated at."}},"required":["id","institution","status","statusReason","openTaskIds","submittedAt","createdAt","updatedAt"]},"description":"Institution compliance flows for this capability."},"submittedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Submitted at."},"createdAt":{"type":"string","description":"Created at."},"updatedAt":{"type":"string","description":"Updated at."}},"required":["id","customerId","method","accountType","status","openTaskIds","applications","submittedAt","createdAt","updatedAt"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z0-9]+(?:_[a-z0-9]+)*$","description":"Permanent capability id, for example `ach_pooled`. `wire_pooled`/`wire_named` cover bank-wire capability requests, including provider routes that use the domestic wire network as the underlying rail. The internal rail remains a method/rail vocabulary value, not a public capability id. Open enum — values are added over time; clients must tolerate unknown values."},"customerId":{"type":"string","description":"Customer identifier."},"method":{"enum":["ach","wire","rtp","pix","sepa","swift","spei","pse","transfers_3_0","uaefts","faster_payments","sepa_instant","ipp","card","stablecoin_transfers"],"description":"Single payment method represented by this capability. Open enum — values are added over time; clients must tolerate unknown values."},"accountType":{"anyOf":[{"enum":["pooled","named"],"nullable":true}],"description":"Bank account type when the capability is bank-account based."},"status":{"enum":["pending","restricted","rejected","canceled"],"description":"Capability status. Closed enum — exhaustive; additions would be a breaking change."},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code for the capability status."},"resolution":{"enum":["complete_tasks","wait","contact_support","none"],"description":"Action that can move the capability forward."},"message":{"type":"string","description":"Human-readable explanation of the capability status."}},"required":["code","resolution","message"],"description":"Structured reason for a non-ready capability. Ready capabilities omit this field."},"openTaskIds":{"type":"array","items":{"type":"string"},"description":"Ids of open tasks associated with this capability or one of its applications, including shared customer tasks reached through an active dependency, ordered by creation time and then task id. Empty when nothing is open."},"applications":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Application identifier (`apl_...`)."},"institution":{"type":"object","properties":{"id":{"type":"string","description":"Opaque public institution id to send in `institutions`."},"name":{"type":"string","description":"Public institution name."},"bic":{"anyOf":[{"type":"string","nullable":true}],"description":"BIC/SWIFT code when known."}},"required":["id","name","bic"]},"status":{"enum":["requested","in_review","action_required","ready","rejected","disabled","canceled"],"description":"Institution application status. Closed enum — exhaustive; additions would be a breaking change."},"statusReason":{"anyOf":[{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"nullable":true}],"description":"Structured reason for the current status. `in_review` always returns a stored or synthesized reason; self-explanatory statuses may return null."},"openTaskIds":{"type":"array","items":{"type":"string"},"description":"Ids of open tasks associated with this application, including shared customer tasks reached through an active dependency, ordered by creation time and then task id. Empty when nothing is open."},"submittedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Submitted at."},"createdAt":{"type":"string","description":"Created at."},"updatedAt":{"type":"string","description":"Updated at."}},"required":["id","institution","status","statusReason","openTaskIds","submittedAt","createdAt","updatedAt"]},"description":"Institution compliance flows for this capability."},"submittedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Submitted at."},"createdAt":{"type":"string","description":"Created at."},"updatedAt":{"type":"string","description":"Updated at."}},"required":["id","customerId","method","accountType","status","statusReason","openTaskIds","applications","submittedAt","createdAt","updatedAt"]}]},"description":"Capabilities."},"nextCursor":{"anyOf":[{"type":"string","nullable":true}],"description":"Cursor for the next page, or null when there is no next page."},"hasMore":{"type":"boolean","description":"Whether another page is available."}},"required":["data","nextCursor","hasMore"]},"examples":{"restricted":{"summary":"Customer capabilities","value":{"data":[{"id":"ach_pooled","customerId":"cus_7F3pL2nQ9xA5mW8kR1sT4v","method":"ach","accountType":"pooled","status":"restricted","statusReason":{"code":"tasks_due","resolution":"complete_tasks","message":"Additional customer information is required."},"openTaskIds":["tsk_8uL2nA7xQ5mR9pT4vZ1sWc"],"applications":[{"id":"apl_4Y9xQ8u3m2N7p6R5s1T0vZ","institution":{"id":"jpmorgan","name":"JPMorgan Chase","bic":"CHASUS33"},"status":"in_review","statusReason":{"code":"internal_review","message":"The submission is under internal review.","actor":"swipelux","retryable":true},"openTaskIds":["tsk_8uL2nA7xQ5mR9pT4vZ1sWc"],"submittedAt":"2026-06-22T10:15:30.000Z","createdAt":"2026-06-22T10:15:30.000Z","updatedAt":"2026-06-22T10:15:30.000Z"}],"submittedAt":"2026-06-22T10:15:30.000Z","createdAt":"2026-06-22T10:15:30.000Z","updatedAt":"2026-06-22T10:15:30.000Z"}],"nextCursor":null,"hasMore":false}}}}}},"400":{"description":"Invalid or unsupported query parameter","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Resource not found.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"getV3Capabilities","tags":["capabilities"],"parameters":[{"name":"cursor","in":"query","required":false,"schema":{"type":"string"},"description":"Opaque cursor returned as `nextCursor` from the previous page."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25},"description":"Maximum number of records to return. Defaults to 25."},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["pending","ready","restricted","rejected","canceled"]},"description":"Filter by capability status. Closed enum — exhaustive; additions would be a breaking change."},{"name":"method","in":"query","required":false,"schema":{"type":"string","enum":["ach","wire","rtp","pix","sepa","swift","spei","pse","transfers_3_0","uaefts","faster_payments","sepa_instant","ipp","card","stablecoin_transfers"]},"description":"Filter by capability method. Open enum — values are added over time; clients must tolerate unknown values."},{"name":"customerId","in":"query","required":false,"schema":{"type":"string"}},{"name":"updatedAfter","in":"query","required":false,"schema":{"type":"string","format":"date-time"},"description":"Return only records updated at or after this RFC 3339 timestamp. Use it to recover from missed webhooks by replaying a window of changes."}],"summary":"List merchant capabilities","description":"Lists capabilities across customers in the current space, ordered by `createdAt` descending."}},"/v3/customers/{customerId}/capabilities/{capabilityId}/tasks-preview":{"get":{"responses":{"200":{"description":"Task descriptors returned","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"category":{"type":"string","description":"Canonical task category."},"subject":{"type":"object","properties":{"type":{"enum":["customer","related_party"],"description":"Customer or related-party subject type."},"id":{"type":"string","description":"Public subject identifier."}},"required":["type","id"],"description":"Customer or related-party task subject."},"requirements":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","description":"Stable requirement descriptor key."},"section":{"type":"string","description":"Optional requirement section label."},"request":{"anyOf":[{"type":"object","properties":{"type":{"description":"Profile-field request.","enum":["profile"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"valueType":{"enum":["string","number","boolean","date","country","money","address","tax_identifier","identity_document","object","array"],"description":"Canonical profile value type."},"itemValueType":{"enum":["string","number","boolean","date","country","money","address","tax_identifier","identity_document","object"],"description":"Array element value type."},"profilePointer":{"type":"string","pattern":"^\\/(?:[^/~]|~0|~1)*(?:\\/(?:[^/~]|~0|~1)*)*$","description":"Canonical customer or related-party JSON Pointer."},"constraints":{"type":"object","properties":{"minLength":{"type":"integer","minimum":0,"description":"Minimum string length."},"maxLength":{"type":"integer","minimum":1,"description":"Maximum string length."},"pattern":{"type":"string","description":"Regular expression the value must match."}},"required":[],"description":"Type-compatible profile constraints."}},"required":["type","prompt","required","valueType","profilePointer"]},{"type":"object","properties":{"type":{"description":"Free-text request.","enum":["text"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"constraints":{"type":"object","properties":{"minLength":{"type":"integer","minimum":0,"description":"Minimum string length."},"maxLength":{"type":"integer","minimum":1,"description":"Maximum string length."},"pattern":{"type":"string","description":"Regular expression the value must match."}},"required":[],"description":"String constraints."}},"required":["type","prompt","required"]},{"type":"object","properties":{"type":{"description":"Full-date request.","enum":["date"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"constraints":{"type":"object","properties":{"minimum":{"type":"string","format":"date","description":"Inclusive minimum full-date."},"maximum":{"type":"string","format":"date","description":"Inclusive maximum full-date."}},"required":[],"description":"Full-date constraints."}},"required":["type","prompt","required"]},{"type":"object","properties":{"type":{"description":"Select request discriminator.","enum":["single_select"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"options":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string","minLength":1,"description":"Stable submitted option value."},"label":{"type":"string","minLength":1,"description":"Human-readable option label."},"description":{"type":"string","description":"Additional option guidance."}},"required":["value","label"]},"minItems":1,"description":"Available options."},"constraints":{"type":"object","properties":{"minItems":{"type":"integer","minimum":0,"description":"Minimum selections."},"maxItems":{"type":"integer","minimum":1,"description":"Maximum selections."}},"required":[],"description":"Selection-count constraints."}},"required":["type","prompt","required","options"]},{"type":"object","properties":{"type":{"description":"Select request discriminator.","enum":["multi_select"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"options":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string","minLength":1,"description":"Stable submitted option value."},"label":{"type":"string","minLength":1,"description":"Human-readable option label."},"description":{"type":"string","description":"Additional option guidance."}},"required":["value","label"]},"minItems":1,"description":"Available options."},"constraints":{"type":"object","properties":{"minItems":{"type":"integer","minimum":0,"description":"Minimum selections."},"maxItems":{"type":"integer","minimum":1,"description":"Maximum selections."}},"required":[],"description":"Selection-count constraints."}},"required":["type","prompt","required","options"]},{"type":"object","properties":{"type":{"description":"Boolean request.","enum":["boolean"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."}},"required":["type","prompt","required"]},{"type":"object","properties":{"type":{"description":"Versioned attestation request.","enum":["attestation"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"text":{"type":"string","minLength":1,"description":"Exact text presented for acceptance."},"version":{"type":"string","minLength":1,"description":"Immutable text version."},"constraints":{"type":"object","properties":{"verificationLink":{"allOf":[{"type":"string"},{"type":"number"}],"description":"Forbidden on summary representations."}},"required":[],"description":"URL-free public attestation constraints."}},"required":["type","prompt","required","text","version"]},{"type":"object","properties":{"type":{"description":"Document request.","enum":["document"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"purpose":{"type":"string","minLength":1,"description":"Published document purpose."},"acceptedDocumentTypes":{"type":"array","items":{"type":"string"},"minItems":1,"description":"Accepted document types."},"minDocuments":{"type":"integer","minimum":1,"description":"Minimum document count."},"maxDocuments":{"type":"integer","minimum":1,"description":"Maximum document count."},"constraints":{"type":"object","properties":{"maxAgeDays":{"type":"integer","minimum":1,"description":"Maximum document age in days."},"captureMethods":{"type":"array","items":{"type":"string"},"minItems":1,"description":"Accepted capture methods."},"nameMatch":{"type":"string","description":"Required subject name."},"acceptedFormats":{"type":"array","items":{"type":"string"},"minItems":1,"description":"Accepted media formats."}},"required":[],"description":"Document constraints."}},"required":["type","prompt","required","purpose"]},{"type":"object","properties":{"type":{"description":"Related-party reference request.","enum":["resource_reference"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"resourceType":{"description":"Referenced resource type.","enum":["related_party"]},"requiredRoles":{"type":"array","items":{"type":"string"},"minItems":1,"description":"Required related-party roles."}},"required":["type","prompt","required","resourceType"]},{"type":"object","properties":{"type":{"description":"Mutually exclusive evidence routes.","enum":["alternatives"]},"prompt":{"type":"string","minLength":1,"description":"Instruction for choosing one route."},"alternatives":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"description":"Stable alternative key."},"request":{"anyOf":[{"type":"object","properties":{"type":{"description":"Profile-field request.","enum":["profile"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"valueType":{"enum":["string","number","boolean","date","country","money","address","tax_identifier","identity_document","object","array"],"description":"Canonical profile value type."},"itemValueType":{"enum":["string","number","boolean","date","country","money","address","tax_identifier","identity_document","object"],"description":"Array element value type."},"profilePointer":{"type":"string","pattern":"^\\/(?:[^/~]|~0|~1)*(?:\\/(?:[^/~]|~0|~1)*)*$","description":"Canonical customer or related-party JSON Pointer."},"constraints":{"type":"object","properties":{"minLength":{"type":"integer","minimum":0,"description":"Minimum string length."},"maxLength":{"type":"integer","minimum":1,"description":"Maximum string length."},"pattern":{"type":"string","description":"Regular expression the value must match."}},"required":[],"description":"Type-compatible profile constraints."}},"required":["type","prompt","required","valueType","profilePointer"]},{"type":"object","properties":{"type":{"description":"Free-text request.","enum":["text"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"constraints":{"type":"object","properties":{"minLength":{"type":"integer","minimum":0,"description":"Minimum string length."},"maxLength":{"type":"integer","minimum":1,"description":"Maximum string length."},"pattern":{"type":"string","description":"Regular expression the value must match."}},"required":[],"description":"String constraints."}},"required":["type","prompt","required"]},{"type":"object","properties":{"type":{"description":"Full-date request.","enum":["date"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"constraints":{"type":"object","properties":{"minimum":{"type":"string","format":"date","description":"Inclusive minimum full-date."},"maximum":{"type":"string","format":"date","description":"Inclusive maximum full-date."}},"required":[],"description":"Full-date constraints."}},"required":["type","prompt","required"]},{"type":"object","properties":{"type":{"description":"Select request discriminator.","enum":["single_select"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"options":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string","minLength":1,"description":"Stable submitted option value."},"label":{"type":"string","minLength":1,"description":"Human-readable option label."},"description":{"type":"string","description":"Additional option guidance."}},"required":["value","label"]},"minItems":1,"description":"Available options."},"constraints":{"type":"object","properties":{"minItems":{"type":"integer","minimum":0,"description":"Minimum selections."},"maxItems":{"type":"integer","minimum":1,"description":"Maximum selections."}},"required":[],"description":"Selection-count constraints."}},"required":["type","prompt","required","options"]},{"type":"object","properties":{"type":{"description":"Select request discriminator.","enum":["multi_select"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"options":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string","minLength":1,"description":"Stable submitted option value."},"label":{"type":"string","minLength":1,"description":"Human-readable option label."},"description":{"type":"string","description":"Additional option guidance."}},"required":["value","label"]},"minItems":1,"description":"Available options."},"constraints":{"type":"object","properties":{"minItems":{"type":"integer","minimum":0,"description":"Minimum selections."},"maxItems":{"type":"integer","minimum":1,"description":"Maximum selections."}},"required":[],"description":"Selection-count constraints."}},"required":["type","prompt","required","options"]},{"type":"object","properties":{"type":{"description":"Boolean request.","enum":["boolean"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."}},"required":["type","prompt","required"]},{"type":"object","properties":{"type":{"description":"Versioned attestation request.","enum":["attestation"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"text":{"type":"string","minLength":1,"description":"Exact text presented for acceptance."},"version":{"type":"string","minLength":1,"description":"Immutable text version."},"constraints":{"type":"object","properties":{"verificationLink":{"allOf":[{"type":"string"},{"type":"number"}],"description":"Forbidden on summary representations."}},"required":[],"description":"URL-free public attestation constraints."}},"required":["type","prompt","required","text","version"]},{"type":"object","properties":{"type":{"description":"Document request.","enum":["document"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"purpose":{"type":"string","minLength":1,"description":"Published document purpose."},"acceptedDocumentTypes":{"type":"array","items":{"type":"string"},"minItems":1,"description":"Accepted document types."},"minDocuments":{"type":"integer","minimum":1,"description":"Minimum document count."},"maxDocuments":{"type":"integer","minimum":1,"description":"Maximum document count."},"constraints":{"type":"object","properties":{"maxAgeDays":{"type":"integer","minimum":1,"description":"Maximum document age in days."},"captureMethods":{"type":"array","items":{"type":"string"},"minItems":1,"description":"Accepted capture methods."},"nameMatch":{"type":"string","description":"Required subject name."},"acceptedFormats":{"type":"array","items":{"type":"string"},"minItems":1,"description":"Accepted media formats."}},"required":[],"description":"Document constraints."}},"required":["type","prompt","required","purpose"]},{"type":"object","properties":{"type":{"description":"Related-party reference request.","enum":["resource_reference"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"resourceType":{"description":"Referenced resource type.","enum":["related_party"]},"requiredRoles":{"type":"array","items":{"type":"string"},"minItems":1,"description":"Required related-party roles."}},"required":["type","prompt","required","resourceType"]}]}},"required":["key","request"]},"minItems":1,"description":"Non-recursive alternative requests."}},"required":["type","prompt","alternatives"]}]}},"required":["key","request"]},"description":"Ordered requirement descriptors."},"verificationSessions":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","description":"Stable verification-session key."},"type":{"enum":["identity_verification","business_verification"],"description":"Identity or business verification-session type."}},"required":["key","type"]},"description":"Ordered verification-session descriptors."},"tosSessions":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","description":"Stable verification-session key."},"type":{"description":"Hosted terms-session type.","enum":["terms_of_service"]}},"required":["key","type"]},"description":"Ordered terms-session descriptors."},"completionPolicy":{"anyOf":[{"type":"object","properties":{"type":{"enum":["requirements","verification_sessions","tos_sessions"],"description":"Task child collection evaluated by this policy leaf."},"completion":{"description":"Every live member of the collection must complete.","enum":["all"]}},"required":["type","completion"]},{"type":"object","properties":{"mode":{"enum":["all_of","any_of"],"description":"How nested completion conditions are combined."},"conditions":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"type":{"enum":["requirements","verification_sessions","tos_sessions"],"description":"Task child collection evaluated by this policy leaf."},"completion":{"description":"Every live member of the collection must complete.","enum":["all"]}},"required":["type","completion"]},{"type":"object","properties":{"mode":{"enum":["all_of","any_of"],"description":"How nested completion conditions are combined."},"conditions":{"type":"array","items":{"type":"object","properties":{"type":{"enum":["requirements","verification_sessions","tos_sessions"],"description":"Task child collection evaluated by this policy leaf."},"completion":{"description":"Every live member of the collection must complete.","enum":["all"]}},"required":["type","completion"]},"minItems":2,"description":"Two or more normalized child conditions."}},"required":["mode","conditions"]}]},"minItems":2,"description":"Two or more normalized child conditions."}},"required":["mode","conditions"]}],"description":"Normalized completion expression."}},"required":["category","subject","requirements","verificationSessions","tosSessions","completionPolicy"]},"description":"Descriptor-only capability task preview."}},"required":["data"]}}}},"400":{"description":"Invalid request.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Customer not found","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"422":{"description":"Capability is not requestable","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"503":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["kyc_configuration_unavailable","verification_collection_mapping_invalid"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"getV3CustomersByCustomerIdCapabilitiesByCapabilityIdTasks-preview","tags":["capabilities"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"customerId","required":true},{"schema":{"type":"string"},"in":"path","name":"capabilityId","required":true}],"summary":"Preview capability tasks","description":"Returns descriptor-only tasks from one pinned, side-effect-free evaluation snapshot."}},"/v3/customers/{customerId}/capabilities":{"get":{"responses":{"200":{"description":"Capabilities returned","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z0-9]+(?:_[a-z0-9]+)*$","description":"Permanent capability id, for example `ach_pooled`. `wire_pooled`/`wire_named` cover bank-wire capability requests, including provider routes that use the domestic wire network as the underlying rail. The internal rail remains a method/rail vocabulary value, not a public capability id. Open enum — values are added over time; clients must tolerate unknown values."},"customerId":{"type":"string","description":"Customer identifier."},"method":{"enum":["ach","wire","rtp","pix","sepa","swift","spei","pse","transfers_3_0","uaefts","faster_payments","sepa_instant","ipp","card","stablecoin_transfers"],"description":"Single payment method represented by this capability. Open enum — values are added over time; clients must tolerate unknown values."},"accountType":{"anyOf":[{"enum":["pooled","named"],"nullable":true}],"description":"Bank account type when the capability is bank-account based."},"status":{"description":"Capability status. Closed enum — exhaustive; additions would be a breaking change.","enum":["ready"]},"statusReason":{"allOf":[{"type":"string"},{"type":"number"}],"description":"Structured reason for a non-ready capability. Ready capabilities omit this field."},"openTaskIds":{"type":"array","items":{"type":"string"},"description":"Ids of open tasks associated with this capability or one of its applications, including shared customer tasks reached through an active dependency, ordered by creation time and then task id. Empty when nothing is open."},"applications":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Application identifier (`apl_...`)."},"institution":{"type":"object","properties":{"id":{"type":"string","description":"Opaque public institution id to send in `institutions`."},"name":{"type":"string","description":"Public institution name."},"bic":{"anyOf":[{"type":"string","nullable":true}],"description":"BIC/SWIFT code when known."}},"required":["id","name","bic"]},"status":{"enum":["requested","in_review","action_required","ready","rejected","disabled","canceled"],"description":"Institution application status. Closed enum — exhaustive; additions would be a breaking change."},"statusReason":{"anyOf":[{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"nullable":true}],"description":"Structured reason for the current status. `in_review` always returns a stored or synthesized reason; self-explanatory statuses may return null."},"openTaskIds":{"type":"array","items":{"type":"string"},"description":"Ids of open tasks associated with this application, including shared customer tasks reached through an active dependency, ordered by creation time and then task id. Empty when nothing is open."},"submittedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Submitted at."},"createdAt":{"type":"string","description":"Created at."},"updatedAt":{"type":"string","description":"Updated at."}},"required":["id","institution","status","statusReason","openTaskIds","submittedAt","createdAt","updatedAt"]},"description":"Institution compliance flows for this capability."},"submittedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Submitted at."},"createdAt":{"type":"string","description":"Created at."},"updatedAt":{"type":"string","description":"Updated at."}},"required":["id","customerId","method","accountType","status","openTaskIds","applications","submittedAt","createdAt","updatedAt"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z0-9]+(?:_[a-z0-9]+)*$","description":"Permanent capability id, for example `ach_pooled`. `wire_pooled`/`wire_named` cover bank-wire capability requests, including provider routes that use the domestic wire network as the underlying rail. The internal rail remains a method/rail vocabulary value, not a public capability id. Open enum — values are added over time; clients must tolerate unknown values."},"customerId":{"type":"string","description":"Customer identifier."},"method":{"enum":["ach","wire","rtp","pix","sepa","swift","spei","pse","transfers_3_0","uaefts","faster_payments","sepa_instant","ipp","card","stablecoin_transfers"],"description":"Single payment method represented by this capability. Open enum — values are added over time; clients must tolerate unknown values."},"accountType":{"anyOf":[{"enum":["pooled","named"],"nullable":true}],"description":"Bank account type when the capability is bank-account based."},"status":{"enum":["pending","restricted","rejected","canceled"],"description":"Capability status. Closed enum — exhaustive; additions would be a breaking change."},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code for the capability status."},"resolution":{"enum":["complete_tasks","wait","contact_support","none"],"description":"Action that can move the capability forward."},"message":{"type":"string","description":"Human-readable explanation of the capability status."}},"required":["code","resolution","message"],"description":"Structured reason for a non-ready capability. Ready capabilities omit this field."},"openTaskIds":{"type":"array","items":{"type":"string"},"description":"Ids of open tasks associated with this capability or one of its applications, including shared customer tasks reached through an active dependency, ordered by creation time and then task id. Empty when nothing is open."},"applications":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Application identifier (`apl_...`)."},"institution":{"type":"object","properties":{"id":{"type":"string","description":"Opaque public institution id to send in `institutions`."},"name":{"type":"string","description":"Public institution name."},"bic":{"anyOf":[{"type":"string","nullable":true}],"description":"BIC/SWIFT code when known."}},"required":["id","name","bic"]},"status":{"enum":["requested","in_review","action_required","ready","rejected","disabled","canceled"],"description":"Institution application status. Closed enum — exhaustive; additions would be a breaking change."},"statusReason":{"anyOf":[{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"nullable":true}],"description":"Structured reason for the current status. `in_review` always returns a stored or synthesized reason; self-explanatory statuses may return null."},"openTaskIds":{"type":"array","items":{"type":"string"},"description":"Ids of open tasks associated with this application, including shared customer tasks reached through an active dependency, ordered by creation time and then task id. Empty when nothing is open."},"submittedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Submitted at."},"createdAt":{"type":"string","description":"Created at."},"updatedAt":{"type":"string","description":"Updated at."}},"required":["id","institution","status","statusReason","openTaskIds","submittedAt","createdAt","updatedAt"]},"description":"Institution compliance flows for this capability."},"submittedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Submitted at."},"createdAt":{"type":"string","description":"Created at."},"updatedAt":{"type":"string","description":"Updated at."}},"required":["id","customerId","method","accountType","status","statusReason","openTaskIds","applications","submittedAt","createdAt","updatedAt"]}]},"description":"Capabilities."},"nextCursor":{"anyOf":[{"type":"string","nullable":true}],"description":"Cursor for the next page, or null when there is no next page."},"hasMore":{"type":"boolean","description":"Whether another page is available."}},"required":["data","nextCursor","hasMore"]},"examples":{"restricted":{"summary":"Customer capabilities","value":{"data":[{"id":"ach_pooled","customerId":"cus_7F3pL2nQ9xA5mW8kR1sT4v","method":"ach","accountType":"pooled","status":"restricted","statusReason":{"code":"tasks_due","resolution":"complete_tasks","message":"Additional customer information is required."},"openTaskIds":["tsk_8uL2nA7xQ5mR9pT4vZ1sWc"],"applications":[{"id":"apl_4Y9xQ8u3m2N7p6R5s1T0vZ","institution":{"id":"jpmorgan","name":"JPMorgan Chase","bic":"CHASUS33"},"status":"in_review","statusReason":{"code":"internal_review","message":"The submission is under internal review.","actor":"swipelux","retryable":true},"openTaskIds":["tsk_8uL2nA7xQ5mR9pT4vZ1sWc"],"submittedAt":"2026-06-22T10:15:30.000Z","createdAt":"2026-06-22T10:15:30.000Z","updatedAt":"2026-06-22T10:15:30.000Z"}],"submittedAt":"2026-06-22T10:15:30.000Z","createdAt":"2026-06-22T10:15:30.000Z","updatedAt":"2026-06-22T10:15:30.000Z"}],"nextCursor":null,"hasMore":false}}}}}},"400":{"description":"Invalid request.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Customer not found","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"getV3CustomersByCustomerIdCapabilities","tags":["capabilities"],"parameters":[{"name":"cursor","in":"query","required":false,"schema":{"type":"string"},"description":"Opaque cursor returned as `nextCursor` from the previous page."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25},"description":"Maximum number of records to return. Defaults to 25."},{"name":"updatedAfter","in":"query","required":false,"schema":{"type":"string","format":"date-time"},"description":"Return only records updated at or after this RFC 3339 timestamp. Use it to recover from missed webhooks by replaying a window of changes."},{"schema":{"type":"string"},"in":"path","name":"customerId","required":true}],"summary":"List capabilities","description":"Lists a customer's capability requests with their current institution applications."}},"/v3/customers/{customerId}/capabilities/supported":{"get":{"responses":{"200":{"description":"Supported capability options returned","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z0-9]+(?:_[a-z0-9]+)*$","description":"Permanent capability id, for example `ach_pooled`. `wire_pooled`/`wire_named` cover bank-wire capability requests, including provider routes that use the domestic wire network as the underlying rail. The internal rail remains a method/rail vocabulary value, not a public capability id. Open enum — values are added over time; clients must tolerate unknown values."},"method":{"enum":["ach","wire","rtp","pix","sepa","swift","spei","pse","transfers_3_0","uaefts","faster_payments","sepa_instant","ipp","card","stablecoin_transfers"],"description":"Payment method represented by this capability. Open enum — values are added over time; clients must tolerate unknown values."},"accountType":{"anyOf":[{"enum":["pooled","named"],"nullable":true}],"description":"Bank account type when the capability is bank-account based."},"directions":{"type":"array","items":{"enum":["payin","payout"]},"minItems":1,"description":"Transfer directions supported by this capability variant. Capability ids are direction-free; per-direction status is not modeled."},"availability":{"enum":["available","beta","disabled"],"description":"Capability variant availability. `disabled` means the variant is not offered for this customer. Closed enum — exhaustive; additions would be a breaking change."},"eligibility":{"type":"object","properties":{"eligible":{"type":"boolean","description":"Whether customer-specific eligibility checks pass. Capability creation also requires availability `available` or `beta`."},"reason":{"anyOf":[{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"nullable":true}],"description":"Structured customer-specific blocker when the customer is not eligible."}},"required":["eligible","reason"],"description":"Customer-specific eligibility checks, evaluated separately from availability."},"institutions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Opaque public institution id to send in `institutions`."},"name":{"type":"string","description":"Public institution name."},"bic":{"anyOf":[{"type":"string","nullable":true}],"description":"BIC/SWIFT code when known."},"countries":{"type":"array","items":{"type":"string"},"description":"ISO 3166-1 alpha-2 countries where this institution is offered."},"isDefault":{"type":"boolean","description":"Whether omission of `institutions` selects this option for this capability and customer."}},"required":["id","name","bic","countries","isDefault"]},"description":"Institutions supporting this exact capability variant."}},"required":["id","method","accountType","directions","availability","eligibility","institutions"]},"description":"Supported capability variants, for example `ach_pooled`, `wire_named`, or `stablecoin_transfers`."}},"required":["data"]},"examples":{"mixedAvailability":{"summary":"Supported capability variants","value":{"data":[{"id":"stablecoin_transfers","method":"stablecoin_transfers","accountType":null,"directions":["payin","payout"],"availability":"available","eligibility":{"eligible":true,"reason":null},"institutions":[]},{"id":"ach_pooled","method":"ach","accountType":"pooled","directions":["payin","payout"],"availability":"available","eligibility":{"eligible":true,"reason":null},"institutions":[{"id":"jpmorgan","name":"JPMorgan Chase","bic":"CHASUS33","countries":["US"],"isDefault":true}]},{"id":"sepa_named","method":"sepa","accountType":"named","directions":["payin","payout"],"availability":"available","eligibility":{"eligible":true,"reason":null},"institutions":[{"id":"banking_circle_denmark","name":"Banking Circle Denmark","bic":"SXPYDKKK","countries":[],"isDefault":true}]},{"id":"wire_named","method":"wire","accountType":"named","directions":["payin","payout"],"availability":"available","eligibility":{"eligible":true,"reason":null},"institutions":[{"id":"swipelux_usd","name":"Swipelux USD","bic":null,"countries":["US"],"isDefault":false}]},{"id":"faster_payments_named","method":"faster_payments","accountType":"named","directions":["payin","payout"],"availability":"available","eligibility":{"eligible":true,"reason":null},"institutions":[{"id":"swipelux_gbp","name":"Swipelux GBP","bic":null,"countries":["GB"],"isDefault":true}]},{"id":"ipp_named","method":"ipp","accountType":"named","directions":["payin","payout"],"availability":"available","eligibility":{"eligible":true,"reason":null},"institutions":[{"id":"swipelux_aed","name":"Swipelux AED","bic":null,"countries":["AE"],"isDefault":true}]},{"id":"pix_named","method":"pix","accountType":"named","directions":["payin","payout"],"availability":"disabled","eligibility":{"eligible":true,"reason":null},"institutions":[]}]}}}}}},"400":{"description":"Invalid request.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Customer not found","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"getV3CustomersByCustomerIdCapabilitiesSupported","tags":["capabilities"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"customerId","required":true}],"summary":"List supported capabilities","description":"Lists every known capability variant for this customer with supported directions, availability, eligibility, and supporting institutions. `stablecoin_transfers` is always listed; `card` is omitted for business customers. For available bank-backed capability creation, omitted or empty `institutions` lists select registry defaults; a non-empty list explicitly overrides defaults."}},"/v3/customers/{customerId}/capabilities/{capabilityId}":{"post":{"responses":{"200":{"description":"Canceled capability requested again","headers":{"Idempotency-Replayed":{"description":"Present with value `true` when an idempotent request is replayed.","schema":{"type":"string","enum":["true"]}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z0-9]+(?:_[a-z0-9]+)*$","description":"Permanent capability id, for example `ach_pooled`. `wire_pooled`/`wire_named` cover bank-wire capability requests, including provider routes that use the domestic wire network as the underlying rail. The internal rail remains a method/rail vocabulary value, not a public capability id. Open enum — values are added over time; clients must tolerate unknown values."},"customerId":{"type":"string","description":"Customer identifier."},"method":{"enum":["ach","wire","rtp","pix","sepa","swift","spei","pse","transfers_3_0","uaefts","faster_payments","sepa_instant","ipp","card","stablecoin_transfers"],"description":"Single payment method represented by this capability. Open enum — values are added over time; clients must tolerate unknown values."},"accountType":{"anyOf":[{"enum":["pooled","named"],"nullable":true}],"description":"Bank account type when the capability is bank-account based."},"status":{"description":"Capability status. Closed enum — exhaustive; additions would be a breaking change.","enum":["ready"]},"statusReason":{"allOf":[{"type":"string"},{"type":"number"}],"description":"Structured reason for a non-ready capability. Ready capabilities omit this field."},"openTaskIds":{"type":"array","items":{"type":"string"},"description":"Ids of open tasks associated with this capability or one of its applications, including shared customer tasks reached through an active dependency, ordered by creation time and then task id. Empty when nothing is open."},"applications":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Application identifier (`apl_...`)."},"institution":{"type":"object","properties":{"id":{"type":"string","description":"Opaque public institution id to send in `institutions`."},"name":{"type":"string","description":"Public institution name."},"bic":{"anyOf":[{"type":"string","nullable":true}],"description":"BIC/SWIFT code when known."}},"required":["id","name","bic"]},"status":{"enum":["requested","in_review","action_required","ready","rejected","disabled","canceled"],"description":"Institution application status. Closed enum — exhaustive; additions would be a breaking change."},"statusReason":{"anyOf":[{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"nullable":true}],"description":"Structured reason for the current status. `in_review` always returns a stored or synthesized reason; self-explanatory statuses may return null."},"openTaskIds":{"type":"array","items":{"type":"string"},"description":"Ids of open tasks associated with this application, including shared customer tasks reached through an active dependency, ordered by creation time and then task id. Empty when nothing is open."},"submittedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Submitted at."},"createdAt":{"type":"string","description":"Created at."},"updatedAt":{"type":"string","description":"Updated at."}},"required":["id","institution","status","statusReason","openTaskIds","submittedAt","createdAt","updatedAt"]},"description":"Institution compliance flows for this capability."},"submittedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Submitted at."},"createdAt":{"type":"string","description":"Created at."},"updatedAt":{"type":"string","description":"Updated at."}},"required":["id","customerId","method","accountType","status","openTaskIds","applications","submittedAt","createdAt","updatedAt"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z0-9]+(?:_[a-z0-9]+)*$","description":"Permanent capability id, for example `ach_pooled`. `wire_pooled`/`wire_named` cover bank-wire capability requests, including provider routes that use the domestic wire network as the underlying rail. The internal rail remains a method/rail vocabulary value, not a public capability id. Open enum — values are added over time; clients must tolerate unknown values."},"customerId":{"type":"string","description":"Customer identifier."},"method":{"enum":["ach","wire","rtp","pix","sepa","swift","spei","pse","transfers_3_0","uaefts","faster_payments","sepa_instant","ipp","card","stablecoin_transfers"],"description":"Single payment method represented by this capability. Open enum — values are added over time; clients must tolerate unknown values."},"accountType":{"anyOf":[{"enum":["pooled","named"],"nullable":true}],"description":"Bank account type when the capability is bank-account based."},"status":{"enum":["pending","restricted","rejected","canceled"],"description":"Capability status. Closed enum — exhaustive; additions would be a breaking change."},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code for the capability status."},"resolution":{"enum":["complete_tasks","wait","contact_support","none"],"description":"Action that can move the capability forward."},"message":{"type":"string","description":"Human-readable explanation of the capability status."}},"required":["code","resolution","message"],"description":"Structured reason for a non-ready capability. Ready capabilities omit this field."},"openTaskIds":{"type":"array","items":{"type":"string"},"description":"Ids of open tasks associated with this capability or one of its applications, including shared customer tasks reached through an active dependency, ordered by creation time and then task id. Empty when nothing is open."},"applications":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Application identifier (`apl_...`)."},"institution":{"type":"object","properties":{"id":{"type":"string","description":"Opaque public institution id to send in `institutions`."},"name":{"type":"string","description":"Public institution name."},"bic":{"anyOf":[{"type":"string","nullable":true}],"description":"BIC/SWIFT code when known."}},"required":["id","name","bic"]},"status":{"enum":["requested","in_review","action_required","ready","rejected","disabled","canceled"],"description":"Institution application status. Closed enum — exhaustive; additions would be a breaking change."},"statusReason":{"anyOf":[{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"nullable":true}],"description":"Structured reason for the current status. `in_review` always returns a stored or synthesized reason; self-explanatory statuses may return null."},"openTaskIds":{"type":"array","items":{"type":"string"},"description":"Ids of open tasks associated with this application, including shared customer tasks reached through an active dependency, ordered by creation time and then task id. Empty when nothing is open."},"submittedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Submitted at."},"createdAt":{"type":"string","description":"Created at."},"updatedAt":{"type":"string","description":"Updated at."}},"required":["id","institution","status","statusReason","openTaskIds","submittedAt","createdAt","updatedAt"]},"description":"Institution compliance flows for this capability."},"submittedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Submitted at."},"createdAt":{"type":"string","description":"Created at."},"updatedAt":{"type":"string","description":"Updated at."}},"required":["id","customerId","method","accountType","status","statusReason","openTaskIds","applications","submittedAt","createdAt","updatedAt"]}],"description":"Capability."}},"required":["data"]},"examples":{"restricted":{"summary":"Capability awaiting customer tasks","value":{"data":{"id":"ach_pooled","customerId":"cus_7F3pL2nQ9xA5mW8kR1sT4v","method":"ach","accountType":"pooled","status":"restricted","statusReason":{"code":"tasks_due","resolution":"complete_tasks","message":"Additional customer information is required."},"openTaskIds":["tsk_8uL2nA7xQ5mR9pT4vZ1sWc"],"applications":[{"id":"apl_4Y9xQ8u3m2N7p6R5s1T0vZ","institution":{"id":"jpmorgan","name":"JPMorgan Chase","bic":"CHASUS33"},"status":"in_review","statusReason":{"code":"internal_review","message":"The submission is under internal review.","actor":"swipelux","retryable":true},"openTaskIds":["tsk_8uL2nA7xQ5mR9pT4vZ1sWc"],"submittedAt":"2026-06-22T10:15:30.000Z","createdAt":"2026-06-22T10:15:30.000Z","updatedAt":"2026-06-22T10:15:30.000Z"}],"submittedAt":"2026-06-22T10:15:30.000Z","createdAt":"2026-06-22T10:15:30.000Z","updatedAt":"2026-06-22T10:15:30.000Z"}}}}}}},"201":{"description":"Capability created","headers":{"Idempotency-Replayed":{"description":"Present with value `true` when an idempotent request is replayed.","schema":{"type":"string","enum":["true"]}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z0-9]+(?:_[a-z0-9]+)*$","description":"Permanent capability id, for example `ach_pooled`. `wire_pooled`/`wire_named` cover bank-wire capability requests, including provider routes that use the domestic wire network as the underlying rail. The internal rail remains a method/rail vocabulary value, not a public capability id. Open enum — values are added over time; clients must tolerate unknown values."},"customerId":{"type":"string","description":"Customer identifier."},"method":{"enum":["ach","wire","rtp","pix","sepa","swift","spei","pse","transfers_3_0","uaefts","faster_payments","sepa_instant","ipp","card","stablecoin_transfers"],"description":"Single payment method represented by this capability. Open enum — values are added over time; clients must tolerate unknown values."},"accountType":{"anyOf":[{"enum":["pooled","named"],"nullable":true}],"description":"Bank account type when the capability is bank-account based."},"status":{"description":"Capability status. Closed enum — exhaustive; additions would be a breaking change.","enum":["ready"]},"statusReason":{"allOf":[{"type":"string"},{"type":"number"}],"description":"Structured reason for a non-ready capability. Ready capabilities omit this field."},"openTaskIds":{"type":"array","items":{"type":"string"},"description":"Ids of open tasks associated with this capability or one of its applications, including shared customer tasks reached through an active dependency, ordered by creation time and then task id. Empty when nothing is open."},"applications":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Application identifier (`apl_...`)."},"institution":{"type":"object","properties":{"id":{"type":"string","description":"Opaque public institution id to send in `institutions`."},"name":{"type":"string","description":"Public institution name."},"bic":{"anyOf":[{"type":"string","nullable":true}],"description":"BIC/SWIFT code when known."}},"required":["id","name","bic"]},"status":{"enum":["requested","in_review","action_required","ready","rejected","disabled","canceled"],"description":"Institution application status. Closed enum — exhaustive; additions would be a breaking change."},"statusReason":{"anyOf":[{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"nullable":true}],"description":"Structured reason for the current status. `in_review` always returns a stored or synthesized reason; self-explanatory statuses may return null."},"openTaskIds":{"type":"array","items":{"type":"string"},"description":"Ids of open tasks associated with this application, including shared customer tasks reached through an active dependency, ordered by creation time and then task id. Empty when nothing is open."},"submittedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Submitted at."},"createdAt":{"type":"string","description":"Created at."},"updatedAt":{"type":"string","description":"Updated at."}},"required":["id","institution","status","statusReason","openTaskIds","submittedAt","createdAt","updatedAt"]},"description":"Institution compliance flows for this capability."},"submittedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Submitted at."},"createdAt":{"type":"string","description":"Created at."},"updatedAt":{"type":"string","description":"Updated at."}},"required":["id","customerId","method","accountType","status","openTaskIds","applications","submittedAt","createdAt","updatedAt"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z0-9]+(?:_[a-z0-9]+)*$","description":"Permanent capability id, for example `ach_pooled`. `wire_pooled`/`wire_named` cover bank-wire capability requests, including provider routes that use the domestic wire network as the underlying rail. The internal rail remains a method/rail vocabulary value, not a public capability id. Open enum — values are added over time; clients must tolerate unknown values."},"customerId":{"type":"string","description":"Customer identifier."},"method":{"enum":["ach","wire","rtp","pix","sepa","swift","spei","pse","transfers_3_0","uaefts","faster_payments","sepa_instant","ipp","card","stablecoin_transfers"],"description":"Single payment method represented by this capability. Open enum — values are added over time; clients must tolerate unknown values."},"accountType":{"anyOf":[{"enum":["pooled","named"],"nullable":true}],"description":"Bank account type when the capability is bank-account based."},"status":{"enum":["pending","restricted","rejected","canceled"],"description":"Capability status. Closed enum — exhaustive; additions would be a breaking change."},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code for the capability status."},"resolution":{"enum":["complete_tasks","wait","contact_support","none"],"description":"Action that can move the capability forward."},"message":{"type":"string","description":"Human-readable explanation of the capability status."}},"required":["code","resolution","message"],"description":"Structured reason for a non-ready capability. Ready capabilities omit this field."},"openTaskIds":{"type":"array","items":{"type":"string"},"description":"Ids of open tasks associated with this capability or one of its applications, including shared customer tasks reached through an active dependency, ordered by creation time and then task id. Empty when nothing is open."},"applications":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Application identifier (`apl_...`)."},"institution":{"type":"object","properties":{"id":{"type":"string","description":"Opaque public institution id to send in `institutions`."},"name":{"type":"string","description":"Public institution name."},"bic":{"anyOf":[{"type":"string","nullable":true}],"description":"BIC/SWIFT code when known."}},"required":["id","name","bic"]},"status":{"enum":["requested","in_review","action_required","ready","rejected","disabled","canceled"],"description":"Institution application status. Closed enum — exhaustive; additions would be a breaking change."},"statusReason":{"anyOf":[{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"nullable":true}],"description":"Structured reason for the current status. `in_review` always returns a stored or synthesized reason; self-explanatory statuses may return null."},"openTaskIds":{"type":"array","items":{"type":"string"},"description":"Ids of open tasks associated with this application, including shared customer tasks reached through an active dependency, ordered by creation time and then task id. Empty when nothing is open."},"submittedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Submitted at."},"createdAt":{"type":"string","description":"Created at."},"updatedAt":{"type":"string","description":"Updated at."}},"required":["id","institution","status","statusReason","openTaskIds","submittedAt","createdAt","updatedAt"]},"description":"Institution compliance flows for this capability."},"submittedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Submitted at."},"createdAt":{"type":"string","description":"Created at."},"updatedAt":{"type":"string","description":"Updated at."}},"required":["id","customerId","method","accountType","status","statusReason","openTaskIds","applications","submittedAt","createdAt","updatedAt"]}],"description":"Capability."}},"required":["data"]},"examples":{"restricted":{"summary":"Capability awaiting customer tasks","value":{"data":{"id":"ach_pooled","customerId":"cus_7F3pL2nQ9xA5mW8kR1sT4v","method":"ach","accountType":"pooled","status":"restricted","statusReason":{"code":"tasks_due","resolution":"complete_tasks","message":"Additional customer information is required."},"openTaskIds":["tsk_8uL2nA7xQ5mR9pT4vZ1sWc"],"applications":[{"id":"apl_4Y9xQ8u3m2N7p6R5s1T0vZ","institution":{"id":"jpmorgan","name":"JPMorgan Chase","bic":"CHASUS33"},"status":"in_review","statusReason":{"code":"internal_review","message":"The submission is under internal review.","actor":"swipelux","retryable":true},"openTaskIds":["tsk_8uL2nA7xQ5mR9pT4vZ1sWc"],"submittedAt":"2026-06-22T10:15:30.000Z","createdAt":"2026-06-22T10:15:30.000Z","updatedAt":"2026-06-22T10:15:30.000Z"}],"submittedAt":"2026-06-22T10:15:30.000Z","createdAt":"2026-06-22T10:15:30.000Z","updatedAt":"2026-06-22T10:15:30.000Z"}}}}}}},"400":{"description":"Invalid request or missing idempotency key","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Customer not found","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"409":{"description":"Capability already exists, idempotency conflict, or temporally unavailable variant","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"422":{"description":"Capability intent or structurally unavailable variant","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"503":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["kyc_configuration_unavailable","verification_collection_mapping_invalid"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"postV3CustomersByCustomerIdCapabilitiesByCapabilityId","tags":["capabilities"],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":255},"example":"idem_20260626_0001","description":"Required for effectful v3 requests (POST, PATCH, PUT, DELETE). Reuse the same key with the same body to replay the cached response."},{"schema":{"type":"string"},"in":"path","name":"customerId","required":true},{"schema":{"type":"string"},"in":"path","name":"capabilityId","required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"institutions":{"type":"array","items":{"type":"string","description":"Opaque public institution id."},"description":"Public institution ids returned by `GET /v3/customers/{customerId}/capabilities/supported`. Omitted or empty `institutions` lists select applicable registry defaults; a non-empty list explicitly overrides defaults.","example":["jpmorgan"]}}},"examples":{"achPooled":{"summary":"Request pooled ACH capability","value":{"institutions":["citibank","jpmorgan"]}},"achPooledForOneInstitution":{"summary":"Request pooled ACH for one institution","value":{"institutions":["jpmorgan"]}},"wireNamedSwipeluxUsd":{"summary":"Request named USD wire capability","value":{"institutions":["swipelux_usd"]}},"fasterPaymentsNamedSwipeluxGbp":{"summary":"Request named GBP Faster Payments capability","value":{"institutions":["swipelux_gbp"]}},"ippNamedSwipeluxAed":{"summary":"Request named AED IPP capability","value":{"institutions":["swipelux_aed"]}}}}}},"summary":"Create capability","description":"Requests a customer capability by permanent capability id. Requesting a canceled capability with a new idempotency key starts a fresh lifecycle after current eligibility and routing checks pass. For bank-backed capabilities, omitted or empty `institutions` lists select registry defaults; a non-empty list explicitly overrides defaults. When customer intake is incomplete, the capability is created in `restricted` with open tasks and durable planned application identities, while provider submission is deferred until those tasks are satisfied. Known ineligible variants fail instead of silently falling back. Send `Idempotency-Key` for every POST; the same key and body replay the original response."},"get":{"responses":{"200":{"description":"Capability returned","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z0-9]+(?:_[a-z0-9]+)*$","description":"Permanent capability id, for example `ach_pooled`. `wire_pooled`/`wire_named` cover bank-wire capability requests, including provider routes that use the domestic wire network as the underlying rail. The internal rail remains a method/rail vocabulary value, not a public capability id. Open enum — values are added over time; clients must tolerate unknown values."},"customerId":{"type":"string","description":"Customer identifier."},"method":{"enum":["ach","wire","rtp","pix","sepa","swift","spei","pse","transfers_3_0","uaefts","faster_payments","sepa_instant","ipp","card","stablecoin_transfers"],"description":"Single payment method represented by this capability. Open enum — values are added over time; clients must tolerate unknown values."},"accountType":{"anyOf":[{"enum":["pooled","named"],"nullable":true}],"description":"Bank account type when the capability is bank-account based."},"status":{"description":"Capability status. Closed enum — exhaustive; additions would be a breaking change.","enum":["ready"]},"statusReason":{"allOf":[{"type":"string"},{"type":"number"}],"description":"Structured reason for a non-ready capability. Ready capabilities omit this field."},"openTaskIds":{"type":"array","items":{"type":"string"},"description":"Ids of open tasks associated with this capability or one of its applications, including shared customer tasks reached through an active dependency, ordered by creation time and then task id. Empty when nothing is open."},"applications":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Application identifier (`apl_...`)."},"institution":{"type":"object","properties":{"id":{"type":"string","description":"Opaque public institution id to send in `institutions`."},"name":{"type":"string","description":"Public institution name."},"bic":{"anyOf":[{"type":"string","nullable":true}],"description":"BIC/SWIFT code when known."}},"required":["id","name","bic"]},"status":{"enum":["requested","in_review","action_required","ready","rejected","disabled","canceled"],"description":"Institution application status. Closed enum — exhaustive; additions would be a breaking change."},"statusReason":{"anyOf":[{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"nullable":true}],"description":"Structured reason for the current status. `in_review` always returns a stored or synthesized reason; self-explanatory statuses may return null."},"openTaskIds":{"type":"array","items":{"type":"string"},"description":"Ids of open tasks associated with this application, including shared customer tasks reached through an active dependency, ordered by creation time and then task id. Empty when nothing is open."},"submittedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Submitted at."},"createdAt":{"type":"string","description":"Created at."},"updatedAt":{"type":"string","description":"Updated at."}},"required":["id","institution","status","statusReason","openTaskIds","submittedAt","createdAt","updatedAt"]},"description":"Institution compliance flows for this capability."},"submittedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Submitted at."},"createdAt":{"type":"string","description":"Created at."},"updatedAt":{"type":"string","description":"Updated at."}},"required":["id","customerId","method","accountType","status","openTaskIds","applications","submittedAt","createdAt","updatedAt"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z0-9]+(?:_[a-z0-9]+)*$","description":"Permanent capability id, for example `ach_pooled`. `wire_pooled`/`wire_named` cover bank-wire capability requests, including provider routes that use the domestic wire network as the underlying rail. The internal rail remains a method/rail vocabulary value, not a public capability id. Open enum — values are added over time; clients must tolerate unknown values."},"customerId":{"type":"string","description":"Customer identifier."},"method":{"enum":["ach","wire","rtp","pix","sepa","swift","spei","pse","transfers_3_0","uaefts","faster_payments","sepa_instant","ipp","card","stablecoin_transfers"],"description":"Single payment method represented by this capability. Open enum — values are added over time; clients must tolerate unknown values."},"accountType":{"anyOf":[{"enum":["pooled","named"],"nullable":true}],"description":"Bank account type when the capability is bank-account based."},"status":{"enum":["pending","restricted","rejected","canceled"],"description":"Capability status. Closed enum — exhaustive; additions would be a breaking change."},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code for the capability status."},"resolution":{"enum":["complete_tasks","wait","contact_support","none"],"description":"Action that can move the capability forward."},"message":{"type":"string","description":"Human-readable explanation of the capability status."}},"required":["code","resolution","message"],"description":"Structured reason for a non-ready capability. Ready capabilities omit this field."},"openTaskIds":{"type":"array","items":{"type":"string"},"description":"Ids of open tasks associated with this capability or one of its applications, including shared customer tasks reached through an active dependency, ordered by creation time and then task id. Empty when nothing is open."},"applications":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Application identifier (`apl_...`)."},"institution":{"type":"object","properties":{"id":{"type":"string","description":"Opaque public institution id to send in `institutions`."},"name":{"type":"string","description":"Public institution name."},"bic":{"anyOf":[{"type":"string","nullable":true}],"description":"BIC/SWIFT code when known."}},"required":["id","name","bic"]},"status":{"enum":["requested","in_review","action_required","ready","rejected","disabled","canceled"],"description":"Institution application status. Closed enum — exhaustive; additions would be a breaking change."},"statusReason":{"anyOf":[{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"nullable":true}],"description":"Structured reason for the current status. `in_review` always returns a stored or synthesized reason; self-explanatory statuses may return null."},"openTaskIds":{"type":"array","items":{"type":"string"},"description":"Ids of open tasks associated with this application, including shared customer tasks reached through an active dependency, ordered by creation time and then task id. Empty when nothing is open."},"submittedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Submitted at."},"createdAt":{"type":"string","description":"Created at."},"updatedAt":{"type":"string","description":"Updated at."}},"required":["id","institution","status","statusReason","openTaskIds","submittedAt","createdAt","updatedAt"]},"description":"Institution compliance flows for this capability."},"submittedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Submitted at."},"createdAt":{"type":"string","description":"Created at."},"updatedAt":{"type":"string","description":"Updated at."}},"required":["id","customerId","method","accountType","status","statusReason","openTaskIds","applications","submittedAt","createdAt","updatedAt"]}],"description":"Capability."}},"required":["data"]},"examples":{"restricted":{"summary":"Capability awaiting customer tasks","value":{"data":{"id":"ach_pooled","customerId":"cus_7F3pL2nQ9xA5mW8kR1sT4v","method":"ach","accountType":"pooled","status":"restricted","statusReason":{"code":"tasks_due","resolution":"complete_tasks","message":"Additional customer information is required."},"openTaskIds":["tsk_8uL2nA7xQ5mR9pT4vZ1sWc"],"applications":[{"id":"apl_4Y9xQ8u3m2N7p6R5s1T0vZ","institution":{"id":"jpmorgan","name":"JPMorgan Chase","bic":"CHASUS33"},"status":"in_review","statusReason":{"code":"internal_review","message":"The submission is under internal review.","actor":"swipelux","retryable":true},"openTaskIds":["tsk_8uL2nA7xQ5mR9pT4vZ1sWc"],"submittedAt":"2026-06-22T10:15:30.000Z","createdAt":"2026-06-22T10:15:30.000Z","updatedAt":"2026-06-22T10:15:30.000Z"}],"submittedAt":"2026-06-22T10:15:30.000Z","createdAt":"2026-06-22T10:15:30.000Z","updatedAt":"2026-06-22T10:15:30.000Z"}}},"canceled":{"summary":"Capability canceled","value":{"data":{"id":"ach_pooled","customerId":"cus_7F3pL2nQ9xA5mW8kR1sT4v","method":"ach","accountType":"pooled","status":"canceled","statusReason":{"code":"requested_by_developer","resolution":"none","message":"Capability was canceled at developer request."},"openTaskIds":[],"applications":[{"id":"apl_4Y9xQ8u3m2N7p6R5s1T0vZ","institution":{"id":"jpmorgan","name":"JPMorgan Chase","bic":"CHASUS33"},"status":"canceled","statusReason":{"code":"requested_by_developer","message":"Application was canceled at developer request.","actor":"developer","retryable":false},"openTaskIds":[],"submittedAt":"2026-06-22T10:15:30.000Z","createdAt":"2026-06-22T10:15:30.000Z","updatedAt":"2026-06-22T10:15:30.000Z"}],"submittedAt":"2026-06-22T10:15:30.000Z","createdAt":"2026-06-22T10:15:30.000Z","updatedAt":"2026-06-22T10:15:30.000Z"}}}}}}},"400":{"description":"Invalid request.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Capability not found","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"getV3CustomersByCustomerIdCapabilitiesByCapabilityId","tags":["capabilities"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"customerId","required":true},{"schema":{"type":"string"},"in":"path","name":"capabilityId","required":true}],"summary":"Get capability","description":"Returns one v3 capability by permanent public capability id."}},"/v3/customers/{customerId}/capabilities/{capabilityId}/cancel":{"post":{"responses":{"200":{"description":"Capability canceled","headers":{"Idempotency-Replayed":{"description":"Present with value `true` when an idempotent request is replayed.","schema":{"type":"string","enum":["true"]}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z0-9]+(?:_[a-z0-9]+)*$","description":"Permanent capability id, for example `ach_pooled`. `wire_pooled`/`wire_named` cover bank-wire capability requests, including provider routes that use the domestic wire network as the underlying rail. The internal rail remains a method/rail vocabulary value, not a public capability id. Open enum — values are added over time; clients must tolerate unknown values."},"customerId":{"type":"string","description":"Customer identifier."},"method":{"enum":["ach","wire","rtp","pix","sepa","swift","spei","pse","transfers_3_0","uaefts","faster_payments","sepa_instant","ipp","card","stablecoin_transfers"],"description":"Single payment method represented by this capability. Open enum — values are added over time; clients must tolerate unknown values."},"accountType":{"anyOf":[{"enum":["pooled","named"],"nullable":true}],"description":"Bank account type when the capability is bank-account based."},"status":{"description":"Capability status. Closed enum — exhaustive; additions would be a breaking change.","enum":["ready"]},"statusReason":{"allOf":[{"type":"string"},{"type":"number"}],"description":"Structured reason for a non-ready capability. Ready capabilities omit this field."},"openTaskIds":{"type":"array","items":{"type":"string"},"description":"Ids of open tasks associated with this capability or one of its applications, including shared customer tasks reached through an active dependency, ordered by creation time and then task id. Empty when nothing is open."},"applications":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Application identifier (`apl_...`)."},"institution":{"type":"object","properties":{"id":{"type":"string","description":"Opaque public institution id to send in `institutions`."},"name":{"type":"string","description":"Public institution name."},"bic":{"anyOf":[{"type":"string","nullable":true}],"description":"BIC/SWIFT code when known."}},"required":["id","name","bic"]},"status":{"enum":["requested","in_review","action_required","ready","rejected","disabled","canceled"],"description":"Institution application status. Closed enum — exhaustive; additions would be a breaking change."},"statusReason":{"anyOf":[{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"nullable":true}],"description":"Structured reason for the current status. `in_review` always returns a stored or synthesized reason; self-explanatory statuses may return null."},"openTaskIds":{"type":"array","items":{"type":"string"},"description":"Ids of open tasks associated with this application, including shared customer tasks reached through an active dependency, ordered by creation time and then task id. Empty when nothing is open."},"submittedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Submitted at."},"createdAt":{"type":"string","description":"Created at."},"updatedAt":{"type":"string","description":"Updated at."}},"required":["id","institution","status","statusReason","openTaskIds","submittedAt","createdAt","updatedAt"]},"description":"Institution compliance flows for this capability."},"submittedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Submitted at."},"createdAt":{"type":"string","description":"Created at."},"updatedAt":{"type":"string","description":"Updated at."}},"required":["id","customerId","method","accountType","status","openTaskIds","applications","submittedAt","createdAt","updatedAt"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z0-9]+(?:_[a-z0-9]+)*$","description":"Permanent capability id, for example `ach_pooled`. `wire_pooled`/`wire_named` cover bank-wire capability requests, including provider routes that use the domestic wire network as the underlying rail. The internal rail remains a method/rail vocabulary value, not a public capability id. Open enum — values are added over time; clients must tolerate unknown values."},"customerId":{"type":"string","description":"Customer identifier."},"method":{"enum":["ach","wire","rtp","pix","sepa","swift","spei","pse","transfers_3_0","uaefts","faster_payments","sepa_instant","ipp","card","stablecoin_transfers"],"description":"Single payment method represented by this capability. Open enum — values are added over time; clients must tolerate unknown values."},"accountType":{"anyOf":[{"enum":["pooled","named"],"nullable":true}],"description":"Bank account type when the capability is bank-account based."},"status":{"enum":["pending","restricted","rejected","canceled"],"description":"Capability status. Closed enum — exhaustive; additions would be a breaking change."},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code for the capability status."},"resolution":{"enum":["complete_tasks","wait","contact_support","none"],"description":"Action that can move the capability forward."},"message":{"type":"string","description":"Human-readable explanation of the capability status."}},"required":["code","resolution","message"],"description":"Structured reason for a non-ready capability. Ready capabilities omit this field."},"openTaskIds":{"type":"array","items":{"type":"string"},"description":"Ids of open tasks associated with this capability or one of its applications, including shared customer tasks reached through an active dependency, ordered by creation time and then task id. Empty when nothing is open."},"applications":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Application identifier (`apl_...`)."},"institution":{"type":"object","properties":{"id":{"type":"string","description":"Opaque public institution id to send in `institutions`."},"name":{"type":"string","description":"Public institution name."},"bic":{"anyOf":[{"type":"string","nullable":true}],"description":"BIC/SWIFT code when known."}},"required":["id","name","bic"]},"status":{"enum":["requested","in_review","action_required","ready","rejected","disabled","canceled"],"description":"Institution application status. Closed enum — exhaustive; additions would be a breaking change."},"statusReason":{"anyOf":[{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"nullable":true}],"description":"Structured reason for the current status. `in_review` always returns a stored or synthesized reason; self-explanatory statuses may return null."},"openTaskIds":{"type":"array","items":{"type":"string"},"description":"Ids of open tasks associated with this application, including shared customer tasks reached through an active dependency, ordered by creation time and then task id. Empty when nothing is open."},"submittedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Submitted at."},"createdAt":{"type":"string","description":"Created at."},"updatedAt":{"type":"string","description":"Updated at."}},"required":["id","institution","status","statusReason","openTaskIds","submittedAt","createdAt","updatedAt"]},"description":"Institution compliance flows for this capability."},"submittedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Submitted at."},"createdAt":{"type":"string","description":"Created at."},"updatedAt":{"type":"string","description":"Updated at."}},"required":["id","customerId","method","accountType","status","statusReason","openTaskIds","applications","submittedAt","createdAt","updatedAt"]}],"description":"Capability."}},"required":["data"]},"examples":{"canceled":{"summary":"Capability canceled","value":{"data":{"id":"ach_pooled","customerId":"cus_7F3pL2nQ9xA5mW8kR1sT4v","method":"ach","accountType":"pooled","status":"canceled","statusReason":{"code":"requested_by_developer","resolution":"none","message":"Capability was canceled at developer request."},"openTaskIds":[],"applications":[{"id":"apl_4Y9xQ8u3m2N7p6R5s1T0vZ","institution":{"id":"jpmorgan","name":"JPMorgan Chase","bic":"CHASUS33"},"status":"canceled","statusReason":{"code":"requested_by_developer","message":"Application was canceled at developer request.","actor":"developer","retryable":false},"openTaskIds":[],"submittedAt":"2026-06-22T10:15:30.000Z","createdAt":"2026-06-22T10:15:30.000Z","updatedAt":"2026-06-22T10:15:30.000Z"}],"submittedAt":"2026-06-22T10:15:30.000Z","createdAt":"2026-06-22T10:15:30.000Z","updatedAt":"2026-06-22T10:15:30.000Z"}}}}}}},"400":{"description":"Invalid request.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Capability not found","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"409":{"description":"Capability cannot be canceled from its current status (problem code `capability_not_cancelable`).","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"postV3CustomersByCustomerIdCapabilitiesByCapabilityIdCancel","tags":["capabilities"],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":255},"example":"idem_20260626_0001","description":"Required for effectful v3 requests (POST, PATCH, PUT, DELETE). Reuse the same key with the same body to replay the cached response."},{"schema":{"type":"string"},"in":"path","name":"customerId","required":true},{"schema":{"type":"string"},"in":"path","name":"capabilityId","required":true}],"summary":"Cancel capability","description":"Cancels a `pending` or `restricted` capability that has no active linked accounts or transfers. On success, tasks owned exclusively by the capability or its applications and all non-archived applications are canceled. A customer-scoped intake task shared with another active capability remains open for that sibling until its final dependency ends. The canceled lifecycle remains readable until a new create request successfully replaces it."}},"/v3/customers/{customerId}/capabilities/{capabilityId}/applications":{"get":{"responses":{"200":{"description":"Applications returned","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Application identifier (`apl_...`)."},"institution":{"type":"object","properties":{"id":{"type":"string","description":"Opaque public institution id to send in `institutions`."},"name":{"type":"string","description":"Public institution name."},"bic":{"anyOf":[{"type":"string","nullable":true}],"description":"BIC/SWIFT code when known."}},"required":["id","name","bic"]},"status":{"enum":["requested","in_review","action_required","ready","rejected","disabled","canceled"],"description":"Institution application status. Closed enum — exhaustive; additions would be a breaking change."},"statusReason":{"anyOf":[{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"nullable":true}],"description":"Structured reason for the current status. `in_review` always returns a stored or synthesized reason; self-explanatory statuses may return null."},"openTaskIds":{"type":"array","items":{"type":"string"},"description":"Ids of open tasks associated with this application, including shared customer tasks reached through an active dependency, ordered by creation time and then task id. Empty when nothing is open."},"submittedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Submitted at."},"createdAt":{"type":"string","description":"Created at."},"updatedAt":{"type":"string","description":"Updated at."}},"required":["id","institution","status","statusReason","openTaskIds","submittedAt","createdAt","updatedAt"]},"description":"Applications."},"nextCursor":{"anyOf":[{"type":"string","nullable":true}],"description":"Cursor for the next page, or null when there is no next page."},"hasMore":{"type":"boolean","description":"Whether another page is available."}},"required":["data","nextCursor","hasMore"]},"examples":{"inReview":{"summary":"Capability institution applications","value":{"data":[{"id":"apl_4Y9xQ8u3m2N7p6R5s1T0vZ","institution":{"id":"jpmorgan","name":"JPMorgan Chase","bic":"CHASUS33"},"status":"in_review","statusReason":{"code":"internal_review","message":"The submission is under internal review.","actor":"swipelux","retryable":true},"openTaskIds":["tsk_8uL2nA7xQ5mR9pT4vZ1sWc"],"submittedAt":"2026-06-22T10:15:30.000Z","createdAt":"2026-06-22T10:15:30.000Z","updatedAt":"2026-06-22T10:15:30.000Z"}],"nextCursor":null,"hasMore":false}}}}}},"400":{"description":"Invalid request.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Capability not found","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"getV3CustomersByCustomerIdCapabilitiesByCapabilityIdApplications","tags":["capabilities"],"parameters":[{"name":"cursor","in":"query","required":false,"schema":{"type":"string"},"description":"Opaque cursor returned as `nextCursor` from the previous page."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25},"description":"Maximum number of records to return. Defaults to 25."},{"name":"updatedAfter","in":"query","required":false,"schema":{"type":"string","format":"date-time"},"description":"Return only records updated at or after this RFC 3339 timestamp. Use it to recover from missed webhooks by replaying a window of changes."},{"schema":{"type":"string"},"in":"path","name":"customerId","required":true},{"schema":{"type":"string"},"in":"path","name":"capabilityId","required":true}],"summary":"List capability applications","description":"Lists institution application flows for this capability. Use each application's ordered openTaskIds to fetch authorized customer task details."}},"/v3/customers/{customerId}/capabilities/{capabilityId}/applications/{applicationId}/history":{"get":{"responses":{"200":{"description":"Application history returned","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"applicationId":{"type":"string","description":"Application identifier."},"capabilityId":{"type":"string","pattern":"^[a-z0-9]+(?:_[a-z0-9]+)*$","description":"Permanent capability id, for example `ach_pooled`. `wire_pooled`/`wire_named` cover bank-wire capability requests, including provider routes that use the domestic wire network as the underlying rail. The internal rail remains a method/rail vocabulary value, not a public capability id. Open enum — values are added over time; clients must tolerate unknown values."},"tasks":{"type":"array","items":{"type":"object","properties":{"taskId":{"type":"string","description":"Task identifier."},"events":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"History entry identifier."},"taskId":{"type":"string","minLength":1,"description":"Task identifier."},"name":{"type":"string","minLength":1,"description":"Customer-facing task name at this revision."},"customerId":{"type":"string","minLength":1,"description":"Owning customer identifier."},"scope":{"type":"object","properties":{"type":{"type":"string","minLength":1,"description":"Resource type whose workflow created the task."},"id":{"type":"string","minLength":1,"description":"Public resource id or capability key."}},"required":["type","id"]},"subject":{"type":"object","properties":{"type":{"type":"string","minLength":1,"description":"Resource type whose information is requested."},"id":{"type":"string","minLength":1,"description":"Public subject identifier."}},"required":["type","id"]},"originGroupId":{"type":"string","description":"Opaque correlation value."},"category":{"type":"string","minLength":1,"description":"Task category. Open enum — values are added over time; clients must tolerate unknown values."},"revision":{"type":"integer","minimum":1,"description":"Recorded task revision."},"remediationRound":{"type":"integer","minimum":0,"description":"Recorded remediation round."},"status":{"enum":["action_required","in_review","satisfied","rejected","canceled"],"description":"Recorded task status."},"reason":{"type":"object","properties":{"code":{"type":"string","minLength":1,"description":"Stable reason code."},"message":{"type":"string","minLength":1,"description":"Safe developer-facing explanation."},"requestedBy":{"type":"string","minLength":1,"description":"Party that requested the work."}},"required":["code","message","requestedBy"]},"dueAt":{"anyOf":[{"type":"string","format":"date-time","description":"Recorded due time.","nullable":true}],"description":"Recorded due time, or null when none was set."},"deadline":{"anyOf":[{"type":"object","properties":{"at":{"type":"string","format":"date-time","description":"Executable deadline time."},"outcome":{"enum":["none","auto_rejected"],"description":"Closed deadline outcome."},"noticeCount":{"type":"integer","minimum":0,"description":"Recorded auto-reject notices."}},"required":["at","outcome","noticeCount"],"nullable":true}],"description":"Recorded deadline, or null when none was set."},"notices":{"type":"array","items":{"type":"object","properties":{"at":{"type":"string","format":"date-time","description":"Informational notice time."},"type":{"type":"string","minLength":1,"description":"Open notice type."},"noticeCount":{"type":"integer","minimum":0,"description":"Recorded notice count."}},"required":["at","type","noticeCount"]},"description":"Notice snapshot."},"requirements":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Requirement identifier."},"key":{"type":"string","minLength":1,"description":"Stable requirement key."},"section":{"type":"string","description":"Optional presentation section."},"status":{"enum":["action_required","in_review","accepted","rejected","canceled","superseded"],"description":"Requirement status at this revision."},"requestType":{"type":"string","minLength":1,"description":"Redacted request discriminator."},"supersededByRequirementId":{"type":"string","description":"Successor requirement identifier."}},"required":["id","key","status","requestType"]},"description":"Redacted requirement snapshot."},"verificationSessions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^vfy_[0-9A-Za-z]+$","description":"Verification-session identifier (`vfy_...`)."},"key":{"type":"string","minLength":1,"description":"Stable session key recorded in task history."},"type":{"type":"string","minLength":1,"description":"Open hosted-session type."},"status":{"enum":["action_required","in_review","completed","rejected","canceled"],"description":"Closed session status."}},"required":["id","key","type","status"]},"description":"URL-free identity and business session snapshot."},"tosSessions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^vfy_[0-9A-Za-z]+$","description":"Verification-session identifier (`vfy_...`)."},"key":{"type":"string","minLength":1,"description":"Stable session key recorded in task history."},"type":{"type":"string","minLength":1,"description":"Open hosted-session type."},"status":{"enum":["action_required","in_review","completed","rejected","canceled"],"description":"Closed session status."}},"required":["id","key","type","status"]},"description":"URL-free terms-session snapshot."},"completionPolicy":{"anyOf":[{"anyOf":[{"type":"object","properties":{"type":{"enum":["requirements","verification_sessions","tos_sessions"],"description":"Task child collection evaluated by this policy leaf."},"completion":{"description":"Every live member of the collection must complete.","enum":["all"]}},"required":["type","completion"]},{"type":"object","properties":{"mode":{"enum":["all_of","any_of"],"description":"How nested completion conditions are combined."},"conditions":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"type":{"enum":["requirements","verification_sessions","tos_sessions"],"description":"Task child collection evaluated by this policy leaf."},"completion":{"description":"Every live member of the collection must complete.","enum":["all"]}},"required":["type","completion"]},{"type":"object","properties":{"mode":{"enum":["all_of","any_of"],"description":"How nested completion conditions are combined."},"conditions":{"type":"array","items":{"type":"object","properties":{"type":{"enum":["requirements","verification_sessions","tos_sessions"],"description":"Task child collection evaluated by this policy leaf."},"completion":{"description":"Every live member of the collection must complete.","enum":["all"]}},"required":["type","completion"]},"minItems":2,"description":"Two or more normalized child conditions."}},"required":["mode","conditions"]}]},"minItems":2,"description":"Two or more normalized child conditions."}},"required":["mode","conditions"]}],"nullable":true}],"description":"Completion expression at this revision, or null when no completion policy is available."},"createdAt":{"type":"string","format":"date-time","description":"History creation time."},"updatedAt":{"type":"string","format":"date-time","description":"History update time."}},"required":["id","taskId","name","customerId","scope","subject","category","revision","remediationRound","status","reason","dueAt","deadline","notices","requirements","verificationSessions","tosSessions","completionPolicy","createdAt","updatedAt"]},"description":"Task history entries."}},"required":["taskId","events"]},"description":"Application history grouped by task."}},"required":["applicationId","capabilityId","tasks"],"description":"Application history grouped by task."}},"required":["data"]},"examples":{"tasksGrouped":{"summary":"Application history grouped by task","value":{"data":{"applicationId":"apl_4Y9xQ8u3m2N7p6R5s1T0vZ","capabilityId":"ach_pooled","tasks":[{"taskId":"tsk_8uL2nA7xQ5mR9pT4vZ1sWc","events":[{"id":"tskh_7pA6xM9qL4tR8vN1sW5yZ","taskId":"tsk_8uL2nA7xQ5mR9pT4vZ1sWc","name":"Verify business identity","customerId":"cus_7pA6xM9qL4tR8vN1sW5yZ","scope":{"type":"application","id":"apl_4Y9xQ8u3m2N7p6R5s1T0vZ"},"subject":{"type":"customer","id":"cus_7pA6xM9qL4tR8vN1sW5yZ"},"category":"identity_verification","revision":1,"remediationRound":0,"status":"action_required","reason":{"code":"initial_request","message":"Verify the business identity.","requestedBy":"swipelux"},"dueAt":null,"deadline":null,"notices":[],"requirements":[],"verificationSessions":[{"id":"vfy_7pA6xM9qL4tR8vN1sW5yZ","key":"kyb","type":"business_verification","status":"action_required"}],"tosSessions":[],"completionPolicy":{"type":"verification_sessions","completion":"all"},"createdAt":"2026-06-22T10:15:30.000Z","updatedAt":"2026-06-22T10:15:30.000Z"}]}]}}}}}}},"400":{"description":"Invalid request.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Application not found","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"getV3CustomersByCustomerIdCapabilitiesByCapabilityIdApplicationsByApplicationIdHistory","tags":["capabilities"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"customerId","required":true},{"schema":{"type":"string"},"in":"path","name":"capabilityId","required":true},{"schema":{"type":"string"},"in":"path","name":"applicationId","required":true}],"summary":"List application history","description":"Returns canonical task history grouped by task for this institution flow."}},"/v3/tasks":{"get":{"responses":{"200":{"description":"Task inbox page.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskPage"}}}},"400":{"description":"Invalid task-list query.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId","retryable"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["unknown_parameter","validation_error"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","enum":[false],"description":"Static retry guidance for this problem code."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication is required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId","retryable"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["unauthorized"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","enum":[false],"description":"Static retry guidance for this problem code."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"The credential cannot read tasks.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId","retryable"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["forbidden"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","enum":[false],"description":"Static retry guidance for this problem code."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"The task list could not be read.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId","retryable"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["internal_error"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","enum":[true],"description":"Static retry guidance for this problem code."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"listTasks","tags":["Tasks"],"parameters":[{"name":"cursor","in":"query","required":false,"schema":{"type":"string"},"description":"Opaque cursor returned as `nextCursor` from the previous page."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25},"description":"Maximum number of records to return. Defaults to 25."},{"name":"status","in":"query","required":false,"description":"Return only tasks with this closed status.","schema":{"type":"string","enum":["action_required","in_review","satisfied","rejected","canceled"]}},{"name":"category","in":"query","required":false,"description":"Return only tasks in this open category.","schema":{"type":"string"}},{"name":"scopeType","in":"query","required":false,"description":"Return only tasks with this scope type.","schema":{"type":"string"}},{"name":"customerId","in":"query","required":false,"description":"Return only tasks owned by this customer.","schema":{"type":"string"}},{"name":"originGroupId","in":"query","required":false,"description":"Return only tasks whose originGroupId exactly equals this opaque correlation value.","schema":{"type":"string"}},{"name":"dueBefore","in":"query","required":false,"description":"Return only tasks due before this strict RFC 3339 timestamp.","schema":{"type":"string","format":"date-time"}},{"name":"updatedAfter","in":"query","required":false,"schema":{"type":"string","format":"date-time"},"description":"Return only records updated at or after this RFC 3339 timestamp. Use it to recover from missed webhooks by replaying a window of changes."}],"summary":"List tasks","description":"Lists the merchant-wide task inbox with URL-free verification-session summaries.","x-required-permissions":["accounts:read"],"x-customer-ownership-required":false}},"/v3/customers/{customerId}/tasks":{"get":{"responses":{"200":{"description":"Customer task page.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskPage"}}}},"400":{"description":"Invalid customer task-list query.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId","retryable"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["unknown_parameter","validation_error"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","enum":[false],"description":"Static retry guidance for this problem code."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication is required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId","retryable"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["unauthorized"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","enum":[false],"description":"Static retry guidance for this problem code."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"The credential cannot read tasks.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId","retryable"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["forbidden"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","enum":[false],"description":"Static retry guidance for this problem code."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"The customer was not found.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId","retryable"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["customer_not_found"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","enum":[false],"description":"Static retry guidance for this problem code."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"The task list could not be read.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId","retryable"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["internal_error"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","enum":[true],"description":"Static retry guidance for this problem code."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"listCustomerTasks","tags":["Tasks"],"parameters":[{"name":"customerId","in":"path","required":true,"description":"Customer identifier.","schema":{"type":"string","minLength":1}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"},"description":"Opaque cursor returned as `nextCursor` from the previous page."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25},"description":"Maximum number of records to return. Defaults to 25."},{"name":"status","in":"query","required":false,"description":"Return only tasks with this closed status.","schema":{"type":"string","enum":["action_required","in_review","satisfied","rejected","canceled"]}},{"name":"scopeType","in":"query","required":false,"description":"Return only tasks with this scope type.","schema":{"type":"string"}},{"name":"category","in":"query","required":false,"description":"Return only tasks in this open category.","schema":{"type":"string"}},{"name":"originGroupId","in":"query","required":false,"description":"Return only tasks whose originGroupId exactly equals this opaque correlation value.","schema":{"type":"string"}},{"name":"dueBefore","in":"query","required":false,"description":"Return only tasks due before this strict RFC 3339 timestamp.","schema":{"type":"string","format":"date-time"}},{"name":"updatedAfter","in":"query","required":false,"schema":{"type":"string","format":"date-time"},"description":"Return only records updated at or after this RFC 3339 timestamp. Use it to recover from missed webhooks by replaying a window of changes."}],"summary":"List customer tasks","description":"Lists customer-owned tasks with URL-free verification-session summaries.","x-required-permissions":["accounts:read"],"x-customer-ownership-required":true}},"/v3/tasks/{taskId}":{"get":{"responses":{"200":{"description":"Current task.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskResponse"}}}},"400":{"description":"Query parameters are not supported.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId","retryable"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["unknown_parameter"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","enum":[false],"description":"Static retry guidance for this problem code."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication is required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId","retryable"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["unauthorized"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","enum":[false],"description":"Static retry guidance for this problem code."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"The credential cannot read tasks.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId","retryable"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["forbidden"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","enum":[false],"description":"Static retry guidance for this problem code."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"The task was not found.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId","retryable"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["task_not_found"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","enum":[false],"description":"Static retry guidance for this problem code."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"The task could not be read.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId","retryable"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["internal_error"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","enum":[true],"description":"Static retry guidance for this problem code."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"getTask","tags":["Tasks"],"parameters":[{"name":"taskId","in":"path","required":true,"description":"Task identifier.","schema":{"type":"string","minLength":1}}],"summary":"Get a task","description":"Returns a merchant-wide task detail projection without hosted-session URLs.","x-required-permissions":["accounts:read"],"x-customer-ownership-required":false}},"/v3/customers/{customerId}/tasks/{taskId}":{"get":{"responses":{"200":{"description":"Current customer task action surface.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerTaskDetailResponse"}}},"headers":{"Cache-Control":{"description":"Prevents storage of sensitive task data.","schema":{"type":"string","enum":["no-store"]},"example":"no-store"}}},"400":{"description":"Query parameters are not supported.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId","retryable"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["unknown_parameter"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","enum":[false],"description":"Static retry guidance for this problem code."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}},"headers":{"Cache-Control":{"description":"Prevents storage of sensitive task data.","schema":{"type":"string","enum":["no-store"]},"example":"no-store"}}},"401":{"description":"Authentication is required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId","retryable"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["unauthorized"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","enum":[false],"description":"Static retry guidance for this problem code."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}},"headers":{"Cache-Control":{"description":"Prevents storage of sensitive task data.","schema":{"type":"string","enum":["no-store"]},"example":"no-store"}}},"403":{"description":"The credential cannot read the task.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId","retryable"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["forbidden"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","enum":[false],"description":"Static retry guidance for this problem code."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}},"headers":{"Cache-Control":{"description":"Prevents storage of sensitive task data.","schema":{"type":"string","enum":["no-store"]},"example":"no-store"}}},"404":{"description":"The task was not found.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId","retryable"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["task_not_found"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","enum":[false],"description":"Static retry guidance for this problem code."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}},"headers":{"Cache-Control":{"description":"Prevents storage of sensitive task data.","schema":{"type":"string","enum":["no-store"]},"example":"no-store"}}},"500":{"description":"The task could not be read.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId","retryable"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["internal_error"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","enum":[true],"description":"Static retry guidance for this problem code."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}},"headers":{"Cache-Control":{"description":"Prevents storage of sensitive task data.","schema":{"type":"string","enum":["no-store"]},"example":"no-store"}}}},"operationId":"getCustomerTask","tags":["Tasks"],"parameters":[{"name":"customerId","in":"path","required":true,"description":"Customer identifier.","schema":{"type":"string","minLength":1}},{"name":"taskId","in":"path","required":true,"description":"Task identifier.","schema":{"type":"string","minLength":1}}],"summary":"Get customer task detail","description":"Returns the authorized task action surface with its immutable allowed submission channels in canonical direct_submission then verification_session order. Process KYC sessions expose exact customer/task/session first-party action URLs only while action is required; in-review, completed or reused, rejected, and canceled process sessions omit action fields. Process, execution, completion, reuse, and provider-configuration identities remain internal.","x-required-permissions":["accounts:read"],"x-customer-ownership-required":true}},"/v3/customers/{customerId}/tasks/{taskId}/history":{"get":{"responses":{"200":{"description":"Task history page.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskHistoryPage"}}}},"400":{"description":"Invalid task-history query.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId","retryable"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["unknown_parameter","validation_error"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","enum":[false],"description":"Static retry guidance for this problem code."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication is required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId","retryable"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["unauthorized"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","enum":[false],"description":"Static retry guidance for this problem code."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"The credential cannot read task history.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId","retryable"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["forbidden"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","enum":[false],"description":"Static retry guidance for this problem code."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"The task was not found.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId","retryable"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["task_not_found"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","enum":[false],"description":"Static retry guidance for this problem code."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Task history could not be read.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId","retryable"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["internal_error"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","enum":[true],"description":"Static retry guidance for this problem code."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"listCustomerTaskHistory","tags":["Tasks"],"parameters":[{"name":"customerId","in":"path","required":true,"description":"Customer identifier.","schema":{"type":"string","minLength":1}},{"name":"taskId","in":"path","required":true,"description":"Task identifier.","schema":{"type":"string","minLength":1}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"},"description":"Opaque cursor returned as `nextCursor` from the previous page."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25},"description":"Maximum number of records to return. Defaults to 25."},{"name":"updatedAfter","in":"query","required":false,"schema":{"type":"string","format":"date-time"},"description":"Return only records updated at or after this RFC 3339 timestamp. Use it to recover from missed webhooks by replaying a window of changes."}],"summary":"List task history","description":"Lists immutable task revisions without answers or hosted-session URLs.","x-required-permissions":["accounts:read"],"x-customer-ownership-required":true}},"/v3/customers/{customerId}/tasks/{taskId}/submissions":{"get":{"responses":{"200":{"description":"Redacted task submission page.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmissionPage"}}},"headers":{"Cache-Control":{"description":"Prevents storage of sensitive task data.","schema":{"type":"string","enum":["no-store"]},"example":"no-store"}}},"400":{"description":"Invalid submission-list query.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId","retryable"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["unknown_parameter","validation_error"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","enum":[false],"description":"Static retry guidance for this problem code."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}},"headers":{"Cache-Control":{"description":"Prevents storage of sensitive task data.","schema":{"type":"string","enum":["no-store"]},"example":"no-store"}}},"401":{"description":"Authentication is required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId","retryable"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["unauthorized"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","enum":[false],"description":"Static retry guidance for this problem code."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}},"headers":{"Cache-Control":{"description":"Prevents storage of sensitive task data.","schema":{"type":"string","enum":["no-store"]},"example":"no-store"}}},"403":{"description":"The credential cannot read submissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId","retryable"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["forbidden"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","enum":[false],"description":"Static retry guidance for this problem code."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}},"headers":{"Cache-Control":{"description":"Prevents storage of sensitive task data.","schema":{"type":"string","enum":["no-store"]},"example":"no-store"}}},"404":{"description":"The task was not found.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId","retryable"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["task_not_found"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","enum":[false],"description":"Static retry guidance for this problem code."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}},"headers":{"Cache-Control":{"description":"Prevents storage of sensitive task data.","schema":{"type":"string","enum":["no-store"]},"example":"no-store"}}},"500":{"description":"Submissions could not be read.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId","retryable"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["internal_error"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","enum":[true],"description":"Static retry guidance for this problem code."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}},"headers":{"Cache-Control":{"description":"Prevents storage of sensitive task data.","schema":{"type":"string","enum":["no-store"]},"example":"no-store"}}}},"operationId":"listCustomerTaskSubmissions","tags":["Task submissions"],"parameters":[{"name":"customerId","in":"path","required":true,"description":"Customer identifier.","schema":{"type":"string","minLength":1}},{"name":"taskId","in":"path","required":true,"description":"Task identifier.","schema":{"type":"string","minLength":1}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"},"description":"Opaque cursor returned as `nextCursor` from the previous page."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25},"description":"Maximum number of records to return. Defaults to 25."},{"name":"updatedAfter","in":"query","required":false,"schema":{"type":"string","format":"date-time"},"description":"Return only records updated at or after this RFC 3339 timestamp. Use it to recover from missed webhooks by replaying a window of changes."}],"summary":"List task submissions","description":"Lists redacted submission summaries without answer values, alternatives, or document ids.","x-required-permissions":["accounts:read","customers:read"],"x-customer-ownership-required":true},"post":{"responses":{"201":{"description":"Current authorized submission detail.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmissionDetailResponse"}}},"headers":{"Cache-Control":{"description":"Prevents storage of sensitive task data.","schema":{"type":"string","enum":["no-store"]},"example":"no-store"},"Idempotency-Replayed":{"description":"Present with value `true` when an idempotent request is replayed.","schema":{"type":"string","enum":["true"]}}}},"400":{"description":"The submission request is invalid.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId","retryable"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["invalid_document_reference","unknown_parameter","validation_error"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","enum":[false],"description":"Static retry guidance for this problem code."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}},"headers":{"Cache-Control":{"description":"Prevents storage of sensitive task data.","schema":{"type":"string","enum":["no-store"]},"example":"no-store"}}},"401":{"description":"Authentication is required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId","retryable"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["unauthorized"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","enum":[false],"description":"Static retry guidance for this problem code."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}},"headers":{"Cache-Control":{"description":"Prevents storage of sensitive task data.","schema":{"type":"string","enum":["no-store"]},"example":"no-store"}}},"403":{"description":"Every submission permission is required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId","retryable"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["forbidden"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","enum":[false],"description":"Static retry guidance for this problem code."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}},"headers":{"Cache-Control":{"description":"Prevents storage of sensitive task data.","schema":{"type":"string","enum":["no-store"]},"example":"no-store"}}},"404":{"description":"The task was not found.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId","retryable"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["task_not_found"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","enum":[false],"description":"Static retry guidance for this problem code."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}},"headers":{"Cache-Control":{"description":"Prevents storage of sensitive task data.","schema":{"type":"string","enum":["no-store"]},"example":"no-store"}}},"409":{"description":"The task changed, the direct channel is unavailable, profile conflicts, or idempotency failed.","content":{"application/problem+json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/TaskChangedProblem"},{"$ref":"#/components/schemas/AbsenceConflictsWithProfileProblem"},{"$ref":"#/components/schemas/KycProcessConflictProblem"},{"$ref":"#/components/schemas/SubmissionChannelNotAllowedProblem"},{"$ref":"#/components/schemas/IdempotencyConflictProblem"},{"$ref":"#/components/schemas/IdempotencyRequestInProgressProblem"}]}}},"headers":{"Cache-Control":{"description":"Prevents storage of sensitive task data.","schema":{"type":"string","enum":["no-store"]},"example":"no-store"}}},"413":{"description":"The submission request body is too large.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId","retryable"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["request_body_too_large"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","enum":[false],"description":"Static retry guidance for this problem code."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}},"headers":{"Cache-Control":{"description":"Prevents storage of sensitive task data.","schema":{"type":"string","enum":["no-store"]},"example":"no-store"}}},"422":{"description":"One or more current actionable requirements are missing.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/TaskSubmissionIncompleteProblem"}}},"headers":{"Cache-Control":{"description":"Prevents storage of sensitive task data.","schema":{"type":"string","enum":["no-store"]},"example":"no-store"}}},"500":{"description":"The submission could not be created.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId","retryable"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["internal_error"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","enum":[true],"description":"Static retry guidance for this problem code."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}},"headers":{"Cache-Control":{"description":"Prevents storage of sensitive task data.","schema":{"type":"string","enum":["no-store"]},"example":"no-store"}}}},"operationId":"createCustomerTaskSubmission","tags":["Task submissions"],"parameters":[{"name":"customerId","in":"path","required":true,"description":"Customer identifier.","schema":{"type":"string","minLength":1}},{"name":"taskId","in":"path","required":true,"description":"Task identifier.","schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":255},"example":"idem_20260626_0001","description":"Required for effectful v3 requests (POST, PATCH, PUT, DELETE). Reuse the same key with the same body to replay the cached response."}],"requestBody":{"required":true,"description":"Complete current-round answers and task revision. The entire JSON request body is limited to 524288 bytes.","x-max-body-bytes":524288,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmissionRequest"},"examples":{"submission":{"$ref":"#/components/examples/SubmissionRequest"}}}}},"summary":"Create a task submission","description":"Creates one immutable direct-submission attempt for the task's current remediation round.","x-required-permissions":["accounts:write","customers:read","customers:write"],"x-customer-ownership-required":true,"x-idempotent-replay-required-permissions":["accounts:write","customers:read","customers:write"],"x-idempotent-replay-rechecks-ownership":true}},"/v3/customers/{customerId}/tasks/{taskId}/submissions/{submissionId}":{"get":{"responses":{"200":{"description":"Authorized submission detail.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmissionDetailResponse"}}},"headers":{"Cache-Control":{"description":"Prevents storage of sensitive task data.","schema":{"type":"string","enum":["no-store"]},"example":"no-store"}}},"400":{"description":"Query parameters are not supported.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId","retryable"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["unknown_parameter"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","enum":[false],"description":"Static retry guidance for this problem code."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}},"headers":{"Cache-Control":{"description":"Prevents storage of sensitive task data.","schema":{"type":"string","enum":["no-store"]},"example":"no-store"}}},"401":{"description":"Authentication is required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId","retryable"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["unauthorized"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","enum":[false],"description":"Static retry guidance for this problem code."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}},"headers":{"Cache-Control":{"description":"Prevents storage of sensitive task data.","schema":{"type":"string","enum":["no-store"]},"example":"no-store"}}},"403":{"description":"The credential cannot read submission detail.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId","retryable"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["forbidden"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","enum":[false],"description":"Static retry guidance for this problem code."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}},"headers":{"Cache-Control":{"description":"Prevents storage of sensitive task data.","schema":{"type":"string","enum":["no-store"]},"example":"no-store"}}},"404":{"description":"The submission was not found.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId","retryable"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["submission_not_found"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","enum":[false],"description":"Static retry guidance for this problem code."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}},"headers":{"Cache-Control":{"description":"Prevents storage of sensitive task data.","schema":{"type":"string","enum":["no-store"]},"example":"no-store"}}},"500":{"description":"The submission could not be read.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId","retryable"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["internal_error"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","enum":[true],"description":"Static retry guidance for this problem code."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}},"headers":{"Cache-Control":{"description":"Prevents storage of sensitive task data.","schema":{"type":"string","enum":["no-store"]},"example":"no-store"}}}},"operationId":"getCustomerTaskSubmission","tags":["Task submissions"],"parameters":[{"name":"customerId","in":"path","required":true,"description":"Customer identifier.","schema":{"type":"string","minLength":1}},{"name":"taskId","in":"path","required":true,"description":"Task identifier.","schema":{"type":"string","minLength":1}},{"name":"submissionId","in":"path","required":true,"description":"Submission identifier.","schema":{"type":"string","minLength":1}}],"summary":"Get task submission detail","description":"Returns the authorized immutable answer snapshot and current public outcome.","x-required-permissions":["accounts:read","customers:read"],"x-customer-ownership-required":true}},"/v3/customers/{customerId}/documents":{"post":{"responses":{"201":{"description":"Document uploaded","headers":{"Idempotency-Replayed":{"description":"Present with value `true` when an idempotent request is replayed.","schema":{"type":"string","enum":["true"]}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"Document identifier (`doc_...`)."},"type":{"type":"string","description":"Document type."},"fileName":{"type":"string","description":"Uploaded file name."},"contentType":{"type":"string","description":"Uploaded content type."},"sizeBytes":{"type":"number","description":"Uploaded file size in bytes."},"createdAt":{"type":"string","description":"Created at."},"updatedAt":{"type":"string","description":"Updated at."},"status":{"enum":["uploaded"],"description":"Document status. Closed enum — exhaustive; additions would be a breaking change."},"archivedAt":{"description":"Always null: archived documents are not returned here.","nullable":true}},"required":["id","type","fileName","contentType","sizeBytes","createdAt","updatedAt","status","archivedAt"]}},"required":["data"]}}}},"400":{"description":"Invalid multipart upload","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Customer not found","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"postV3CustomersByCustomerIdDocuments","tags":["documents"],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":255},"example":"idem_20260626_0001","description":"Required for effectful v3 requests (POST, PATCH, PUT, DELETE). Reuse the same key with the same body to replay the cached response."},{"schema":{"type":"string"},"in":"path","name":"customerId","required":true}],"summary":"Upload customer document","description":"Uploads one PDF, JPEG, PNG, WebP, or HEIF/HEIC document up to 25 MB as `multipart/form-data`. Send the raw binary in the `file` part; base64 JSON is not accepted. Returns metadata for task submissions.","requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["file"],"properties":{"file":{"type":"string","format":"binary","description":"Raw PDF, JPEG, PNG, WebP, or HEIF/HEIC file bytes (max 25 MB); not a base64 string."},"type":{"type":"string","description":"Optional document type."}}}}}}},"get":{"responses":{"200":{"description":"Documents returned","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Document identifier (`doc_...`)."},"type":{"type":"string","description":"Document type."},"fileName":{"type":"string","description":"Uploaded file name."},"contentType":{"type":"string","description":"Uploaded content type."},"sizeBytes":{"type":"number","description":"Uploaded file size in bytes."},"createdAt":{"type":"string","description":"Created at."},"updatedAt":{"type":"string","description":"Updated at."},"status":{"enum":["uploaded"],"description":"Document status. Closed enum — exhaustive; additions would be a breaking change."},"archivedAt":{"description":"Always null: archived documents are not returned here.","nullable":true}},"required":["id","type","fileName","contentType","sizeBytes","createdAt","updatedAt","status","archivedAt"]}},"nextCursor":{"anyOf":[{"type":"string","nullable":true}]},"hasMore":{"type":"boolean"}},"required":["data","nextCursor","hasMore"]}}}},"400":{"description":"Invalid request.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Customer not found","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"getV3CustomersByCustomerIdDocuments","tags":["documents"],"parameters":[{"name":"cursor","in":"query","required":false,"schema":{"type":"string"},"description":"Opaque cursor returned as `nextCursor` from the previous page."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25},"description":"Maximum number of records to return. Defaults to 25."},{"name":"type","in":"query","required":false,"schema":{"type":"string"},"description":"Return only documents with this type."},{"name":"updatedAfter","in":"query","required":false,"schema":{"type":"string","format":"date-time"},"description":"Return only records updated at or after this RFC 3339 timestamp. Use it to recover from missed webhooks by replaying a window of changes."},{"schema":{"type":"string"},"in":"path","name":"customerId","required":true}],"summary":"List customer document metadata","description":"Returns customer document metadata newest first."}},"/v3/customers/{customerId}/documents/{documentId}":{"delete":{"responses":{"200":{"description":"Document archived","headers":{"Idempotency-Replayed":{"description":"Present with value `true` when an idempotent request is replayed.","schema":{"type":"string","enum":["true"]}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"Document identifier (`doc_...`)."},"type":{"type":"string","description":"Document type."},"fileName":{"type":"string","description":"Uploaded file name."},"contentType":{"type":"string","description":"Uploaded content type."},"sizeBytes":{"type":"number","description":"Uploaded file size in bytes."},"createdAt":{"type":"string","description":"Created at."},"updatedAt":{"type":"string","description":"Updated at."},"status":{"enum":["archived"],"description":"Terminal archive status set by DELETE."},"archivedAt":{"type":"string","description":"Archive timestamp, set exactly once."}},"required":["id","type","fileName","contentType","sizeBytes","createdAt","updatedAt","status","archivedAt"]}},"required":["data"]}}}},"400":{"description":"Invalid request.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Customer or document not found","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"409":{"description":"Idempotency conflict","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"deleteV3CustomersByCustomerIdDocumentsByDocumentId","tags":["documents"],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":255},"example":"idem_20260626_0001","description":"Required for effectful v3 requests (POST, PATCH, PUT, DELETE). Reuse the same key with the same body to replay the cached response."},{"schema":{"type":"string"},"in":"path","name":"customerId","required":true},{"schema":{"type":"string"},"in":"path","name":"documentId","required":true}],"summary":"Archive customer document","description":"Archives one customer document. Archived documents are retained for compliance but excluded from subsequent reads, lists, and task submissions."},"get":{"responses":{"200":{"description":"Document returned","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"Document identifier (`doc_...`)."},"type":{"type":"string","description":"Document type."},"fileName":{"type":"string","description":"Uploaded file name."},"contentType":{"type":"string","description":"Uploaded content type."},"sizeBytes":{"type":"number","description":"Uploaded file size in bytes."},"createdAt":{"type":"string","description":"Created at."},"updatedAt":{"type":"string","description":"Updated at."},"status":{"enum":["uploaded"],"description":"Document status. Closed enum — exhaustive; additions would be a breaking change."},"archivedAt":{"description":"Always null: archived documents are not returned here.","nullable":true}},"required":["id","type","fileName","contentType","sizeBytes","createdAt","updatedAt","status","archivedAt"]}},"required":["data"]}}}},"400":{"description":"Invalid request.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Document not found","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"getV3CustomersByCustomerIdDocumentsByDocumentId","tags":["documents"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"customerId","required":true},{"schema":{"type":"string"},"in":"path","name":"documentId","required":true}],"summary":"Get customer document metadata","description":"Returns metadata for one customer document."}},"/v3/customers/{customerId}/accounts":{"post":{"responses":{"201":{"description":"Account created","headers":{"Idempotency-Replayed":{"description":"Present with value `true` when an idempotent request is replayed.","schema":{"type":"string","enum":["true"]}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"type":{"enum":["wallet","bank"]},"method":{"enum":["ach","wire","sepa","swift","uaefts","faster_payments","sepa_instant","ipp"],"description":"Payment method. Open enum — values are added over time; clients must tolerate unknown values."},"methods":{"type":"array","items":{"enum":["ach","wire","sepa","swift"]},"description":"Payment methods supported by an external bank account. Present on external bank accounts; issued bank accounts use single `method`."},"institutionId":{"type":"string","description":"Institution id recorded at issuance. Omitted when no institution was recorded."},"capabilityId":{"type":"string","description":"Capability id recorded at issuance. Omitted when no capability was recorded."},"accountType":{"enum":["pooled","named"],"description":"Account type recorded at issuance. Omitted when no account type was recorded."},"network":{"enum":["polygon","ethereum","base","arbitrum","optimism","bsc","avalanche"],"description":"`details.network` is the canonical network field for wallet accounts. This top-level `network` field is a compatibility duplicate; its removal is deferred. Open enum — values are added over time; clients must tolerate unknown values."},"origin":{"anyOf":[{"enum":["issued"]},{"enum":["external"]}],"description":"Account origin. Closed enum — exhaustive; additions would be a breaking change."},"status":{"enum":["provisioning","in_review","ready","action_required","suspended","rejected","archived"],"description":"Account status. Closed enum — exhaustive; additions would be a breaking change."},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"]},"openTaskIds":{"type":"array","items":{"type":"string"},"description":"Ids of account-scoped tasks with status `action_required` or `in_review`, ordered by creation time and id. Empty when nothing is open."},"currency":{"type":"string"},"label":{"type":"string"},"isDefault":{"type":"boolean"},"details":{"anyOf":[{"anyOf":[{"type":"object","properties":{"network":{"enum":["polygon","ethereum","base","arbitrum","optimism","bsc","avalanche"],"description":"`details.network` is the canonical network field for wallet accounts. The top-level `network` field is a compatibility duplicate; its removal is deferred. Open enum — values are added over time; clients must tolerate unknown values."},"address":{"type":"string"}},"required":["network","address"]},{"type":"object","properties":{"routingNumber":{"type":"string"},"accountNumber":{"type":"string"},"accountType":{"type":"string"},"bankName":{"type":"string"},"accountHolderName":{"type":"string"},"bankAddress":{"type":"string"},"reference":{"type":"string"},"referenceRequired":{"type":"boolean"}},"required":["routingNumber","accountNumber","accountType","bankName","accountHolderName"]},{"type":"object","properties":{"sortCode":{"type":"string"},"accountNumber":{"type":"string"},"bankName":{"type":"string"},"accountHolderName":{"type":"string"},"reference":{"type":"string"},"referenceRequired":{"type":"boolean"}},"required":["sortCode","accountNumber","bankName","accountHolderName"]},{"type":"object","properties":{"iban":{"type":"string"},"bic":{"type":"string"},"bankName":{"type":"string"},"bankAddress":{"type":"string"},"accountHolderName":{"type":"string"},"reference":{"type":"string"},"referenceRequired":{"type":"boolean"}},"required":["iban","accountHolderName"]},{"type":"object","properties":{"swiftCode":{"type":"string"},"accountNumber":{"type":"string"},"bankName":{"type":"string"},"accountHolderName":{"type":"string"},"bankAddress":{"type":"string"},"routingNumber":{"type":"string"},"intermediaryBankSwift":{"type":"string"},"intermediaryBankName":{"type":"string"},"intermediaryBankAddress":{"type":"string"},"reference":{"type":"string"},"referenceRequired":{"type":"boolean"}},"required":["swiftCode","accountNumber","bankName","accountHolderName"]}],"nullable":true}]},"routing":{"type":"object","properties":{"version":{"type":"number"},"validFrom":{"type":"string"},"validUntil":{"nullable":true}},"required":["version","validFrom","validUntil"]},"settlement":{"type":"object","properties":{"accountId":{"type":"string"}},"required":["accountId"]},"fees":{"type":"object","properties":{"breakdown":{"type":"object","properties":{"developer":{"anyOf":[{"type":"object","properties":{"fixed":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,2})?$","description":"Fixed developer fee in the account currency, represented as a major-unit decimal string with at most 2 decimal places."},"bips":{"type":"integer","minimum":0,"maximum":9999,"description":"Developer fee in basis points. `50` means `0.50%`; the value must be below 10000 (100%)."}},"required":["fixed","bips"],"nullable":true}],"description":"Configured developer fee, or null when none is set."}},"required":["developer"],"description":"Account fee rules grouped by beneficiary."}},"required":["breakdown"],"description":"Pay-in fee configuration for this account. Fixed amounts use the account currency and major-unit scale."},"balances":{"type":"array","items":{"type":"object","properties":{"currency":{"type":"string","description":"Balance currency."},"available":{"type":"string","description":"Available balance from the configured balance source as a decimal string in `currency`."},"pending":{"type":"string","description":"Currently returned as `\"0\"`."}},"required":["currency","available","pending"]},"description":"Balances returned on account detail. External wallets return an empty array; `pending` is currently `\"0\"`."},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]}},"required":["id","type","origin","status","openTaskIds","currency","details","fees","createdAt","updatedAt","archivedAt"]}},"required":["data"]},"examples":{"created":{"summary":"Created Polygon wallet account","description":"A Polygon account is an issued customer wallet account.","value":{"data":{"id":"acc_3eG7xN2pQ4rT8mA1sL6dVc","type":"wallet","network":"polygon","origin":"issued","status":"ready","openTaskIds":[],"currency":"USDC","label":"Treasury wallet","isDefault":true,"details":{"network":"polygon","address":"0x1887b0a68bebc1b0d80a93567ba7002be92b8bd7"},"fees":{"breakdown":{"developer":null}},"createdAt":"2026-06-25T12:05:00.000Z","updatedAt":"2026-06-25T12:05:00.000Z","archivedAt":null}}},"issuedAch":{"summary":"Issued ACH account","description":"An issued ACH account is a virtual customer bank account. The request supplies `settlement.accountId`; provisioning accounts have no details. Pooled ACH stays `provisioning` with `awaiting_assignment` until its first payin supplies concrete bank details.","value":{"data":{"id":"acc_2pQ4rT7mA9sL1kBc6dV8xN","type":"bank","method":"ach","capabilityId":"ach_pooled","accountType":"pooled","institutionId":"jpmorgan","origin":"issued","status":"provisioning","openTaskIds":[],"statusReason":{"code":"awaiting_assignment","message":"Bank account details will be assigned when the first payin is created.","actor":"network","retryable":false},"currency":"USD","label":"USD payin account","details":null,"settlement":{"accountId":"acc_3eG7xN2pQ4rT8mA1sL6dVc"},"fees":{"breakdown":{"developer":null}},"createdAt":"2026-06-25T12:08:00.000Z","updatedAt":"2026-06-25T12:08:00.000Z","archivedAt":null}}},"external":{"summary":"External Polygon wallet account","description":"An external Polygon account keeps `type: \"wallet\"` and `origin: \"external\"`.","value":{"data":{"id":"acc_8qB7yN0rM5uS9wO2tX6zAd","type":"wallet","network":"polygon","origin":"external","status":"ready","openTaskIds":[],"currency":"USDC","label":"Customer Polygon wallet","details":{"network":"polygon","address":"0x4997b0a68bebc1b0d80a93567ba7002be92b8b11"},"fees":{"breakdown":{"developer":null}},"createdAt":"2026-06-25T12:06:00.000Z","updatedAt":"2026-06-25T12:06:00.000Z","archivedAt":null}}},"externalAch":{"summary":"External ACH/wire account","description":"An external ACH/wire account keeps `type: \"bank\"`, `methods: [\"ach\", \"wire\"]`, and typed US routing details.","value":{"data":{"id":"acc_7mA9sL1kBc6dV8xN2pQ4rT","type":"bank","methods":["ach","wire"],"origin":"external","status":"ready","openTaskIds":[],"currency":"USD","label":"Operating account","details":{"routingNumber":"021000021","accountNumber":"123456789","accountType":"checking","bankName":"JPMorgan Chase Bank","accountHolderName":"Swipelux Inc.","bankAddress":"270 Park Avenue, New York, NY 10017, USA"},"fees":{"breakdown":{"developer":null}},"createdAt":"2026-06-25T12:07:00.000Z","updatedAt":"2026-06-25T12:07:00.000Z","archivedAt":null}}}}}}},"400":{"description":"Invalid request.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Resource not found.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"409":{"description":"Capability not ready, account conflict, idempotency conflict, or request in progress.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["capability_not_ready","conflict","idempotency_conflict","idempotency_request_in_progress"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"postV3CustomersByCustomerIdAccounts","tags":["accounts"],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":255},"example":"idem_20260626_0001","description":"Required for effectful v3 requests (POST, PATCH, PUT, DELETE). Reuse the same key with the same body to replay the cached response."},{"schema":{"type":"string"},"in":"path","name":"customerId","required":true}],"summary":"Create account","description":"Create one customer account. Use `origin: \"issued\"` for platform-issued wallet accounts and virtual bank accounts, or `origin: \"external\"` for customer-owned wallet and bank accounts. Issued virtual bank accounts require `settlement.accountId`, the issued customer wallet account that receives settled funds.","requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"title":"Issued wallet account","type":"object","required":["origin","type","currency","network"],"properties":{"origin":{"type":"string","enum":["issued"],"description":"Account origin. Closed enum — exhaustive; additions would be a breaking change."},"type":{"type":"string","enum":["wallet"]},"currency":{"type":"string","example":"USDC","description":"Currency for this wallet account."},"network":{"type":"string","example":"base","description":"Blockchain network for this wallet account. Open enum — values are added over time; clients must tolerate unknown values.","enum":["polygon","ethereum","base","arbitrum","optimism","bsc","avalanche"]},"label":{"type":"string","example":"Treasury wallet"}}},{"title":"External wallet account","type":"object","required":["origin","type","currency","network","details"],"properties":{"origin":{"type":"string","enum":["external"],"description":"Account origin. Closed enum — exhaustive; additions would be a breaking change."},"type":{"type":"string","enum":["wallet"]},"currency":{"type":"string","example":"USDC","description":"Currency for this wallet account."},"network":{"type":"string","example":"polygon","description":"Blockchain network for the external account. Open enum — values are added over time; clients must tolerate unknown values.","enum":["polygon","ethereum","base","arbitrum","optimism","bsc","avalanche"]},"details":{"type":"object","required":["address"],"properties":{"address":{"type":"string","example":"0x4997b0a68bebc1b0d80a93567ba7002be92b8b11"}}},"label":{"type":"string","example":"Customer Polygon wallet"}}},{"title":"Issued ACH account","type":"object","required":["origin","type","method","currency","settlement"],"properties":{"origin":{"type":"string","enum":["issued"],"description":"Account origin. Closed enum — exhaustive; additions would be a breaking change."},"type":{"type":"string","enum":["bank"]},"method":{"type":"string","enum":["ach"],"description":"Payment method. Open enum — values are added over time; clients must tolerate unknown values."},"country":{"type":"string","example":"US","description":"Optional ISO 3166-1 alpha-2 country code. Stored as account metadata; issued accounts are provisioned and routed by capability, not by this value. Defaults per method when omitted."},"currency":{"type":"string","example":"USD"},"settlement":{"type":"object","required":["accountId"],"properties":{"accountId":{"type":"string","example":"acc_3eG7xN2pQ4rT8mA1sL6dVc","description":"Issued customer wallet account that receives settled funds."}}},"label":{"type":"string","example":"USD payin account"}}},{"title":"Issued wire account","type":"object","required":["origin","type","method","currency","settlement"],"properties":{"origin":{"type":"string","enum":["issued"],"description":"Account origin. Closed enum — exhaustive; additions would be a breaking change."},"type":{"type":"string","enum":["bank"]},"method":{"type":"string","enum":["wire"],"description":"Payment method. Open enum — values are added over time; clients must tolerate unknown values."},"country":{"type":"string","example":"US","description":"Optional ISO 3166-1 alpha-2 country code. Stored as account metadata; issued accounts are provisioned and routed by capability, not by this value. Defaults per method when omitted."},"currency":{"type":"string","example":"USD"},"settlement":{"type":"object","required":["accountId"],"properties":{"accountId":{"type":"string","example":"acc_3eG7xN2pQ4rT8mA1sL6dVc","description":"Issued customer wallet account that receives settled funds."}}},"label":{"type":"string","example":"Wire payin account"}}},{"title":"Issued SEPA account","type":"object","required":["origin","type","method","currency","settlement"],"properties":{"origin":{"type":"string","enum":["issued"],"description":"Account origin. Closed enum — exhaustive; additions would be a breaking change."},"type":{"type":"string","enum":["bank"]},"method":{"type":"string","enum":["sepa"],"description":"Payment method. Open enum — values are added over time; clients must tolerate unknown values."},"country":{"type":"string","example":"DE","description":"Optional ISO 3166-1 alpha-2 country code. Stored as account metadata; issued accounts are provisioned and routed by capability, not by this value. Defaults per method when omitted."},"currency":{"type":"string","example":"EUR"},"settlement":{"type":"object","required":["accountId"],"properties":{"accountId":{"type":"string","example":"acc_3eG7xN2pQ4rT8mA1sL6dVc","description":"Issued customer wallet account that receives settled funds."}}}}},{"title":"Issued SWIFT account","type":"object","required":["origin","type","method","currency","settlement"],"properties":{"origin":{"type":"string","enum":["issued"],"description":"Account origin. Closed enum — exhaustive; additions would be a breaking change."},"type":{"type":"string","enum":["bank"]},"method":{"type":"string","enum":["swift"],"description":"Payment method. Open enum — values are added over time; clients must tolerate unknown values."},"country":{"type":"string","example":"US","description":"Optional ISO 3166-1 alpha-2 country code. Stored as account metadata; issued accounts are provisioned and routed by capability, not by this value. Defaults per method when omitted."},"currency":{"type":"string","example":"USD"},"settlement":{"type":"object","required":["accountId"],"properties":{"accountId":{"type":"string","example":"acc_3eG7xN2pQ4rT8mA1sL6dVc","description":"Issued customer wallet account that receives settled funds."}}},"label":{"type":"string","example":"SWIFT payin account"}}},{"title":"Issued UAEFTS account","type":"object","required":["origin","type","method","currency","settlement"],"properties":{"origin":{"type":"string","enum":["issued"],"description":"Account origin. Closed enum — exhaustive; additions would be a breaking change."},"type":{"type":"string","enum":["bank"]},"method":{"type":"string","enum":["uaefts"],"description":"Payment method. Open enum — values are added over time; clients must tolerate unknown values."},"country":{"type":"string","example":"AE","description":"Optional ISO 3166-1 alpha-2 country code. Stored as account metadata; issued accounts are provisioned and routed by capability, not by this value. Defaults per method when omitted."},"currency":{"type":"string","example":"AED"},"settlement":{"type":"object","required":["accountId"],"properties":{"accountId":{"type":"string","example":"acc_3eG7xN2pQ4rT8mA1sL6dVc","description":"Issued customer wallet account that receives settled funds."}}}}},{"title":"Issued Faster Payments account","type":"object","required":["origin","type","method","currency","settlement"],"properties":{"origin":{"type":"string","enum":["issued"],"description":"Account origin. Closed enum — exhaustive; additions would be a breaking change."},"type":{"type":"string","enum":["bank"]},"method":{"type":"string","enum":["faster_payments"],"description":"Payment method. Open enum — values are added over time; clients must tolerate unknown values."},"country":{"type":"string","example":"GB","description":"Optional ISO 3166-1 alpha-2 country code. Stored as account metadata; issued accounts are provisioned and routed by capability, not by this value. Defaults per method when omitted."},"currency":{"type":"string","example":"GBP"},"settlement":{"type":"object","required":["accountId"],"properties":{"accountId":{"type":"string","example":"acc_3eG7xN2pQ4rT8mA1sL6dVc","description":"Issued customer wallet account that receives settled funds."}}}}},{"title":"Issued SEPA Instant account","type":"object","required":["origin","type","method","currency","settlement"],"properties":{"origin":{"type":"string","enum":["issued"],"description":"Account origin. Closed enum — exhaustive; additions would be a breaking change."},"type":{"type":"string","enum":["bank"]},"method":{"type":"string","enum":["sepa_instant"],"description":"Payment method. Open enum — values are added over time; clients must tolerate unknown values."},"country":{"type":"string","example":"DE","description":"Optional ISO 3166-1 alpha-2 country code. Stored as account metadata; issued accounts are provisioned and routed by capability, not by this value. Defaults per method when omitted."},"currency":{"type":"string","example":"EUR"},"settlement":{"type":"object","required":["accountId"],"properties":{"accountId":{"type":"string","example":"acc_3eG7xN2pQ4rT8mA1sL6dVc","description":"Issued customer wallet account that receives settled funds."}}}}},{"title":"Issued IPP account","type":"object","required":["origin","type","method","currency","settlement"],"properties":{"origin":{"type":"string","enum":["issued"],"description":"Account origin. Closed enum — exhaustive; additions would be a breaking change."},"type":{"type":"string","enum":["bank"]},"method":{"type":"string","enum":["ipp"],"description":"Payment method. Open enum — values are added over time; clients must tolerate unknown values."},"country":{"type":"string","example":"AE","description":"Optional ISO 3166-1 alpha-2 country code. Stored as account metadata; issued accounts are provisioned and routed by capability, not by this value. Defaults per method when omitted."},"currency":{"type":"string","example":"AED"},"settlement":{"type":"object","required":["accountId"],"properties":{"accountId":{"type":"string","example":"acc_3eG7xN2pQ4rT8mA1sL6dVc","description":"Issued customer wallet account that receives settled funds."}}}}},{"title":"External ACH/wire account","type":"object","required":["origin","type","methods","country","currency","details"],"properties":{"origin":{"type":"string","enum":["external"],"description":"Account origin. Closed enum — exhaustive; additions would be a breaking change."},"type":{"type":"string","enum":["bank"]},"methods":{"type":"array","minItems":1,"uniqueItems":true,"items":{"type":"string","enum":["ach","wire"]},"example":["ach","wire"],"description":"Payment methods supported by this external bank account. Values must be unique and share one details shape: any subset of ach/wire uses US routing details; sepa uses IBAN details; swift uses SWIFT details."},"country":{"type":"string","example":"US"},"currency":{"type":"string","example":"USD"},"details":{"type":"object","required":["routingNumber","accountNumber","bankName","accountHolderName"],"properties":{"routingNumber":{"type":"string","example":"021000021"},"accountNumber":{"type":"string","example":"123456789"},"accountType":{"type":"string","enum":["checking","savings"],"default":"checking"},"bankName":{"type":"string","example":"JPMorgan Chase Bank"},"accountHolderName":{"type":"string","example":"Swipelux Inc."},"bankAddress":{"type":"string","example":"270 Park Avenue, New York, NY 10017, USA"}}},"label":{"type":"string","example":"Operating account"}}},{"title":"External SEPA account","type":"object","required":["origin","type","methods","country","currency","details"],"properties":{"origin":{"type":"string","enum":["external"],"description":"Account origin. Closed enum — exhaustive; additions would be a breaking change."},"type":{"type":"string","enum":["bank"]},"methods":{"type":"array","minItems":1,"uniqueItems":true,"items":{"type":"string","enum":["sepa"]},"example":["sepa"],"description":"Payment methods supported by this external bank account. Values must be unique and share one details shape: any subset of ach/wire uses US routing details; sepa uses IBAN details; swift uses SWIFT details."},"country":{"type":"string","example":"DE"},"currency":{"type":"string","example":"EUR"},"details":{"type":"object","required":["iban","accountHolderName"],"properties":{"iban":{"type":"string","example":"DE89370400440532013000"},"bic":{"type":"string","example":"COBADEFFXXX"},"bankName":{"type":"string","example":"Commerzbank"},"bankAddress":{"type":"string","example":"Frankfurt, Germany"},"accountHolderName":{"type":"string","example":"Swipelux GmbH"}}}}},{"title":"External SWIFT account","type":"object","required":["origin","type","methods","country","currency","details"],"properties":{"origin":{"type":"string","enum":["external"],"description":"Account origin. Closed enum — exhaustive; additions would be a breaking change."},"type":{"type":"string","enum":["bank"]},"methods":{"type":"array","minItems":1,"uniqueItems":true,"items":{"type":"string","enum":["swift"]},"example":["swift"],"description":"Payment methods supported by this external bank account. Values must be unique and share one details shape: any subset of ach/wire uses US routing details; sepa uses IBAN details; swift uses SWIFT details."},"country":{"type":"string","example":"US"},"currency":{"type":"string","example":"USD"},"details":{"type":"object","required":["swiftCode","accountNumber","bankName","accountHolderName"],"properties":{"swiftCode":{"type":"string","example":"CHASUS33XXX"},"accountNumber":{"type":"string","example":"707567692"},"bankName":{"type":"string","example":"JPMorgan Chase Bank"},"accountHolderName":{"type":"string","example":"Swipelux Inc."}}}}}]},"examples":{"issuedWallet":{"summary":"Issue wallet account","value":{"origin":"issued","type":"wallet","currency":"USDC","network":"base","label":"Treasury wallet"}},"issuedAch":{"summary":"Issue ACH account","value":{"origin":"issued","type":"bank","method":"ach","country":"US","currency":"USD","settlement":{"accountId":"acc_3eG7xN2pQ4rT8mA1sL6dVc"},"label":"USD payin account"}},"externalWallet":{"summary":"Add external Polygon wallet account","value":{"origin":"external","type":"wallet","currency":"USDC","network":"polygon","details":{"address":"0x4997b0a68bebc1b0d80a93567ba7002be92b8b11"},"label":"Customer Polygon wallet"}},"externalAch":{"summary":"Add external ACH/wire account","value":{"origin":"external","type":"bank","methods":["ach","wire"],"country":"US","currency":"USD","details":{"routingNumber":"021000021","accountNumber":"123456789","accountType":"checking","bankName":"JPMorgan Chase Bank","accountHolderName":"Swipelux Inc."}}}}}}}},"get":{"responses":{"200":{"description":"Accounts retrieved","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"enum":["wallet","bank"]},"method":{"enum":["ach","wire","sepa","swift","uaefts","faster_payments","sepa_instant","ipp"],"description":"Payment method. Open enum — values are added over time; clients must tolerate unknown values."},"methods":{"type":"array","items":{"enum":["ach","wire","sepa","swift"]},"description":"Payment methods supported by an external bank account. Present on external bank accounts; issued bank accounts use single `method`."},"institutionId":{"type":"string","description":"Institution id recorded at issuance. Omitted when no institution was recorded."},"capabilityId":{"type":"string","description":"Capability id recorded at issuance. Omitted when no capability was recorded."},"accountType":{"enum":["pooled","named"],"description":"Account type recorded at issuance. Omitted when no account type was recorded."},"network":{"enum":["polygon","ethereum","base","arbitrum","optimism","bsc","avalanche"],"description":"`details.network` is the canonical network field for wallet accounts. This top-level `network` field is a compatibility duplicate; its removal is deferred. Open enum — values are added over time; clients must tolerate unknown values."},"origin":{"anyOf":[{"enum":["issued"]},{"enum":["external"]}],"description":"Account origin. Closed enum — exhaustive; additions would be a breaking change."},"status":{"enum":["provisioning","in_review","ready","action_required","suspended","rejected","archived"],"description":"Account status. Closed enum — exhaustive; additions would be a breaking change."},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"]},"openTaskIds":{"type":"array","items":{"type":"string"},"description":"Ids of account-scoped tasks with status `action_required` or `in_review`, ordered by creation time and id. Empty when nothing is open."},"currency":{"type":"string"},"label":{"type":"string"},"isDefault":{"type":"boolean"},"details":{"anyOf":[{"anyOf":[{"type":"object","properties":{"network":{"enum":["polygon","ethereum","base","arbitrum","optimism","bsc","avalanche"],"description":"`details.network` is the canonical network field for wallet accounts. The top-level `network` field is a compatibility duplicate; its removal is deferred. Open enum — values are added over time; clients must tolerate unknown values."},"address":{"type":"string"}},"required":["network","address"]},{"type":"object","properties":{"routingNumber":{"type":"string"},"accountNumber":{"type":"string"},"accountType":{"type":"string"},"bankName":{"type":"string"},"accountHolderName":{"type":"string"},"bankAddress":{"type":"string"},"reference":{"type":"string"},"referenceRequired":{"type":"boolean"}},"required":["routingNumber","accountNumber","accountType","bankName","accountHolderName"]},{"type":"object","properties":{"sortCode":{"type":"string"},"accountNumber":{"type":"string"},"bankName":{"type":"string"},"accountHolderName":{"type":"string"},"reference":{"type":"string"},"referenceRequired":{"type":"boolean"}},"required":["sortCode","accountNumber","bankName","accountHolderName"]},{"type":"object","properties":{"iban":{"type":"string"},"bic":{"type":"string"},"bankName":{"type":"string"},"bankAddress":{"type":"string"},"accountHolderName":{"type":"string"},"reference":{"type":"string"},"referenceRequired":{"type":"boolean"}},"required":["iban","accountHolderName"]},{"type":"object","properties":{"swiftCode":{"type":"string"},"accountNumber":{"type":"string"},"bankName":{"type":"string"},"accountHolderName":{"type":"string"},"bankAddress":{"type":"string"},"routingNumber":{"type":"string"},"intermediaryBankSwift":{"type":"string"},"intermediaryBankName":{"type":"string"},"intermediaryBankAddress":{"type":"string"},"reference":{"type":"string"},"referenceRequired":{"type":"boolean"}},"required":["swiftCode","accountNumber","bankName","accountHolderName"]}],"nullable":true}]},"routing":{"type":"object","properties":{"version":{"type":"number"},"validFrom":{"type":"string"},"validUntil":{"nullable":true}},"required":["version","validFrom","validUntil"]},"settlement":{"type":"object","properties":{"accountId":{"type":"string"}},"required":["accountId"]},"fees":{"type":"object","properties":{"breakdown":{"type":"object","properties":{"developer":{"anyOf":[{"type":"object","properties":{"fixed":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,2})?$","description":"Fixed developer fee in the account currency, represented as a major-unit decimal string with at most 2 decimal places."},"bips":{"type":"integer","minimum":0,"maximum":9999,"description":"Developer fee in basis points. `50` means `0.50%`; the value must be below 10000 (100%)."}},"required":["fixed","bips"],"nullable":true}],"description":"Configured developer fee, or null when none is set."}},"required":["developer"],"description":"Account fee rules grouped by beneficiary."}},"required":["breakdown"],"description":"Pay-in fee configuration for this account. Fixed amounts use the account currency and major-unit scale."},"balances":{"type":"array","items":{"type":"object","properties":{"currency":{"type":"string","description":"Balance currency."},"available":{"type":"string","description":"Available balance from the configured balance source as a decimal string in `currency`."},"pending":{"type":"string","description":"Currently returned as `\"0\"`."}},"required":["currency","available","pending"]},"description":"Balances returned on account detail. External wallets return an empty array; `pending` is currently `\"0\"`."},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]}},"required":["id","type","origin","status","openTaskIds","currency","details","fees","createdAt","updatedAt","archivedAt"]}},"nextCursor":{"anyOf":[{"type":"string","nullable":true}]},"hasMore":{"type":"boolean"}},"required":["data","nextCursor","hasMore"]},"examples":{"list":{"summary":"Customer accounts","description":"The customer account collection contains issued and external wallet and bank accounts.","value":{"data":[{"id":"acc_3eG7xN2pQ4rT8mA1sL6dVc","type":"wallet","network":"polygon","origin":"issued","status":"ready","openTaskIds":[],"currency":"USDC","label":"Treasury wallet","isDefault":true,"details":{"network":"polygon","address":"0x1887b0a68bebc1b0d80a93567ba7002be92b8bd7"},"fees":{"breakdown":{"developer":null}},"createdAt":"2026-06-25T12:05:00.000Z","updatedAt":"2026-06-25T12:05:00.000Z","archivedAt":null},{"id":"acc_7mA9sL1kBc6dV8xN2pQ4rT","type":"bank","methods":["ach","wire"],"origin":"external","status":"ready","openTaskIds":[],"currency":"USD","label":"Operating account","details":{"routingNumber":"021000021","accountNumber":"123456789","accountType":"checking","bankName":"JPMorgan Chase Bank","accountHolderName":"Swipelux Inc.","bankAddress":"270 Park Avenue, New York, NY 10017, USA"},"fees":{"breakdown":{"developer":null}},"createdAt":"2026-06-25T12:07:00.000Z","updatedAt":"2026-06-25T12:07:00.000Z","archivedAt":null}],"nextCursor":null,"hasMore":false}}}}}},"400":{"description":"Invalid request.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Customer not found","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"getV3CustomersByCustomerIdAccounts","tags":["accounts"],"parameters":[{"name":"cursor","in":"query","required":false,"schema":{"type":"string"},"description":"Opaque cursor returned as `nextCursor` from the previous page."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25},"description":"Maximum number of records to return. Defaults to 25."},{"name":"updatedAfter","in":"query","required":false,"schema":{"type":"string","format":"date-time"},"description":"Return only records updated at or after this RFC 3339 timestamp. Use it to recover from missed webhooks by replaying a window of changes."},{"name":"type","in":"query","required":false,"schema":{"type":"string","enum":["wallet","bank"]},"description":"Filter accounts by public account type."},{"name":"method","in":"query","required":false,"schema":{"type":"string"},"description":"Filter bank accounts by payment method. Open enum — values are added over time; clients must tolerate unknown values."},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["provisioning","in_review","ready","action_required","suspended","rejected","archived"]},"description":"Filter accounts by public status. Closed enum — exhaustive; additions would be a breaking change."},{"name":"origin","in":"query","required":false,"schema":{"type":"string","enum":["issued","external"]},"description":"Filter accounts by origin. Closed enum — exhaustive; additions would be a breaking change."},{"schema":{"type":"string"},"in":"path","name":"customerId","required":true}],"summary":"List accounts","description":"Get issued and external customer accounts. The collection includes wallet accounts and bank accounts with typed details."}},"/v3/customers/{customerId}/accounts/{accountId}":{"get":{"responses":{"200":{"description":"Account retrieved","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"type":{"enum":["wallet","bank"]},"method":{"enum":["ach","wire","sepa","swift","uaefts","faster_payments","sepa_instant","ipp"],"description":"Payment method. Open enum — values are added over time; clients must tolerate unknown values."},"methods":{"type":"array","items":{"enum":["ach","wire","sepa","swift"]},"description":"Payment methods supported by an external bank account. Present on external bank accounts; issued bank accounts use single `method`."},"institutionId":{"type":"string","description":"Institution id recorded at issuance. Omitted when no institution was recorded."},"capabilityId":{"type":"string","description":"Capability id recorded at issuance. Omitted when no capability was recorded."},"accountType":{"enum":["pooled","named"],"description":"Account type recorded at issuance. Omitted when no account type was recorded."},"network":{"enum":["polygon","ethereum","base","arbitrum","optimism","bsc","avalanche"],"description":"`details.network` is the canonical network field for wallet accounts. This top-level `network` field is a compatibility duplicate; its removal is deferred. Open enum — values are added over time; clients must tolerate unknown values."},"origin":{"anyOf":[{"enum":["issued"]},{"enum":["external"]}],"description":"Account origin. Closed enum — exhaustive; additions would be a breaking change."},"status":{"enum":["provisioning","in_review","ready","action_required","suspended","rejected","archived"],"description":"Account status. Closed enum — exhaustive; additions would be a breaking change."},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"]},"openTaskIds":{"type":"array","items":{"type":"string"},"description":"Ids of account-scoped tasks with status `action_required` or `in_review`, ordered by creation time and id. Empty when nothing is open."},"currency":{"type":"string"},"label":{"type":"string"},"isDefault":{"type":"boolean"},"details":{"anyOf":[{"anyOf":[{"type":"object","properties":{"network":{"enum":["polygon","ethereum","base","arbitrum","optimism","bsc","avalanche"],"description":"`details.network` is the canonical network field for wallet accounts. The top-level `network` field is a compatibility duplicate; its removal is deferred. Open enum — values are added over time; clients must tolerate unknown values."},"address":{"type":"string"}},"required":["network","address"]},{"type":"object","properties":{"routingNumber":{"type":"string"},"accountNumber":{"type":"string"},"accountType":{"type":"string"},"bankName":{"type":"string"},"accountHolderName":{"type":"string"},"bankAddress":{"type":"string"},"reference":{"type":"string"},"referenceRequired":{"type":"boolean"}},"required":["routingNumber","accountNumber","accountType","bankName","accountHolderName"]},{"type":"object","properties":{"sortCode":{"type":"string"},"accountNumber":{"type":"string"},"bankName":{"type":"string"},"accountHolderName":{"type":"string"},"reference":{"type":"string"},"referenceRequired":{"type":"boolean"}},"required":["sortCode","accountNumber","bankName","accountHolderName"]},{"type":"object","properties":{"iban":{"type":"string"},"bic":{"type":"string"},"bankName":{"type":"string"},"bankAddress":{"type":"string"},"accountHolderName":{"type":"string"},"reference":{"type":"string"},"referenceRequired":{"type":"boolean"}},"required":["iban","accountHolderName"]},{"type":"object","properties":{"swiftCode":{"type":"string"},"accountNumber":{"type":"string"},"bankName":{"type":"string"},"accountHolderName":{"type":"string"},"bankAddress":{"type":"string"},"routingNumber":{"type":"string"},"intermediaryBankSwift":{"type":"string"},"intermediaryBankName":{"type":"string"},"intermediaryBankAddress":{"type":"string"},"reference":{"type":"string"},"referenceRequired":{"type":"boolean"}},"required":["swiftCode","accountNumber","bankName","accountHolderName"]}],"nullable":true}]},"routing":{"type":"object","properties":{"version":{"type":"number"},"validFrom":{"type":"string"},"validUntil":{"nullable":true}},"required":["version","validFrom","validUntil"]},"settlement":{"type":"object","properties":{"accountId":{"type":"string"}},"required":["accountId"]},"fees":{"type":"object","properties":{"breakdown":{"type":"object","properties":{"developer":{"anyOf":[{"type":"object","properties":{"fixed":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,2})?$","description":"Fixed developer fee in the account currency, represented as a major-unit decimal string with at most 2 decimal places."},"bips":{"type":"integer","minimum":0,"maximum":9999,"description":"Developer fee in basis points. `50` means `0.50%`; the value must be below 10000 (100%)."}},"required":["fixed","bips"],"nullable":true}],"description":"Configured developer fee, or null when none is set."}},"required":["developer"],"description":"Account fee rules grouped by beneficiary."}},"required":["breakdown"],"description":"Pay-in fee configuration for this account. Fixed amounts use the account currency and major-unit scale."},"balances":{"type":"array","items":{"type":"object","properties":{"currency":{"type":"string","description":"Balance currency."},"available":{"type":"string","description":"Available balance from the configured balance source as a decimal string in `currency`."},"pending":{"type":"string","description":"Currently returned as `\"0\"`."}},"required":["currency","available","pending"]},"description":"Balances returned on account detail. External wallets return an empty array; `pending` is currently `\"0\"`."},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]}},"required":["id","type","origin","status","openTaskIds","currency","details","fees","createdAt","updatedAt","archivedAt"]}},"required":["data"]},"examples":{"detail":{"summary":"Polygon wallet account detail","value":{"data":{"id":"acc_3eG7xN2pQ4rT8mA1sL6dVc","type":"wallet","network":"polygon","origin":"issued","status":"ready","openTaskIds":[],"currency":"USDC","label":"Treasury wallet","isDefault":true,"details":{"network":"polygon","address":"0x1887b0a68bebc1b0d80a93567ba7002be92b8bd7"},"fees":{"breakdown":{"developer":null}},"createdAt":"2026-06-25T12:05:00.000Z","updatedAt":"2026-06-25T12:05:00.000Z","archivedAt":null,"balances":[{"currency":"USDC","available":"50.00","pending":"0"}]}}}}}}},"400":{"description":"Invalid request.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Account not found","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"getV3CustomersByCustomerIdAccountsByAccountId","tags":["accounts"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"customerId","required":true},{"schema":{"type":"string"},"in":"path","name":"accountId","required":true}],"summary":"Get account","description":"Returns one customer account. Issued wallet account details include a balance collection; external wallet balance collections are empty; bank accounts include typed details when available."},"patch":{"responses":{"200":{"description":"Account updated","headers":{"Idempotency-Replayed":{"description":"Present with value `true` when an idempotent request is replayed.","schema":{"type":"string","enum":["true"]}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"type":{"enum":["wallet","bank"]},"method":{"enum":["ach","wire","sepa","swift","uaefts","faster_payments","sepa_instant","ipp"],"description":"Payment method. Open enum — values are added over time; clients must tolerate unknown values."},"methods":{"type":"array","items":{"enum":["ach","wire","sepa","swift"]},"description":"Payment methods supported by an external bank account. Present on external bank accounts; issued bank accounts use single `method`."},"institutionId":{"type":"string","description":"Institution id recorded at issuance. Omitted when no institution was recorded."},"capabilityId":{"type":"string","description":"Capability id recorded at issuance. Omitted when no capability was recorded."},"accountType":{"enum":["pooled","named"],"description":"Account type recorded at issuance. Omitted when no account type was recorded."},"network":{"enum":["polygon","ethereum","base","arbitrum","optimism","bsc","avalanche"],"description":"`details.network` is the canonical network field for wallet accounts. This top-level `network` field is a compatibility duplicate; its removal is deferred. Open enum — values are added over time; clients must tolerate unknown values."},"origin":{"anyOf":[{"enum":["issued"]},{"enum":["external"]}],"description":"Account origin. Closed enum — exhaustive; additions would be a breaking change."},"status":{"enum":["provisioning","in_review","ready","action_required","suspended","rejected","archived"],"description":"Account status. Closed enum — exhaustive; additions would be a breaking change."},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"]},"openTaskIds":{"type":"array","items":{"type":"string"},"description":"Ids of account-scoped tasks with status `action_required` or `in_review`, ordered by creation time and id. Empty when nothing is open."},"currency":{"type":"string"},"label":{"type":"string"},"isDefault":{"type":"boolean"},"details":{"anyOf":[{"anyOf":[{"type":"object","properties":{"network":{"enum":["polygon","ethereum","base","arbitrum","optimism","bsc","avalanche"],"description":"`details.network` is the canonical network field for wallet accounts. The top-level `network` field is a compatibility duplicate; its removal is deferred. Open enum — values are added over time; clients must tolerate unknown values."},"address":{"type":"string"}},"required":["network","address"]},{"type":"object","properties":{"routingNumber":{"type":"string"},"accountNumber":{"type":"string"},"accountType":{"type":"string"},"bankName":{"type":"string"},"accountHolderName":{"type":"string"},"bankAddress":{"type":"string"},"reference":{"type":"string"},"referenceRequired":{"type":"boolean"}},"required":["routingNumber","accountNumber","accountType","bankName","accountHolderName"]},{"type":"object","properties":{"sortCode":{"type":"string"},"accountNumber":{"type":"string"},"bankName":{"type":"string"},"accountHolderName":{"type":"string"},"reference":{"type":"string"},"referenceRequired":{"type":"boolean"}},"required":["sortCode","accountNumber","bankName","accountHolderName"]},{"type":"object","properties":{"iban":{"type":"string"},"bic":{"type":"string"},"bankName":{"type":"string"},"bankAddress":{"type":"string"},"accountHolderName":{"type":"string"},"reference":{"type":"string"},"referenceRequired":{"type":"boolean"}},"required":["iban","accountHolderName"]},{"type":"object","properties":{"swiftCode":{"type":"string"},"accountNumber":{"type":"string"},"bankName":{"type":"string"},"accountHolderName":{"type":"string"},"bankAddress":{"type":"string"},"routingNumber":{"type":"string"},"intermediaryBankSwift":{"type":"string"},"intermediaryBankName":{"type":"string"},"intermediaryBankAddress":{"type":"string"},"reference":{"type":"string"},"referenceRequired":{"type":"boolean"}},"required":["swiftCode","accountNumber","bankName","accountHolderName"]}],"nullable":true}]},"routing":{"type":"object","properties":{"version":{"type":"number"},"validFrom":{"type":"string"},"validUntil":{"nullable":true}},"required":["version","validFrom","validUntil"]},"settlement":{"type":"object","properties":{"accountId":{"type":"string"}},"required":["accountId"]},"fees":{"type":"object","properties":{"breakdown":{"type":"object","properties":{"developer":{"anyOf":[{"type":"object","properties":{"fixed":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,2})?$","description":"Fixed developer fee in the account currency, represented as a major-unit decimal string with at most 2 decimal places."},"bips":{"type":"integer","minimum":0,"maximum":9999,"description":"Developer fee in basis points. `50` means `0.50%`; the value must be below 10000 (100%)."}},"required":["fixed","bips"],"nullable":true}],"description":"Configured developer fee, or null when none is set."}},"required":["developer"],"description":"Account fee rules grouped by beneficiary."}},"required":["breakdown"],"description":"Pay-in fee configuration for this account. Fixed amounts use the account currency and major-unit scale."},"balances":{"type":"array","items":{"type":"object","properties":{"currency":{"type":"string","description":"Balance currency."},"available":{"type":"string","description":"Available balance from the configured balance source as a decimal string in `currency`."},"pending":{"type":"string","description":"Currently returned as `\"0\"`."}},"required":["currency","available","pending"]},"description":"Balances returned on account detail. External wallets return an empty array; `pending` is currently `\"0\"`."},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]}},"required":["id","type","origin","status","openTaskIds","currency","details","fees","createdAt","updatedAt","archivedAt"]}},"required":["data"]},"examples":{"updated":{"summary":"Updated account","value":{"data":{"id":"acc_3eG7xN2pQ4rT8mA1sL6dVc","type":"wallet","network":"polygon","origin":"issued","status":"ready","openTaskIds":[],"currency":"USDC","label":"Operating wallet","isDefault":true,"details":{"network":"polygon","address":"0x1887b0a68bebc1b0d80a93567ba7002be92b8bd7"},"fees":{"breakdown":{"developer":null}},"createdAt":"2026-06-25T12:05:00.000Z","updatedAt":"2026-06-26T12:04:00.000Z","archivedAt":null}}}}}}},"400":{"description":"Invalid request.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Account not found","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"409":{"description":"Account is archived, idempotency conflict, or request in progress.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["conflict","idempotency_conflict","idempotency_request_in_progress"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"patchV3CustomersByCustomerIdAccountsByAccountId","tags":["accounts"],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":255},"example":"idem_20260626_0001","description":"Required for effectful v3 requests (POST, PATCH, PUT, DELETE). Reuse the same key with the same body to replay the cached response."},{"schema":{"type":"string"},"in":"path","name":"customerId","required":true},{"schema":{"type":"string"},"in":"path","name":"accountId","required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"label":{"type":"string","nullable":true,"description":"Account label. Send null to clear it."},"settlement":{"type":"object","required":["accountId"],"properties":{"accountId":{"type":"string","description":"Issued wallet account id that receives settled funds."}}},"isDefault":{"type":"boolean","enum":[true],"description":"Set this issued wallet as the default for its customer and currency."}}},"examples":{"label":{"summary":"Rename account","value":{"label":"Operating wallet"}},"settlement":{"summary":"Retarget issued bank settlement","value":{"settlement":{"accountId":"acc_3eG7xN2pQ4rT8mA1sL6dVc"}}},"defaultWallet":{"summary":"Set default wallet","value":{"isDefault":true}}}}}},"summary":"Update account","description":"Updates account metadata. All accounts accept `label`; issued wallets also accept `isDefault: true`; issued bank accounts also accept `settlement.accountId`."},"delete":{"responses":{"200":{"description":"Account archived","headers":{"Idempotency-Replayed":{"description":"Present with value `true` when an idempotent request is replayed.","schema":{"type":"string","enum":["true"]}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"type":{"enum":["wallet","bank"]},"method":{"enum":["ach","wire","sepa","swift","uaefts","faster_payments","sepa_instant","ipp"],"description":"Payment method. Open enum — values are added over time; clients must tolerate unknown values."},"methods":{"type":"array","items":{"enum":["ach","wire","sepa","swift"]},"description":"Payment methods supported by an external bank account. Present on external bank accounts; issued bank accounts use single `method`."},"institutionId":{"type":"string","description":"Institution id recorded at issuance. Omitted when no institution was recorded."},"capabilityId":{"type":"string","description":"Capability id recorded at issuance. Omitted when no capability was recorded."},"accountType":{"enum":["pooled","named"],"description":"Account type recorded at issuance. Omitted when no account type was recorded."},"network":{"enum":["polygon","ethereum","base","arbitrum","optimism","bsc","avalanche"],"description":"`details.network` is the canonical network field for wallet accounts. This top-level `network` field is a compatibility duplicate; its removal is deferred. Open enum — values are added over time; clients must tolerate unknown values."},"origin":{"anyOf":[{"enum":["issued"]},{"enum":["external"]}],"description":"Account origin. Closed enum — exhaustive; additions would be a breaking change."},"status":{"enum":["provisioning","in_review","ready","action_required","suspended","rejected","archived"],"description":"Account status. Closed enum — exhaustive; additions would be a breaking change."},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"]},"openTaskIds":{"type":"array","items":{"type":"string"},"description":"Ids of account-scoped tasks with status `action_required` or `in_review`, ordered by creation time and id. Empty when nothing is open."},"currency":{"type":"string"},"label":{"type":"string"},"isDefault":{"type":"boolean"},"details":{"anyOf":[{"anyOf":[{"type":"object","properties":{"network":{"enum":["polygon","ethereum","base","arbitrum","optimism","bsc","avalanche"],"description":"`details.network` is the canonical network field for wallet accounts. The top-level `network` field is a compatibility duplicate; its removal is deferred. Open enum — values are added over time; clients must tolerate unknown values."},"address":{"type":"string"}},"required":["network","address"]},{"type":"object","properties":{"routingNumber":{"type":"string"},"accountNumber":{"type":"string"},"accountType":{"type":"string"},"bankName":{"type":"string"},"accountHolderName":{"type":"string"},"bankAddress":{"type":"string"},"reference":{"type":"string"},"referenceRequired":{"type":"boolean"}},"required":["routingNumber","accountNumber","accountType","bankName","accountHolderName"]},{"type":"object","properties":{"sortCode":{"type":"string"},"accountNumber":{"type":"string"},"bankName":{"type":"string"},"accountHolderName":{"type":"string"},"reference":{"type":"string"},"referenceRequired":{"type":"boolean"}},"required":["sortCode","accountNumber","bankName","accountHolderName"]},{"type":"object","properties":{"iban":{"type":"string"},"bic":{"type":"string"},"bankName":{"type":"string"},"bankAddress":{"type":"string"},"accountHolderName":{"type":"string"},"reference":{"type":"string"},"referenceRequired":{"type":"boolean"}},"required":["iban","accountHolderName"]},{"type":"object","properties":{"swiftCode":{"type":"string"},"accountNumber":{"type":"string"},"bankName":{"type":"string"},"accountHolderName":{"type":"string"},"bankAddress":{"type":"string"},"routingNumber":{"type":"string"},"intermediaryBankSwift":{"type":"string"},"intermediaryBankName":{"type":"string"},"intermediaryBankAddress":{"type":"string"},"reference":{"type":"string"},"referenceRequired":{"type":"boolean"}},"required":["swiftCode","accountNumber","bankName","accountHolderName"]}],"nullable":true}]},"routing":{"type":"object","properties":{"version":{"type":"number"},"validFrom":{"type":"string"},"validUntil":{"nullable":true}},"required":["version","validFrom","validUntil"]},"settlement":{"type":"object","properties":{"accountId":{"type":"string"}},"required":["accountId"]},"fees":{"type":"object","properties":{"breakdown":{"type":"object","properties":{"developer":{"anyOf":[{"type":"object","properties":{"fixed":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,2})?$","description":"Fixed developer fee in the account currency, represented as a major-unit decimal string with at most 2 decimal places."},"bips":{"type":"integer","minimum":0,"maximum":9999,"description":"Developer fee in basis points. `50` means `0.50%`; the value must be below 10000 (100%)."}},"required":["fixed","bips"],"nullable":true}],"description":"Configured developer fee, or null when none is set."}},"required":["developer"],"description":"Account fee rules grouped by beneficiary."}},"required":["breakdown"],"description":"Pay-in fee configuration for this account. Fixed amounts use the account currency and major-unit scale."},"balances":{"type":"array","items":{"type":"object","properties":{"currency":{"type":"string","description":"Balance currency."},"available":{"type":"string","description":"Available balance from the configured balance source as a decimal string in `currency`."},"pending":{"type":"string","description":"Currently returned as `\"0\"`."}},"required":["currency","available","pending"]},"description":"Balances returned on account detail. External wallets return an empty array; `pending` is currently `\"0\"`."},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]}},"required":["id","type","origin","status","openTaskIds","currency","details","fees","createdAt","updatedAt","archivedAt"]}},"required":["data"]},"examples":{"deleted":{"summary":"Archived account","value":{"data":{"id":"acc_3eG7xN2pQ4rT8mA1sL6dVc","type":"wallet","network":"polygon","origin":"issued","status":"archived","openTaskIds":[],"currency":"USDC","label":"Treasury wallet","isDefault":false,"details":{"network":"polygon","address":"0x1887b0a68bebc1b0d80a93567ba7002be92b8bd7"},"fees":{"breakdown":{"developer":null}},"createdAt":"2026-06-25T12:05:00.000Z","updatedAt":"2026-06-25T12:05:00.000Z","archivedAt":"2026-06-26T12:05:00.000Z"}}}}}}},"400":{"description":"Invalid request.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Account not found","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"409":{"description":"In-flight transfer, archived-account, idempotency conflict, or request-in-progress conflict.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["account_has_active_transfers","conflict","idempotency_conflict","idempotency_request_in_progress"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"deleteV3CustomersByCustomerIdAccountsByAccountId","tags":["accounts"],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":255},"example":"idem_20260626_0001","description":"Required for effectful v3 requests (POST, PATCH, PUT, DELETE). Reuse the same key with the same body to replay the cached response."},{"schema":{"type":"string"},"in":"path","name":"customerId","required":true},{"schema":{"type":"string"},"in":"path","name":"accountId","required":true}],"summary":"Archive account","description":"Archive a customer account. Archived accounts remain available from the list endpoint when filtering with `status=archived`. Accounts referenced by in-flight transfers cannot be archived until those transfers reach a terminal state."}},"/v3/customers/{customerId}/accounts/{accountId}/fees":{"get":{"responses":{"200":{"description":"Account fees retrieved","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"accountId":{"type":"string"},"breakdown":{"type":"object","properties":{"developer":{"anyOf":[{"type":"object","properties":{"fixed":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,2})?$","description":"Fixed developer fee in the account currency, represented as a major-unit decimal string with at most 2 decimal places."},"bips":{"type":"integer","minimum":0,"maximum":9999,"description":"Developer fee in basis points. `50` means `0.50%`; the value must be below 10000 (100%)."}},"required":["fixed","bips"],"nullable":true}]}},"required":["developer"]}},"required":["accountId","breakdown"]}},"required":["data"]},"examples":{"configured":{"summary":"Configured developer fee","value":{"data":{"accountId":"acc_3eG7xN2pQ4rT8mA1sL6dVc","breakdown":{"developer":{"fixed":"1.00","bips":50}}}}},"unconfigured":{"summary":"No developer fee rule configured","value":{"data":{"accountId":"acc_3eG7xN2pQ4rT8mA1sL6dVc","breakdown":{"developer":null}}}}}}}},"400":{"description":"Invalid request.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Account not found","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"getV3CustomersByCustomerIdAccountsByAccountIdFees","tags":["accounts"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"customerId","required":true},{"schema":{"type":"string"},"in":"path","name":"accountId","required":true}],"summary":"Get account fees","description":"Read the developer fees configured for one customer account. This is the read-back mirror of the PUT shape; `breakdown.developer` is `null` when no rule is configured."},"put":{"responses":{"200":{"description":"Account fees updated","headers":{"Idempotency-Replayed":{"description":"Present with value `true` when an idempotent request is replayed.","schema":{"type":"string","enum":["true"]}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"accountId":{"type":"string"},"breakdown":{"type":"object","properties":{"developer":{"type":"object","properties":{"fixed":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,2})?$","description":"Fixed developer fee in the account currency, represented as a major-unit decimal string with at most 2 decimal places."},"bips":{"type":"integer","minimum":0,"maximum":9999,"description":"Developer fee in basis points. `50` means `0.50%`; the value must be below 10000 (100%)."}},"required":["fixed","bips"]}},"required":["developer"]}},"required":["accountId","breakdown"]}},"required":["data"]},"examples":{"developer":{"summary":"Account developer fee","value":{"data":{"accountId":"acc_3eG7xN2pQ4rT8mA1sL6dVc","breakdown":{"developer":{"fixed":"1.00","bips":50}}}}}}}}},"400":{"description":"Invalid request.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Account not found","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"409":{"description":"Idempotency conflict or request in progress.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["idempotency_conflict","idempotency_request_in_progress"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"422":{"description":"A positive developer fee requires an account backed by a settlement network and an available developer settlement wallet on that network.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["developer_fee_invalid"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"putV3CustomersByCustomerIdAccountsByAccountIdFees","tags":["accounts"],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":255},"example":"idem_20260626_0001","description":"Required for effectful v3 requests (POST, PATCH, PUT, DELETE). Reuse the same key with the same body to replay the cached response."},{"schema":{"type":"string"},"in":"path","name":"customerId","required":true},{"schema":{"type":"string"},"in":"path","name":"accountId","required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["breakdown"],"properties":{"breakdown":{"type":"object","required":["developer"],"properties":{"developer":{"type":"object","required":["fixed","bips"],"properties":{"fixed":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,2})?$","example":"1.00","description":"Fixed developer fee as a major-unit decimal string with at most 2 decimal places."},"bips":{"type":"integer","minimum":0,"maximum":9999,"example":50,"description":"Basis points. `50` means `0.50%`."}}}}}}},"examples":{"developer":{"summary":"Replace account developer fee","value":{"breakdown":{"developer":{"fixed":"1.00","bips":50}}}}}}}},"summary":"Replace account fees","description":"Replaces developer fees for one customer account. Fixed fees are major-unit decimal strings; request bodies do not carry wildcard or fee-level currency rules."}},"/v3/customers/{customerId}/recipients":{"post":{"responses":{"201":{"description":"Recipient created","headers":{"Idempotency-Replayed":{"description":"Present with value `true` when an idempotent request is replayed.","schema":{"type":"string","enum":["true"]}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"customerId":{"type":"string"},"relationship":{"enum":["employee","contractor","vendor","subsidiary","merchant","customer","landlord","family","other"]},"externalId":{"type":"string"},"status":{"enum":["active","rejected","archived"],"description":"Recipient status. Closed enum — active is usable, rejected means a provider rejected the recipient, and archived is no longer usable; additions would be a breaking change."},"email":{"type":"string"},"phone":{"type":"string"},"address":{"type":"object","properties":{"streetLine1":{"type":"string"},"streetLine2":{"type":"string"},"city":{"type":"string"},"state":{"type":"string"},"postalCode":{"type":"string"},"country":{"type":"string"}},"required":["streetLine1","city","postalCode","country"],"additionalProperties":false},"label":{"type":"string"},"metadata":{"type":"object","additionalProperties":{}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Archive timestamp set by DELETE; null while the recipient is active."},"type":{"enum":["individual"]},"firstName":{"type":"string"},"lastName":{"type":"string"}},"required":["id","customerId","relationship","status","createdAt","updatedAt","archivedAt","type","firstName","lastName"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"customerId":{"type":"string"},"relationship":{"enum":["employee","contractor","vendor","subsidiary","merchant","customer","landlord","family","other"]},"externalId":{"type":"string"},"status":{"enum":["active","rejected","archived"],"description":"Recipient status. Closed enum — active is usable, rejected means a provider rejected the recipient, and archived is no longer usable; additions would be a breaking change."},"email":{"type":"string"},"phone":{"type":"string"},"address":{"type":"object","properties":{"streetLine1":{"type":"string"},"streetLine2":{"type":"string"},"city":{"type":"string"},"state":{"type":"string"},"postalCode":{"type":"string"},"country":{"type":"string"}},"required":["streetLine1","city","postalCode","country"],"additionalProperties":false},"label":{"type":"string"},"metadata":{"type":"object","additionalProperties":{}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Archive timestamp set by DELETE; null while the recipient is active."},"type":{"enum":["business"]},"companyName":{"type":"string"},"businessIndustry":{"type":"string","description":"6-digit NAICS code used for provider-backed ACH readiness checks on business recipients."}},"required":["id","customerId","relationship","status","createdAt","updatedAt","archivedAt","type","companyName"],"additionalProperties":false}]}},"required":["data"],"additionalProperties":false},"examples":{"individual":{"value":{"data":{"id":"rcp_6dV8xN2pQ4rT7mA9sL1k","customerId":"cus_uPlL04SqhMf8QYHcJV","status":"active","type":"individual","relationship":"contractor","firstName":"Jason","lastName":"Swipelux","email":"jason@swipelux.com","phone":"+14155551234","address":{"streetLine1":"1 Market Street","city":"San Francisco","state":"CA","postalCode":"94105","country":"US"},"label":"Jason contractor","createdAt":"2026-06-25T12:00:00.000Z","updatedAt":"2026-06-25T12:00:00.000Z","archivedAt":null}}},"business":{"value":{"data":{"id":"rcp_9zK4pQ8rT2mA7sL1dV6x","customerId":"cus_uPlL04SqhMf8QYHcJV","status":"active","type":"business","relationship":"vendor","companyName":"Northwind Supplies LLC","businessIndustry":"541511","email":"finance@northwind.example","address":{"streetLine1":"500 Market Street","city":"San Francisco","state":"CA","postalCode":"94105","country":"US"},"label":"Northwind vendor","createdAt":"2026-06-25T12:00:00.000Z","updatedAt":"2026-06-25T12:00:00.000Z","archivedAt":null}}}}}}},"400":{"description":"Invalid request.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Resource not found.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"postV3CustomersByCustomerIdRecipients","tags":["recipients"],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":255},"example":"idem_20260626_0001","description":"Required for effectful v3 requests (POST, PATCH, PUT, DELETE). Reuse the same key with the same body to replay the cached response."},{"schema":{"type":"string"},"in":"path","name":"customerId","required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"type":"object","title":"Individual recipient","required":["type","relationship","firstName","lastName"],"additionalProperties":false,"properties":{"type":{"type":"string","enum":["individual"]},"firstName":{"type":"string","minLength":1},"lastName":{"type":"string","minLength":1},"relationship":{"type":"string","enum":["employee","contractor","vendor","subsidiary","merchant","customer","landlord","family","other"]},"externalId":{"type":"string","maxLength":255,"pattern":"^[\\x20-\\x7E]*$"},"email":{"type":"string","format":"email"},"phone":{"type":"string"},"address":{"type":"object","required":["streetLine1","city","postalCode","country"],"additionalProperties":false,"properties":{"streetLine1":{"type":"string","minLength":1},"streetLine2":{"type":"string"},"city":{"type":"string","minLength":1},"state":{"type":"string"},"postalCode":{"type":"string","minLength":1},"country":{"type":"string","minLength":2,"maxLength":2}}},"label":{"type":"string","maxLength":255},"metadata":{"type":"object","additionalProperties":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}}}},{"type":"object","title":"Business recipient","required":["type","relationship","companyName"],"additionalProperties":false,"properties":{"type":{"type":"string","enum":["business"]},"companyName":{"type":"string","minLength":1},"relationship":{"type":"string","enum":["employee","contractor","vendor","subsidiary","merchant","customer","landlord","family","other"]},"externalId":{"type":"string","maxLength":255,"pattern":"^[\\x20-\\x7E]*$"},"email":{"type":"string","format":"email"},"phone":{"type":"string"},"address":{"type":"object","required":["streetLine1","city","postalCode","country"],"additionalProperties":false,"properties":{"streetLine1":{"type":"string","minLength":1},"streetLine2":{"type":"string"},"city":{"type":"string","minLength":1},"state":{"type":"string"},"postalCode":{"type":"string","minLength":1},"country":{"type":"string","minLength":2,"maxLength":2}}},"label":{"type":"string","maxLength":255},"metadata":{"type":"object","additionalProperties":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}},"businessIndustry":{"type":"string","minLength":6,"maxLength":6,"pattern":"^\\d{6}$","description":"6-digit NAICS code used for provider-backed ACH readiness checks on business recipients."}}}],"discriminator":{"propertyName":"type"}},"examples":{"individual":{"summary":"Individual recipient","value":{"type":"individual","relationship":"contractor","firstName":"Jason","lastName":"Swipelux","email":"jason@swipelux.com","phone":"+14155551234","address":{"streetLine1":"1 Market Street","city":"San Francisco","state":"CA","postalCode":"94105","country":"US"},"label":"Jason contractor"}},"business":{"summary":"Business recipient","value":{"type":"business","relationship":"vendor","companyName":"Northwind Supplies LLC","businessIndustry":"541511","email":"finance@northwind.example","address":{"streetLine1":"500 Market Street","city":"San Francisco","state":"CA","postalCode":"94105","country":"US"},"label":"Northwind vendor"}}}}}},"summary":"Create recipient","description":"Create an individual or business third-party payout recipient. First-party payouts target customer accounts."},"get":{"responses":{"200":{"description":"Recipients retrieved","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"customerId":{"type":"string"},"relationship":{"enum":["employee","contractor","vendor","subsidiary","merchant","customer","landlord","family","other"]},"externalId":{"type":"string"},"status":{"enum":["active","rejected","archived"],"description":"Recipient status. Closed enum — active is usable, rejected means a provider rejected the recipient, and archived is no longer usable; additions would be a breaking change."},"email":{"type":"string"},"phone":{"type":"string"},"address":{"type":"object","properties":{"streetLine1":{"type":"string"},"streetLine2":{"type":"string"},"city":{"type":"string"},"state":{"type":"string"},"postalCode":{"type":"string"},"country":{"type":"string"}},"required":["streetLine1","city","postalCode","country"],"additionalProperties":false},"label":{"type":"string"},"metadata":{"type":"object","additionalProperties":{}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Archive timestamp set by DELETE; null while the recipient is active."},"type":{"enum":["individual"]},"firstName":{"type":"string"},"lastName":{"type":"string"}},"required":["id","customerId","relationship","status","createdAt","updatedAt","archivedAt","type","firstName","lastName"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"customerId":{"type":"string"},"relationship":{"enum":["employee","contractor","vendor","subsidiary","merchant","customer","landlord","family","other"]},"externalId":{"type":"string"},"status":{"enum":["active","rejected","archived"],"description":"Recipient status. Closed enum — active is usable, rejected means a provider rejected the recipient, and archived is no longer usable; additions would be a breaking change."},"email":{"type":"string"},"phone":{"type":"string"},"address":{"type":"object","properties":{"streetLine1":{"type":"string"},"streetLine2":{"type":"string"},"city":{"type":"string"},"state":{"type":"string"},"postalCode":{"type":"string"},"country":{"type":"string"}},"required":["streetLine1","city","postalCode","country"],"additionalProperties":false},"label":{"type":"string"},"metadata":{"type":"object","additionalProperties":{}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Archive timestamp set by DELETE; null while the recipient is active."},"type":{"enum":["business"]},"companyName":{"type":"string"},"businessIndustry":{"type":"string","description":"6-digit NAICS code used for provider-backed ACH readiness checks on business recipients."}},"required":["id","customerId","relationship","status","createdAt","updatedAt","archivedAt","type","companyName"],"additionalProperties":false}]}},"nextCursor":{"anyOf":[{"type":"string","nullable":true}]},"hasMore":{"type":"boolean"}},"required":["data","nextCursor","hasMore"],"additionalProperties":false},"examples":{"recipients":{"value":{"data":[{"id":"rcp_6dV8xN2pQ4rT7mA9sL1k","customerId":"cus_uPlL04SqhMf8QYHcJV","status":"active","type":"individual","relationship":"contractor","firstName":"Jason","lastName":"Swipelux","email":"jason@swipelux.com","phone":"+14155551234","address":{"streetLine1":"1 Market Street","city":"San Francisco","state":"CA","postalCode":"94105","country":"US"},"label":"Jason contractor","createdAt":"2026-06-25T12:00:00.000Z","updatedAt":"2026-06-25T12:00:00.000Z","archivedAt":null},{"id":"rcp_9zK4pQ8rT2mA7sL1dV6x","customerId":"cus_uPlL04SqhMf8QYHcJV","status":"active","type":"business","relationship":"vendor","companyName":"Northwind Supplies LLC","businessIndustry":"541511","email":"finance@northwind.example","address":{"streetLine1":"500 Market Street","city":"San Francisco","state":"CA","postalCode":"94105","country":"US"},"label":"Northwind vendor","createdAt":"2026-06-25T12:00:00.000Z","updatedAt":"2026-06-25T12:00:00.000Z","archivedAt":null}],"nextCursor":null,"hasMore":false}}}}}},"400":{"description":"Invalid request.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Resource not found.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"getV3CustomersByCustomerIdRecipients","tags":["recipients"],"parameters":[{"name":"cursor","in":"query","required":false,"schema":{"type":"string"},"description":"Opaque cursor returned as `nextCursor` from the previous page."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25},"description":"Maximum number of records to return. Defaults to 25."},{"name":"externalId","in":"query","schema":{"type":"string"},"description":"Exact merchant-supplied recipient correlation reference."},{"name":"updatedAfter","in":"query","required":false,"schema":{"type":"string","format":"date-time"},"description":"Return only records updated at or after this RFC 3339 timestamp. Use it to recover from missed webhooks by replaying a window of changes."},{"schema":{"type":"string"},"in":"path","name":"customerId","required":true}],"summary":"List recipients","description":"Lists recipients for a customer."}},"/v3/customers/{customerId}/recipients/{recipientId}":{"get":{"responses":{"200":{"description":"Recipient retrieved","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"customerId":{"type":"string"},"relationship":{"enum":["employee","contractor","vendor","subsidiary","merchant","customer","landlord","family","other"]},"externalId":{"type":"string"},"status":{"enum":["active","rejected","archived"],"description":"Recipient status. Closed enum — active is usable, rejected means a provider rejected the recipient, and archived is no longer usable; additions would be a breaking change."},"email":{"type":"string"},"phone":{"type":"string"},"address":{"type":"object","properties":{"streetLine1":{"type":"string"},"streetLine2":{"type":"string"},"city":{"type":"string"},"state":{"type":"string"},"postalCode":{"type":"string"},"country":{"type":"string"}},"required":["streetLine1","city","postalCode","country"],"additionalProperties":false},"label":{"type":"string"},"metadata":{"type":"object","additionalProperties":{}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Archive timestamp set by DELETE; null while the recipient is active."},"type":{"enum":["individual"]},"firstName":{"type":"string"},"lastName":{"type":"string"},"destinations":{"type":"array","items":{"anyOf":[{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["sepa"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"iban":{"type":"string","minLength":15,"maxLength":34},"bic":{"type":"string","minLength":8,"maxLength":11},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2}},"required":["iban","accountHolderName","country"],"additionalProperties":false},"status":{"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change.","enum":["action_required"]},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status","statusReason"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["sepa"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"iban":{"type":"string","minLength":15,"maxLength":34},"bic":{"type":"string","minLength":8,"maxLength":11},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2}},"required":["iban","accountHolderName","country"],"additionalProperties":false},"status":{"enum":["in_review","ready","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status"],"additionalProperties":false}]},{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["swift"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"swiftCode":{"type":"string","minLength":8,"maxLength":11},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2},"routingNumber":{"type":"string","minLength":9,"maxLength":9},"intermediaryBankSwift":{"type":"string","minLength":8,"maxLength":11},"intermediaryBankName":{"type":"string","minLength":1,"maxLength":255},"intermediaryBankAddress":{"type":"string","minLength":1,"maxLength":512}},"required":["swiftCode","accountNumber","bankName","accountHolderName","country"],"additionalProperties":false},"status":{"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change.","enum":["action_required"]},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status","statusReason"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["swift"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"swiftCode":{"type":"string","minLength":8,"maxLength":11},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2},"routingNumber":{"type":"string","minLength":9,"maxLength":9},"intermediaryBankSwift":{"type":"string","minLength":8,"maxLength":11},"intermediaryBankName":{"type":"string","minLength":1,"maxLength":255},"intermediaryBankAddress":{"type":"string","minLength":1,"maxLength":512}},"required":["swiftCode","accountNumber","bankName","accountHolderName","country"],"additionalProperties":false},"status":{"enum":["in_review","ready","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status"],"additionalProperties":false}]},{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["ach"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"routingNumber":{"type":"string","minLength":9,"maxLength":9},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"accountType":{"enum":["checking","savings"],"default":"checking"},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2}},"required":["routingNumber","accountNumber","bankName","accountHolderName","country"],"additionalProperties":false},"status":{"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change.","enum":["action_required"]},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status","statusReason"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["ach"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"routingNumber":{"type":"string","minLength":9,"maxLength":9},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"accountType":{"enum":["checking","savings"],"default":"checking"},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2}},"required":["routingNumber","accountNumber","bankName","accountHolderName","country"],"additionalProperties":false},"status":{"enum":["in_review","ready","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status"],"additionalProperties":false}]},{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["wire"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"routingNumber":{"type":"string","minLength":9,"maxLength":9},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"accountType":{"enum":["checking","savings"],"default":"checking"},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2}},"required":["routingNumber","accountNumber","bankName","accountHolderName","country"],"additionalProperties":false},"status":{"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change.","enum":["action_required"]},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status","statusReason"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["wire"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"routingNumber":{"type":"string","minLength":9,"maxLength":9},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"accountType":{"enum":["checking","savings"],"default":"checking"},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2}},"required":["routingNumber","accountNumber","bankName","accountHolderName","country"],"additionalProperties":false},"status":{"enum":["in_review","ready","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status"],"additionalProperties":false}]},{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["spei"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"clabe":{"type":"string","minLength":18,"maxLength":18},"institutionName":{"type":"string","minLength":1,"maxLength":255},"bankName":{"type":"string","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2,"default":"MX"}},"required":["clabe","accountHolderName"],"additionalProperties":false},"status":{"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change.","enum":["action_required"]},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status","statusReason"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["spei"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"clabe":{"type":"string","minLength":18,"maxLength":18},"institutionName":{"type":"string","minLength":1,"maxLength":255},"bankName":{"type":"string","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2,"default":"MX"}},"required":["clabe","accountHolderName"],"additionalProperties":false},"status":{"enum":["in_review","ready","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status"],"additionalProperties":false}]},{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["pse"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"bankCode":{"type":"string","minLength":1,"maxLength":64},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"documentType":{"type":"string","minLength":1,"maxLength":32},"documentNumber":{"type":"string","minLength":1,"maxLength":64},"email":{"type":"string","format":"email"},"bankName":{"type":"string","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2,"default":"CO"}},"required":["bankCode","accountNumber","documentType","documentNumber","email","accountHolderName"],"additionalProperties":false},"status":{"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change.","enum":["action_required"]},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status","statusReason"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["pse"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"bankCode":{"type":"string","minLength":1,"maxLength":64},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"documentType":{"type":"string","minLength":1,"maxLength":32},"documentNumber":{"type":"string","minLength":1,"maxLength":64},"email":{"type":"string","format":"email"},"bankName":{"type":"string","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2,"default":"CO"}},"required":["bankCode","accountNumber","documentType","documentNumber","email","accountHolderName"],"additionalProperties":false},"status":{"enum":["in_review","ready","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status"],"additionalProperties":false}]},{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["transfers_3_0"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"cbu":{"type":"string","minLength":22,"maxLength":22},"alias":{"type":"string","minLength":1,"maxLength":255},"bankName":{"type":"string","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"taxId":{"type":"string","minLength":1,"maxLength":64},"country":{"type":"string","minLength":2,"maxLength":2,"default":"AR"}},"required":["cbu","accountHolderName"],"additionalProperties":false},"status":{"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change.","enum":["action_required"]},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status","statusReason"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["transfers_3_0"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"cbu":{"type":"string","minLength":22,"maxLength":22},"alias":{"type":"string","minLength":1,"maxLength":255},"bankName":{"type":"string","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"taxId":{"type":"string","minLength":1,"maxLength":64},"country":{"type":"string","minLength":2,"maxLength":2,"default":"AR"}},"required":["cbu","accountHolderName"],"additionalProperties":false},"status":{"enum":["in_review","ready","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status"],"additionalProperties":false}]},{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["wallet"]},"currency":{"type":"string","minLength":2,"maxLength":10},"ownership":{"anyOf":[{"type":"object","properties":{"type":{"enum":["self_custodied"]}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"enum":["custodial"]},"custodianName":{"type":"string","minLength":1,"maxLength":255}},"required":["type","custodianName"],"additionalProperties":false}]},"details":{"type":"object","properties":{"network":{"enum":["polygon","ethereum","base","arbitrum","optimism","bsc","avalanche"]},"address":{"type":"string","minLength":1,"maxLength":255},"label":{"type":"string","maxLength":255}},"required":["network","address"],"additionalProperties":false},"status":{"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change.","enum":["action_required"]},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","ownership","details","status","statusReason"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["wallet"]},"currency":{"type":"string","minLength":2,"maxLength":10},"ownership":{"anyOf":[{"type":"object","properties":{"type":{"enum":["self_custodied"]}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"enum":["custodial"]},"custodianName":{"type":"string","minLength":1,"maxLength":255}},"required":["type","custodianName"],"additionalProperties":false}]},"details":{"type":"object","properties":{"network":{"enum":["polygon","ethereum","base","arbitrum","optimism","bsc","avalanche"]},"address":{"type":"string","minLength":1,"maxLength":255},"label":{"type":"string","maxLength":255}},"required":["network","address"],"additionalProperties":false},"status":{"enum":["in_review","ready","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","ownership","details","status"],"additionalProperties":false}]}]}}},"required":["id","customerId","relationship","status","createdAt","updatedAt","archivedAt","type","firstName","lastName","destinations"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"customerId":{"type":"string"},"relationship":{"enum":["employee","contractor","vendor","subsidiary","merchant","customer","landlord","family","other"]},"externalId":{"type":"string"},"status":{"enum":["active","rejected","archived"],"description":"Recipient status. Closed enum — active is usable, rejected means a provider rejected the recipient, and archived is no longer usable; additions would be a breaking change."},"email":{"type":"string"},"phone":{"type":"string"},"address":{"type":"object","properties":{"streetLine1":{"type":"string"},"streetLine2":{"type":"string"},"city":{"type":"string"},"state":{"type":"string"},"postalCode":{"type":"string"},"country":{"type":"string"}},"required":["streetLine1","city","postalCode","country"],"additionalProperties":false},"label":{"type":"string"},"metadata":{"type":"object","additionalProperties":{}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Archive timestamp set by DELETE; null while the recipient is active."},"type":{"enum":["business"]},"companyName":{"type":"string"},"businessIndustry":{"type":"string","description":"6-digit NAICS code used for provider-backed ACH readiness checks on business recipients."},"destinations":{"type":"array","items":{"anyOf":[{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["sepa"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"iban":{"type":"string","minLength":15,"maxLength":34},"bic":{"type":"string","minLength":8,"maxLength":11},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2}},"required":["iban","accountHolderName","country"],"additionalProperties":false},"status":{"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change.","enum":["action_required"]},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status","statusReason"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["sepa"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"iban":{"type":"string","minLength":15,"maxLength":34},"bic":{"type":"string","minLength":8,"maxLength":11},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2}},"required":["iban","accountHolderName","country"],"additionalProperties":false},"status":{"enum":["in_review","ready","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status"],"additionalProperties":false}]},{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["swift"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"swiftCode":{"type":"string","minLength":8,"maxLength":11},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2},"routingNumber":{"type":"string","minLength":9,"maxLength":9},"intermediaryBankSwift":{"type":"string","minLength":8,"maxLength":11},"intermediaryBankName":{"type":"string","minLength":1,"maxLength":255},"intermediaryBankAddress":{"type":"string","minLength":1,"maxLength":512}},"required":["swiftCode","accountNumber","bankName","accountHolderName","country"],"additionalProperties":false},"status":{"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change.","enum":["action_required"]},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status","statusReason"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["swift"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"swiftCode":{"type":"string","minLength":8,"maxLength":11},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2},"routingNumber":{"type":"string","minLength":9,"maxLength":9},"intermediaryBankSwift":{"type":"string","minLength":8,"maxLength":11},"intermediaryBankName":{"type":"string","minLength":1,"maxLength":255},"intermediaryBankAddress":{"type":"string","minLength":1,"maxLength":512}},"required":["swiftCode","accountNumber","bankName","accountHolderName","country"],"additionalProperties":false},"status":{"enum":["in_review","ready","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status"],"additionalProperties":false}]},{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["ach"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"routingNumber":{"type":"string","minLength":9,"maxLength":9},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"accountType":{"enum":["checking","savings"],"default":"checking"},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2}},"required":["routingNumber","accountNumber","bankName","accountHolderName","country"],"additionalProperties":false},"status":{"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change.","enum":["action_required"]},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status","statusReason"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["ach"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"routingNumber":{"type":"string","minLength":9,"maxLength":9},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"accountType":{"enum":["checking","savings"],"default":"checking"},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2}},"required":["routingNumber","accountNumber","bankName","accountHolderName","country"],"additionalProperties":false},"status":{"enum":["in_review","ready","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status"],"additionalProperties":false}]},{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["wire"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"routingNumber":{"type":"string","minLength":9,"maxLength":9},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"accountType":{"enum":["checking","savings"],"default":"checking"},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2}},"required":["routingNumber","accountNumber","bankName","accountHolderName","country"],"additionalProperties":false},"status":{"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change.","enum":["action_required"]},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status","statusReason"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["wire"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"routingNumber":{"type":"string","minLength":9,"maxLength":9},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"accountType":{"enum":["checking","savings"],"default":"checking"},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2}},"required":["routingNumber","accountNumber","bankName","accountHolderName","country"],"additionalProperties":false},"status":{"enum":["in_review","ready","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status"],"additionalProperties":false}]},{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["spei"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"clabe":{"type":"string","minLength":18,"maxLength":18},"institutionName":{"type":"string","minLength":1,"maxLength":255},"bankName":{"type":"string","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2,"default":"MX"}},"required":["clabe","accountHolderName"],"additionalProperties":false},"status":{"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change.","enum":["action_required"]},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status","statusReason"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["spei"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"clabe":{"type":"string","minLength":18,"maxLength":18},"institutionName":{"type":"string","minLength":1,"maxLength":255},"bankName":{"type":"string","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2,"default":"MX"}},"required":["clabe","accountHolderName"],"additionalProperties":false},"status":{"enum":["in_review","ready","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status"],"additionalProperties":false}]},{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["pse"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"bankCode":{"type":"string","minLength":1,"maxLength":64},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"documentType":{"type":"string","minLength":1,"maxLength":32},"documentNumber":{"type":"string","minLength":1,"maxLength":64},"email":{"type":"string","format":"email"},"bankName":{"type":"string","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2,"default":"CO"}},"required":["bankCode","accountNumber","documentType","documentNumber","email","accountHolderName"],"additionalProperties":false},"status":{"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change.","enum":["action_required"]},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status","statusReason"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["pse"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"bankCode":{"type":"string","minLength":1,"maxLength":64},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"documentType":{"type":"string","minLength":1,"maxLength":32},"documentNumber":{"type":"string","minLength":1,"maxLength":64},"email":{"type":"string","format":"email"},"bankName":{"type":"string","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2,"default":"CO"}},"required":["bankCode","accountNumber","documentType","documentNumber","email","accountHolderName"],"additionalProperties":false},"status":{"enum":["in_review","ready","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status"],"additionalProperties":false}]},{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["transfers_3_0"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"cbu":{"type":"string","minLength":22,"maxLength":22},"alias":{"type":"string","minLength":1,"maxLength":255},"bankName":{"type":"string","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"taxId":{"type":"string","minLength":1,"maxLength":64},"country":{"type":"string","minLength":2,"maxLength":2,"default":"AR"}},"required":["cbu","accountHolderName"],"additionalProperties":false},"status":{"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change.","enum":["action_required"]},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status","statusReason"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["transfers_3_0"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"cbu":{"type":"string","minLength":22,"maxLength":22},"alias":{"type":"string","minLength":1,"maxLength":255},"bankName":{"type":"string","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"taxId":{"type":"string","minLength":1,"maxLength":64},"country":{"type":"string","minLength":2,"maxLength":2,"default":"AR"}},"required":["cbu","accountHolderName"],"additionalProperties":false},"status":{"enum":["in_review","ready","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status"],"additionalProperties":false}]},{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["wallet"]},"currency":{"type":"string","minLength":2,"maxLength":10},"ownership":{"anyOf":[{"type":"object","properties":{"type":{"enum":["self_custodied"]}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"enum":["custodial"]},"custodianName":{"type":"string","minLength":1,"maxLength":255}},"required":["type","custodianName"],"additionalProperties":false}]},"details":{"type":"object","properties":{"network":{"enum":["polygon","ethereum","base","arbitrum","optimism","bsc","avalanche"]},"address":{"type":"string","minLength":1,"maxLength":255},"label":{"type":"string","maxLength":255}},"required":["network","address"],"additionalProperties":false},"status":{"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change.","enum":["action_required"]},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","ownership","details","status","statusReason"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["wallet"]},"currency":{"type":"string","minLength":2,"maxLength":10},"ownership":{"anyOf":[{"type":"object","properties":{"type":{"enum":["self_custodied"]}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"enum":["custodial"]},"custodianName":{"type":"string","minLength":1,"maxLength":255}},"required":["type","custodianName"],"additionalProperties":false}]},"details":{"type":"object","properties":{"network":{"enum":["polygon","ethereum","base","arbitrum","optimism","bsc","avalanche"]},"address":{"type":"string","minLength":1,"maxLength":255},"label":{"type":"string","maxLength":255}},"required":["network","address"],"additionalProperties":false},"status":{"enum":["in_review","ready","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","ownership","details","status"],"additionalProperties":false}]}]}}},"required":["id","customerId","relationship","status","createdAt","updatedAt","archivedAt","type","companyName","destinations"],"additionalProperties":false}]}},"required":["data"],"additionalProperties":false},"examples":{"business":{"value":{"data":{"id":"rcp_9zK4pQ8rT2mA7sL1dV6x","customerId":"cus_uPlL04SqhMf8QYHcJV","status":"active","type":"business","relationship":"vendor","companyName":"Northwind Supplies LLC","businessIndustry":"541511","email":"finance@northwind.example","address":{"streetLine1":"500 Market Street","city":"San Francisco","state":"CA","postalCode":"94105","country":"US"},"label":"Northwind vendor","createdAt":"2026-06-25T12:00:00.000Z","updatedAt":"2026-06-25T12:00:00.000Z","archivedAt":null,"destinations":[{"id":"dst_7mA9sL1kBc6dV8xN2pQ4rT","type":"ach","currency":"USD","status":"ready","details":{"routingNumber":"021000021","accountNumber":"123456789","accountType":"checking","bankName":"JPMorgan Chase","accountHolderName":"Jason Swipelux","country":"US"},"createdAt":"2026-06-25T12:01:00.000Z","updatedAt":"2026-06-25T12:01:00.000Z","archivedAt":null}]}}}}}}},"400":{"description":"Invalid request.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Resource not found.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"getV3CustomersByCustomerIdRecipientsByRecipientId","tags":["recipients"],"parameters":[{"in":"path","name":"recipientId","schema":{"type":"string"},"required":true},{"schema":{"type":"string"},"in":"path","name":"customerId","required":true}],"summary":"Get recipient","description":"Returns a recipient with its payout destinations."},"patch":{"responses":{"200":{"description":"Recipient updated","headers":{"Idempotency-Replayed":{"description":"Present with value `true` when an idempotent request is replayed.","schema":{"type":"string","enum":["true"]}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"customerId":{"type":"string"},"relationship":{"enum":["employee","contractor","vendor","subsidiary","merchant","customer","landlord","family","other"]},"externalId":{"type":"string"},"status":{"enum":["active","rejected","archived"],"description":"Recipient status. Closed enum — active is usable, rejected means a provider rejected the recipient, and archived is no longer usable; additions would be a breaking change."},"email":{"type":"string"},"phone":{"type":"string"},"address":{"type":"object","properties":{"streetLine1":{"type":"string"},"streetLine2":{"type":"string"},"city":{"type":"string"},"state":{"type":"string"},"postalCode":{"type":"string"},"country":{"type":"string"}},"required":["streetLine1","city","postalCode","country"],"additionalProperties":false},"label":{"type":"string"},"metadata":{"type":"object","additionalProperties":{}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Archive timestamp set by DELETE; null while the recipient is active."},"type":{"enum":["individual"]},"firstName":{"type":"string"},"lastName":{"type":"string"}},"required":["id","customerId","relationship","status","createdAt","updatedAt","archivedAt","type","firstName","lastName"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"customerId":{"type":"string"},"relationship":{"enum":["employee","contractor","vendor","subsidiary","merchant","customer","landlord","family","other"]},"externalId":{"type":"string"},"status":{"enum":["active","rejected","archived"],"description":"Recipient status. Closed enum — active is usable, rejected means a provider rejected the recipient, and archived is no longer usable; additions would be a breaking change."},"email":{"type":"string"},"phone":{"type":"string"},"address":{"type":"object","properties":{"streetLine1":{"type":"string"},"streetLine2":{"type":"string"},"city":{"type":"string"},"state":{"type":"string"},"postalCode":{"type":"string"},"country":{"type":"string"}},"required":["streetLine1","city","postalCode","country"],"additionalProperties":false},"label":{"type":"string"},"metadata":{"type":"object","additionalProperties":{}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Archive timestamp set by DELETE; null while the recipient is active."},"type":{"enum":["business"]},"companyName":{"type":"string"},"businessIndustry":{"type":"string","description":"6-digit NAICS code used for provider-backed ACH readiness checks on business recipients."}},"required":["id","customerId","relationship","status","createdAt","updatedAt","archivedAt","type","companyName"],"additionalProperties":false}]}},"required":["data"],"additionalProperties":false},"examples":{"updated":{"value":{"data":{"id":"rcp_6dV8xN2pQ4rT7mA9sL1k","customerId":"cus_uPlL04SqhMf8QYHcJV","status":"active","type":"individual","relationship":"contractor","firstName":"Jason","lastName":"Swipelux","email":"jason.treasury@swipelux.com","phone":"+14155551234","address":{"streetLine1":"1 Market Street","city":"San Francisco","state":"CA","postalCode":"94105","country":"US"},"label":"Treasury payout profile","createdAt":"2026-06-25T12:00:00.000Z","updatedAt":"2026-06-25T12:05:00.000Z","archivedAt":null}}}}}}},"400":{"description":"Invalid request.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Resource not found.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"patchV3CustomersByCustomerIdRecipientsByRecipientId","tags":["recipients"],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":255},"example":"idem_20260626_0001","description":"Required for effectful v3 requests (POST, PATCH, PUT, DELETE). Reuse the same key with the same body to replay the cached response."},{"schema":{"type":"string"},"in":"path","name":"customerId","required":true},{"schema":{"type":"string"},"in":"path","name":"recipientId","required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"additionalProperties":false,"properties":{"relationship":{"type":"string","enum":["employee","contractor","vendor","subsidiary","merchant","customer","landlord","family","other"]},"firstName":{"type":"string","minLength":1},"lastName":{"type":"string","minLength":1},"companyName":{"type":"string","minLength":1},"businessIndustry":{"type":"string","minLength":6,"maxLength":6,"pattern":"^\\d{6}$","description":"6-digit NAICS code used for provider-backed ACH readiness checks on business recipients."},"email":{"type":"string","format":"email"},"phone":{"type":"string"},"address":{"type":"object","required":["streetLine1","city","postalCode","country"],"additionalProperties":false,"properties":{"streetLine1":{"type":"string","minLength":1},"streetLine2":{"type":"string"},"city":{"type":"string","minLength":1},"state":{"type":"string"},"postalCode":{"type":"string","minLength":1},"country":{"type":"string","minLength":2,"maxLength":2}}},"label":{"type":"string","maxLength":255},"metadata":{"type":"object","additionalProperties":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}}}},"examples":{"email":{"value":{"email":"jason.treasury@swipelux.com","label":"Treasury payout profile"}}}}}},"summary":"Update recipient","description":"Updates the supplied fields on an active recipient. Archive is terminal; archived recipients reject later updates."},"delete":{"responses":{"200":{"description":"Recipient archived","headers":{"Idempotency-Replayed":{"description":"Present with value `true` when an idempotent request is replayed.","schema":{"type":"string","enum":["true"]}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"customerId":{"type":"string"},"relationship":{"enum":["employee","contractor","vendor","subsidiary","merchant","customer","landlord","family","other"]},"externalId":{"type":"string"},"status":{"enum":["active","rejected","archived"],"description":"Recipient status. Closed enum — active is usable, rejected means a provider rejected the recipient, and archived is no longer usable; additions would be a breaking change."},"email":{"type":"string"},"phone":{"type":"string"},"address":{"type":"object","properties":{"streetLine1":{"type":"string"},"streetLine2":{"type":"string"},"city":{"type":"string"},"state":{"type":"string"},"postalCode":{"type":"string"},"country":{"type":"string"}},"required":["streetLine1","city","postalCode","country"],"additionalProperties":false},"label":{"type":"string"},"metadata":{"type":"object","additionalProperties":{}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Archive timestamp set by DELETE; null while the recipient is active."},"type":{"enum":["individual"]},"firstName":{"type":"string"},"lastName":{"type":"string"}},"required":["id","customerId","relationship","status","createdAt","updatedAt","archivedAt","type","firstName","lastName"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"customerId":{"type":"string"},"relationship":{"enum":["employee","contractor","vendor","subsidiary","merchant","customer","landlord","family","other"]},"externalId":{"type":"string"},"status":{"enum":["active","rejected","archived"],"description":"Recipient status. Closed enum — active is usable, rejected means a provider rejected the recipient, and archived is no longer usable; additions would be a breaking change."},"email":{"type":"string"},"phone":{"type":"string"},"address":{"type":"object","properties":{"streetLine1":{"type":"string"},"streetLine2":{"type":"string"},"city":{"type":"string"},"state":{"type":"string"},"postalCode":{"type":"string"},"country":{"type":"string"}},"required":["streetLine1","city","postalCode","country"],"additionalProperties":false},"label":{"type":"string"},"metadata":{"type":"object","additionalProperties":{}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Archive timestamp set by DELETE; null while the recipient is active."},"type":{"enum":["business"]},"companyName":{"type":"string"},"businessIndustry":{"type":"string","description":"6-digit NAICS code used for provider-backed ACH readiness checks on business recipients."}},"required":["id","customerId","relationship","status","createdAt","updatedAt","archivedAt","type","companyName"],"additionalProperties":false}]}},"required":["data"],"additionalProperties":false},"examples":{"archived":{"value":{"data":{"id":"rcp_6dV8xN2pQ4rT7mA9sL1k","customerId":"cus_uPlL04SqhMf8QYHcJV","status":"archived","type":"individual","relationship":"contractor","firstName":"Jason","lastName":"Swipelux","email":"jason.treasury@swipelux.com","phone":"+14155551234","address":{"streetLine1":"1 Market Street","city":"San Francisco","state":"CA","postalCode":"94105","country":"US"},"label":"Treasury payout profile","createdAt":"2026-06-25T12:00:00.000Z","updatedAt":"2026-06-25T12:06:00.000Z","archivedAt":"2026-06-25T12:06:00.000Z"}}}}}}},"400":{"description":"Invalid request.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Resource not found.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"deleteV3CustomersByCustomerIdRecipientsByRecipientId","tags":["recipients"],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":255},"example":"idem_20260626_0001","description":"Required for effectful v3 requests (POST, PATCH, PUT, DELETE). Reuse the same key with the same body to replay the cached response."},{"schema":{"type":"string"},"in":"path","name":"customerId","required":true},{"schema":{"type":"string"},"in":"path","name":"recipientId","required":true}],"summary":"Archive recipient","description":"Archives a recipient."}},"/v3/customers/{customerId}/recipients/{recipientId}/destinations":{"post":{"responses":{"201":{"description":"Recipient destination created","headers":{"Idempotency-Replayed":{"description":"Present with value `true` when an idempotent request is replayed.","schema":{"type":"string","enum":["true"]}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"anyOf":[{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["sepa"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"iban":{"type":"string","minLength":15,"maxLength":34},"bic":{"type":"string","minLength":8,"maxLength":11},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2}},"required":["iban","accountHolderName","country"],"additionalProperties":false},"status":{"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change.","enum":["action_required"]},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status","statusReason"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["sepa"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"iban":{"type":"string","minLength":15,"maxLength":34},"bic":{"type":"string","minLength":8,"maxLength":11},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2}},"required":["iban","accountHolderName","country"],"additionalProperties":false},"status":{"enum":["in_review","ready","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status"],"additionalProperties":false}]},{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["swift"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"swiftCode":{"type":"string","minLength":8,"maxLength":11},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2},"routingNumber":{"type":"string","minLength":9,"maxLength":9},"intermediaryBankSwift":{"type":"string","minLength":8,"maxLength":11},"intermediaryBankName":{"type":"string","minLength":1,"maxLength":255},"intermediaryBankAddress":{"type":"string","minLength":1,"maxLength":512}},"required":["swiftCode","accountNumber","bankName","accountHolderName","country"],"additionalProperties":false},"status":{"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change.","enum":["action_required"]},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status","statusReason"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["swift"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"swiftCode":{"type":"string","minLength":8,"maxLength":11},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2},"routingNumber":{"type":"string","minLength":9,"maxLength":9},"intermediaryBankSwift":{"type":"string","minLength":8,"maxLength":11},"intermediaryBankName":{"type":"string","minLength":1,"maxLength":255},"intermediaryBankAddress":{"type":"string","minLength":1,"maxLength":512}},"required":["swiftCode","accountNumber","bankName","accountHolderName","country"],"additionalProperties":false},"status":{"enum":["in_review","ready","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status"],"additionalProperties":false}]},{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["ach"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"routingNumber":{"type":"string","minLength":9,"maxLength":9},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"accountType":{"enum":["checking","savings"],"default":"checking"},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2}},"required":["routingNumber","accountNumber","bankName","accountHolderName","country"],"additionalProperties":false},"status":{"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change.","enum":["action_required"]},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status","statusReason"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["ach"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"routingNumber":{"type":"string","minLength":9,"maxLength":9},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"accountType":{"enum":["checking","savings"],"default":"checking"},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2}},"required":["routingNumber","accountNumber","bankName","accountHolderName","country"],"additionalProperties":false},"status":{"enum":["in_review","ready","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status"],"additionalProperties":false}]},{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["wire"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"routingNumber":{"type":"string","minLength":9,"maxLength":9},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"accountType":{"enum":["checking","savings"],"default":"checking"},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2}},"required":["routingNumber","accountNumber","bankName","accountHolderName","country"],"additionalProperties":false},"status":{"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change.","enum":["action_required"]},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status","statusReason"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["wire"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"routingNumber":{"type":"string","minLength":9,"maxLength":9},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"accountType":{"enum":["checking","savings"],"default":"checking"},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2}},"required":["routingNumber","accountNumber","bankName","accountHolderName","country"],"additionalProperties":false},"status":{"enum":["in_review","ready","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status"],"additionalProperties":false}]},{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["spei"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"clabe":{"type":"string","minLength":18,"maxLength":18},"institutionName":{"type":"string","minLength":1,"maxLength":255},"bankName":{"type":"string","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2,"default":"MX"}},"required":["clabe","accountHolderName"],"additionalProperties":false},"status":{"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change.","enum":["action_required"]},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status","statusReason"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["spei"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"clabe":{"type":"string","minLength":18,"maxLength":18},"institutionName":{"type":"string","minLength":1,"maxLength":255},"bankName":{"type":"string","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2,"default":"MX"}},"required":["clabe","accountHolderName"],"additionalProperties":false},"status":{"enum":["in_review","ready","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status"],"additionalProperties":false}]},{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["pse"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"bankCode":{"type":"string","minLength":1,"maxLength":64},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"documentType":{"type":"string","minLength":1,"maxLength":32},"documentNumber":{"type":"string","minLength":1,"maxLength":64},"email":{"type":"string","format":"email"},"bankName":{"type":"string","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2,"default":"CO"}},"required":["bankCode","accountNumber","documentType","documentNumber","email","accountHolderName"],"additionalProperties":false},"status":{"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change.","enum":["action_required"]},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status","statusReason"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["pse"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"bankCode":{"type":"string","minLength":1,"maxLength":64},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"documentType":{"type":"string","minLength":1,"maxLength":32},"documentNumber":{"type":"string","minLength":1,"maxLength":64},"email":{"type":"string","format":"email"},"bankName":{"type":"string","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2,"default":"CO"}},"required":["bankCode","accountNumber","documentType","documentNumber","email","accountHolderName"],"additionalProperties":false},"status":{"enum":["in_review","ready","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status"],"additionalProperties":false}]},{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["transfers_3_0"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"cbu":{"type":"string","minLength":22,"maxLength":22},"alias":{"type":"string","minLength":1,"maxLength":255},"bankName":{"type":"string","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"taxId":{"type":"string","minLength":1,"maxLength":64},"country":{"type":"string","minLength":2,"maxLength":2,"default":"AR"}},"required":["cbu","accountHolderName"],"additionalProperties":false},"status":{"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change.","enum":["action_required"]},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status","statusReason"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["transfers_3_0"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"cbu":{"type":"string","minLength":22,"maxLength":22},"alias":{"type":"string","minLength":1,"maxLength":255},"bankName":{"type":"string","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"taxId":{"type":"string","minLength":1,"maxLength":64},"country":{"type":"string","minLength":2,"maxLength":2,"default":"AR"}},"required":["cbu","accountHolderName"],"additionalProperties":false},"status":{"enum":["in_review","ready","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status"],"additionalProperties":false}]},{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["wallet"]},"currency":{"type":"string","minLength":2,"maxLength":10},"ownership":{"anyOf":[{"type":"object","properties":{"type":{"enum":["self_custodied"]}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"enum":["custodial"]},"custodianName":{"type":"string","minLength":1,"maxLength":255}},"required":["type","custodianName"],"additionalProperties":false}]},"details":{"type":"object","properties":{"network":{"enum":["polygon","ethereum","base","arbitrum","optimism","bsc","avalanche"]},"address":{"type":"string","minLength":1,"maxLength":255},"label":{"type":"string","maxLength":255}},"required":["network","address"],"additionalProperties":false},"status":{"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change.","enum":["action_required"]},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","ownership","details","status","statusReason"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["wallet"]},"currency":{"type":"string","minLength":2,"maxLength":10},"ownership":{"anyOf":[{"type":"object","properties":{"type":{"enum":["self_custodied"]}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"enum":["custodial"]},"custodianName":{"type":"string","minLength":1,"maxLength":255}},"required":["type","custodianName"],"additionalProperties":false}]},"details":{"type":"object","properties":{"network":{"enum":["polygon","ethereum","base","arbitrum","optimism","bsc","avalanche"]},"address":{"type":"string","minLength":1,"maxLength":255},"label":{"type":"string","maxLength":255}},"required":["network","address"],"additionalProperties":false},"status":{"enum":["in_review","ready","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","ownership","details","status"],"additionalProperties":false}]}]}},"required":["data"],"additionalProperties":false},"examples":{"ach":{"summary":"ACH recipient destination","description":"An ACH recipient destination uses `type: \"ach\"` and typed bank routing parameters.","value":{"data":{"id":"dst_7mA9sL1kBc6dV8xN2pQ4rT","type":"ach","currency":"USD","status":"ready","details":{"routingNumber":"021000021","accountNumber":"123456789","accountType":"checking","bankName":"JPMorgan Chase","accountHolderName":"Jason Swipelux","country":"US"},"createdAt":"2026-06-25T12:01:00.000Z","updatedAt":"2026-06-25T12:01:00.000Z","archivedAt":null}}},"wallet":{"summary":"Wallet recipient destination","description":"A wallet recipient destination uses `type: \"wallet\"` and typed network/address details.","value":{"data":{"id":"dst_8xN2pQ4rT7mA9sL1kBc6dV","type":"wallet","currency":"USDC","ownership":{"type":"self_custodied"},"status":"ready","details":{"network":"base","address":"0x1111111111111111111111111111111111111111"},"createdAt":"2026-06-25T12:02:00.000Z","updatedAt":"2026-06-25T12:02:00.000Z","archivedAt":null}}}}}}},"400":{"description":"Invalid request.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Resource not found.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"409":{"description":"Required payout destination type is not ready","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"422":{"description":"Recipient address is required for fiat destinations.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["recipient_address_required"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"postV3CustomersByCustomerIdRecipientsByRecipientIdDestinations","tags":["recipients"],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":255},"example":"idem_20260626_0001","description":"Required for effectful v3 requests (POST, PATCH, PUT, DELETE). Reuse the same key with the same body to replay the cached response."},{"schema":{"type":"string"},"in":"path","name":"customerId","required":true},{"schema":{"type":"string"},"in":"path","name":"recipientId","required":true}],"requestBody":{"required":true,"description":"Type-specific recipient destination payload. Use top-level Accounts for customer-owned accounts; use recipient destinations when funds land with a recipient relationship.","content":{"application/json":{"schema":{"description":"Type-specific recipient destination payload. Use top-level Accounts for customer-owned accounts; use recipient destinations when funds land with a recipient relationship.","oneOf":[{"type":"object","required":["type","currency","details"],"properties":{"type":{"type":"string","enum":["sepa"],"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change."},"currency":{"type":"string","minLength":3,"maxLength":3,"example":"USD","description":"Destination currency for this recipient payout endpoint."},"details":{"type":"object","required":["iban","accountHolderName","country"],"properties":{"iban":{"type":"string","minLength":15,"maxLength":34},"bic":{"type":"string","minLength":8,"maxLength":11},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2}}}}},{"type":"object","required":["type","currency","details"],"properties":{"type":{"type":"string","enum":["swift"],"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change."},"currency":{"type":"string","minLength":3,"maxLength":3,"example":"USD","description":"Destination currency for this recipient payout endpoint."},"details":{"type":"object","required":["swiftCode","accountNumber","bankName","accountHolderName","country"],"properties":{"swiftCode":{"type":"string","minLength":8,"maxLength":11},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2},"routingNumber":{"type":"string","minLength":9,"maxLength":9},"intermediaryBankSwift":{"type":"string","minLength":8,"maxLength":11},"intermediaryBankName":{"type":"string","minLength":1,"maxLength":255},"intermediaryBankAddress":{"type":"string","minLength":1,"maxLength":512}}}}},{"type":"object","required":["type","currency","details"],"properties":{"type":{"type":"string","enum":["ach"],"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change."},"currency":{"type":"string","minLength":3,"maxLength":3,"example":"USD","description":"Destination currency for this recipient payout endpoint."},"details":{"type":"object","required":["routingNumber","accountNumber","bankName","accountHolderName","country"],"properties":{"routingNumber":{"type":"string","minLength":9,"maxLength":9},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"accountType":{"type":"string","enum":["checking","savings"]},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2}}}}},{"type":"object","required":["type","currency","details"],"properties":{"type":{"type":"string","enum":["wire"],"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change."},"currency":{"type":"string","minLength":3,"maxLength":3,"example":"USD","description":"Destination currency for this recipient payout endpoint."},"details":{"type":"object","required":["routingNumber","accountNumber","bankName","accountHolderName","country"],"properties":{"routingNumber":{"type":"string","minLength":9,"maxLength":9},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"accountType":{"type":"string","enum":["checking","savings"]},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2}}}}},{"type":"object","required":["type","currency","details"],"properties":{"type":{"type":"string","enum":["spei"],"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change."},"currency":{"type":"string","minLength":3,"maxLength":3,"example":"USD","description":"Destination currency for this recipient payout endpoint."},"details":{"type":"object","required":["clabe","accountHolderName"],"properties":{"clabe":{"type":"string","minLength":18,"maxLength":18},"institutionName":{"type":"string","minLength":1,"maxLength":255},"bankName":{"type":"string","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2}}}}},{"type":"object","required":["type","currency","details"],"properties":{"type":{"type":"string","enum":["pse"],"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change."},"currency":{"type":"string","minLength":3,"maxLength":3,"example":"USD","description":"Destination currency for this recipient payout endpoint."},"details":{"type":"object","required":["bankCode","accountNumber","documentType","documentNumber","email","accountHolderName"],"properties":{"bankCode":{"type":"string","minLength":1,"maxLength":64},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"documentType":{"type":"string","minLength":1,"maxLength":32},"documentNumber":{"type":"string","minLength":1,"maxLength":64},"email":{"type":"string","format":"email"},"bankName":{"type":"string","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2}}}}},{"type":"object","required":["type","currency","details"],"properties":{"type":{"type":"string","enum":["transfers_3_0"],"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change."},"currency":{"type":"string","minLength":3,"maxLength":3,"example":"USD","description":"Destination currency for this recipient payout endpoint."},"details":{"type":"object","required":["cbu","accountHolderName"],"properties":{"cbu":{"type":"string","minLength":22,"maxLength":22},"alias":{"type":"string","minLength":1,"maxLength":255},"bankName":{"type":"string","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"taxId":{"type":"string","minLength":1,"maxLength":64},"country":{"type":"string","minLength":2,"maxLength":2}}}}},{"type":"object","required":["type","currency","details","ownership"],"properties":{"type":{"type":"string","enum":["wallet"],"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change."},"currency":{"type":"string","minLength":2,"maxLength":10,"example":"USDC","description":"Destination currency for this recipient payout endpoint."},"details":{"type":"object","required":["network","address"],"properties":{"network":{"type":"string","enum":["polygon","ethereum","base","arbitrum","optimism","bsc","avalanche"],"description":"Blockchain network. Open enum — values are added over time; clients must tolerate unknown values."},"address":{"type":"string","minLength":1,"maxLength":255,"description":"Wallet address. Its format is validated against details.network."}}},"label":{"type":"string","maxLength":255},"ownership":{"description":"Declaration of who controls this wallet destination. This is a declaration only; verification is not performed at create time.","oneOf":[{"type":"object","title":"Self-custodied wallet","required":["type"],"not":{"required":["custodianName"]},"properties":{"type":{"type":"string","enum":["self_custodied"]},"custodianName":{"type":"string","description":"Allowed only when ownership.type is custodial."}}},{"type":"object","title":"Custodial wallet","required":["type","custodianName"],"properties":{"type":{"type":"string","enum":["custodial"]},"custodianName":{"type":"string","minLength":1,"maxLength":255,"description":"Name of the third-party wallet custodian."}}}],"discriminator":{"propertyName":"type"}}}}],"discriminator":{"propertyName":"type"}},"examples":{"ach":{"value":{"type":"ach","currency":"USD","details":{"routingNumber":"021000021","accountNumber":"123456789","accountType":"checking","bankName":"JPMorgan Chase","accountHolderName":"Jason Swipelux","country":"US"}}},"wallet":{"value":{"type":"wallet","currency":"USDC","ownership":{"type":"self_custodied"},"details":{"network":"base","address":"0x1111111111111111111111111111111111111111"}}}}}}},"summary":"Add recipient destination","description":"Adds a bank or wallet payout destination to a recipient. Use Accounts for customer-owned destinations."},"get":{"responses":{"200":{"description":"Recipient destinations retrieved","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"anyOf":[{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["sepa"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"iban":{"type":"string","minLength":15,"maxLength":34},"bic":{"type":"string","minLength":8,"maxLength":11},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2}},"required":["iban","accountHolderName","country"],"additionalProperties":false},"status":{"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change.","enum":["action_required"]},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status","statusReason"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["sepa"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"iban":{"type":"string","minLength":15,"maxLength":34},"bic":{"type":"string","minLength":8,"maxLength":11},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2}},"required":["iban","accountHolderName","country"],"additionalProperties":false},"status":{"enum":["in_review","ready","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status"],"additionalProperties":false}]},{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["swift"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"swiftCode":{"type":"string","minLength":8,"maxLength":11},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2},"routingNumber":{"type":"string","minLength":9,"maxLength":9},"intermediaryBankSwift":{"type":"string","minLength":8,"maxLength":11},"intermediaryBankName":{"type":"string","minLength":1,"maxLength":255},"intermediaryBankAddress":{"type":"string","minLength":1,"maxLength":512}},"required":["swiftCode","accountNumber","bankName","accountHolderName","country"],"additionalProperties":false},"status":{"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change.","enum":["action_required"]},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status","statusReason"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["swift"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"swiftCode":{"type":"string","minLength":8,"maxLength":11},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2},"routingNumber":{"type":"string","minLength":9,"maxLength":9},"intermediaryBankSwift":{"type":"string","minLength":8,"maxLength":11},"intermediaryBankName":{"type":"string","minLength":1,"maxLength":255},"intermediaryBankAddress":{"type":"string","minLength":1,"maxLength":512}},"required":["swiftCode","accountNumber","bankName","accountHolderName","country"],"additionalProperties":false},"status":{"enum":["in_review","ready","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status"],"additionalProperties":false}]},{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["ach"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"routingNumber":{"type":"string","minLength":9,"maxLength":9},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"accountType":{"enum":["checking","savings"],"default":"checking"},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2}},"required":["routingNumber","accountNumber","bankName","accountHolderName","country"],"additionalProperties":false},"status":{"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change.","enum":["action_required"]},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status","statusReason"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["ach"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"routingNumber":{"type":"string","minLength":9,"maxLength":9},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"accountType":{"enum":["checking","savings"],"default":"checking"},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2}},"required":["routingNumber","accountNumber","bankName","accountHolderName","country"],"additionalProperties":false},"status":{"enum":["in_review","ready","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status"],"additionalProperties":false}]},{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["wire"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"routingNumber":{"type":"string","minLength":9,"maxLength":9},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"accountType":{"enum":["checking","savings"],"default":"checking"},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2}},"required":["routingNumber","accountNumber","bankName","accountHolderName","country"],"additionalProperties":false},"status":{"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change.","enum":["action_required"]},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status","statusReason"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["wire"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"routingNumber":{"type":"string","minLength":9,"maxLength":9},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"accountType":{"enum":["checking","savings"],"default":"checking"},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2}},"required":["routingNumber","accountNumber","bankName","accountHolderName","country"],"additionalProperties":false},"status":{"enum":["in_review","ready","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status"],"additionalProperties":false}]},{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["spei"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"clabe":{"type":"string","minLength":18,"maxLength":18},"institutionName":{"type":"string","minLength":1,"maxLength":255},"bankName":{"type":"string","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2,"default":"MX"}},"required":["clabe","accountHolderName"],"additionalProperties":false},"status":{"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change.","enum":["action_required"]},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status","statusReason"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["spei"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"clabe":{"type":"string","minLength":18,"maxLength":18},"institutionName":{"type":"string","minLength":1,"maxLength":255},"bankName":{"type":"string","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2,"default":"MX"}},"required":["clabe","accountHolderName"],"additionalProperties":false},"status":{"enum":["in_review","ready","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status"],"additionalProperties":false}]},{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["pse"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"bankCode":{"type":"string","minLength":1,"maxLength":64},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"documentType":{"type":"string","minLength":1,"maxLength":32},"documentNumber":{"type":"string","minLength":1,"maxLength":64},"email":{"type":"string","format":"email"},"bankName":{"type":"string","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2,"default":"CO"}},"required":["bankCode","accountNumber","documentType","documentNumber","email","accountHolderName"],"additionalProperties":false},"status":{"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change.","enum":["action_required"]},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status","statusReason"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["pse"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"bankCode":{"type":"string","minLength":1,"maxLength":64},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"documentType":{"type":"string","minLength":1,"maxLength":32},"documentNumber":{"type":"string","minLength":1,"maxLength":64},"email":{"type":"string","format":"email"},"bankName":{"type":"string","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2,"default":"CO"}},"required":["bankCode","accountNumber","documentType","documentNumber","email","accountHolderName"],"additionalProperties":false},"status":{"enum":["in_review","ready","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status"],"additionalProperties":false}]},{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["transfers_3_0"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"cbu":{"type":"string","minLength":22,"maxLength":22},"alias":{"type":"string","minLength":1,"maxLength":255},"bankName":{"type":"string","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"taxId":{"type":"string","minLength":1,"maxLength":64},"country":{"type":"string","minLength":2,"maxLength":2,"default":"AR"}},"required":["cbu","accountHolderName"],"additionalProperties":false},"status":{"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change.","enum":["action_required"]},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status","statusReason"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["transfers_3_0"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"cbu":{"type":"string","minLength":22,"maxLength":22},"alias":{"type":"string","minLength":1,"maxLength":255},"bankName":{"type":"string","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"taxId":{"type":"string","minLength":1,"maxLength":64},"country":{"type":"string","minLength":2,"maxLength":2,"default":"AR"}},"required":["cbu","accountHolderName"],"additionalProperties":false},"status":{"enum":["in_review","ready","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status"],"additionalProperties":false}]},{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["wallet"]},"currency":{"type":"string","minLength":2,"maxLength":10},"ownership":{"anyOf":[{"type":"object","properties":{"type":{"enum":["self_custodied"]}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"enum":["custodial"]},"custodianName":{"type":"string","minLength":1,"maxLength":255}},"required":["type","custodianName"],"additionalProperties":false}]},"details":{"type":"object","properties":{"network":{"enum":["polygon","ethereum","base","arbitrum","optimism","bsc","avalanche"]},"address":{"type":"string","minLength":1,"maxLength":255},"label":{"type":"string","maxLength":255}},"required":["network","address"],"additionalProperties":false},"status":{"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change.","enum":["action_required"]},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","ownership","details","status","statusReason"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["wallet"]},"currency":{"type":"string","minLength":2,"maxLength":10},"ownership":{"anyOf":[{"type":"object","properties":{"type":{"enum":["self_custodied"]}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"enum":["custodial"]},"custodianName":{"type":"string","minLength":1,"maxLength":255}},"required":["type","custodianName"],"additionalProperties":false}]},"details":{"type":"object","properties":{"network":{"enum":["polygon","ethereum","base","arbitrum","optimism","bsc","avalanche"]},"address":{"type":"string","minLength":1,"maxLength":255},"label":{"type":"string","maxLength":255}},"required":["network","address"],"additionalProperties":false},"status":{"enum":["in_review","ready","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","ownership","details","status"],"additionalProperties":false}]}]}},"nextCursor":{"anyOf":[{"type":"string","nullable":true}]},"hasMore":{"type":"boolean"}},"required":["data","nextCursor","hasMore"],"additionalProperties":false},"examples":{"destinations":{"value":{"data":[{"id":"dst_7mA9sL1kBc6dV8xN2pQ4rT","type":"ach","currency":"USD","status":"ready","details":{"routingNumber":"021000021","accountNumber":"123456789","accountType":"checking","bankName":"JPMorgan Chase","accountHolderName":"Jason Swipelux","country":"US"},"createdAt":"2026-06-25T12:01:00.000Z","updatedAt":"2026-06-25T12:01:00.000Z","archivedAt":null},{"id":"dst_8xN2pQ4rT7mA9sL1kBc6dV","type":"wallet","currency":"USDC","ownership":{"type":"self_custodied"},"status":"ready","details":{"network":"base","address":"0x1111111111111111111111111111111111111111"},"createdAt":"2026-06-25T12:02:00.000Z","updatedAt":"2026-06-25T12:02:00.000Z","archivedAt":null}],"nextCursor":null,"hasMore":false}}}}}},"400":{"description":"Invalid request.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Resource not found.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"getV3CustomersByCustomerIdRecipientsByRecipientIdDestinations","tags":["recipients"],"parameters":[{"name":"cursor","in":"query","required":false,"schema":{"type":"string"},"description":"Opaque cursor returned as `nextCursor` from the previous page."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25},"description":"Maximum number of records to return. Defaults to 25."},{"name":"updatedAfter","in":"query","required":false,"schema":{"type":"string","format":"date-time"},"description":"Return only records updated at or after this RFC 3339 timestamp. Use it to recover from missed webhooks by replaying a window of changes."},{"schema":{"type":"string"},"in":"path","name":"customerId","required":true},{"schema":{"type":"string"},"in":"path","name":"recipientId","required":true}],"summary":"List recipient destinations","description":"Lists active recipient-owned bank and wallet payout destinations. When updatedAfter is supplied, archived transitions inside the inclusive recovery window are also returned."}},"/v3/customers/{customerId}/recipients/{recipientId}/destinations/{destinationId}":{"get":{"responses":{"200":{"description":"Recipient destination retrieved","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"anyOf":[{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["sepa"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"iban":{"type":"string","minLength":15,"maxLength":34},"bic":{"type":"string","minLength":8,"maxLength":11},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2}},"required":["iban","accountHolderName","country"],"additionalProperties":false},"status":{"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change.","enum":["action_required"]},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status","statusReason"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["sepa"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"iban":{"type":"string","minLength":15,"maxLength":34},"bic":{"type":"string","minLength":8,"maxLength":11},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2}},"required":["iban","accountHolderName","country"],"additionalProperties":false},"status":{"enum":["in_review","ready","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status"],"additionalProperties":false}]},{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["swift"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"swiftCode":{"type":"string","minLength":8,"maxLength":11},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2},"routingNumber":{"type":"string","minLength":9,"maxLength":9},"intermediaryBankSwift":{"type":"string","minLength":8,"maxLength":11},"intermediaryBankName":{"type":"string","minLength":1,"maxLength":255},"intermediaryBankAddress":{"type":"string","minLength":1,"maxLength":512}},"required":["swiftCode","accountNumber","bankName","accountHolderName","country"],"additionalProperties":false},"status":{"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change.","enum":["action_required"]},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status","statusReason"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["swift"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"swiftCode":{"type":"string","minLength":8,"maxLength":11},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2},"routingNumber":{"type":"string","minLength":9,"maxLength":9},"intermediaryBankSwift":{"type":"string","minLength":8,"maxLength":11},"intermediaryBankName":{"type":"string","minLength":1,"maxLength":255},"intermediaryBankAddress":{"type":"string","minLength":1,"maxLength":512}},"required":["swiftCode","accountNumber","bankName","accountHolderName","country"],"additionalProperties":false},"status":{"enum":["in_review","ready","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status"],"additionalProperties":false}]},{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["ach"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"routingNumber":{"type":"string","minLength":9,"maxLength":9},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"accountType":{"enum":["checking","savings"],"default":"checking"},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2}},"required":["routingNumber","accountNumber","bankName","accountHolderName","country"],"additionalProperties":false},"status":{"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change.","enum":["action_required"]},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status","statusReason"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["ach"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"routingNumber":{"type":"string","minLength":9,"maxLength":9},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"accountType":{"enum":["checking","savings"],"default":"checking"},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2}},"required":["routingNumber","accountNumber","bankName","accountHolderName","country"],"additionalProperties":false},"status":{"enum":["in_review","ready","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status"],"additionalProperties":false}]},{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["wire"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"routingNumber":{"type":"string","minLength":9,"maxLength":9},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"accountType":{"enum":["checking","savings"],"default":"checking"},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2}},"required":["routingNumber","accountNumber","bankName","accountHolderName","country"],"additionalProperties":false},"status":{"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change.","enum":["action_required"]},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status","statusReason"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["wire"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"routingNumber":{"type":"string","minLength":9,"maxLength":9},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"accountType":{"enum":["checking","savings"],"default":"checking"},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2}},"required":["routingNumber","accountNumber","bankName","accountHolderName","country"],"additionalProperties":false},"status":{"enum":["in_review","ready","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status"],"additionalProperties":false}]},{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["spei"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"clabe":{"type":"string","minLength":18,"maxLength":18},"institutionName":{"type":"string","minLength":1,"maxLength":255},"bankName":{"type":"string","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2,"default":"MX"}},"required":["clabe","accountHolderName"],"additionalProperties":false},"status":{"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change.","enum":["action_required"]},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status","statusReason"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["spei"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"clabe":{"type":"string","minLength":18,"maxLength":18},"institutionName":{"type":"string","minLength":1,"maxLength":255},"bankName":{"type":"string","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2,"default":"MX"}},"required":["clabe","accountHolderName"],"additionalProperties":false},"status":{"enum":["in_review","ready","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status"],"additionalProperties":false}]},{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["pse"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"bankCode":{"type":"string","minLength":1,"maxLength":64},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"documentType":{"type":"string","minLength":1,"maxLength":32},"documentNumber":{"type":"string","minLength":1,"maxLength":64},"email":{"type":"string","format":"email"},"bankName":{"type":"string","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2,"default":"CO"}},"required":["bankCode","accountNumber","documentType","documentNumber","email","accountHolderName"],"additionalProperties":false},"status":{"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change.","enum":["action_required"]},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status","statusReason"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["pse"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"bankCode":{"type":"string","minLength":1,"maxLength":64},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"documentType":{"type":"string","minLength":1,"maxLength":32},"documentNumber":{"type":"string","minLength":1,"maxLength":64},"email":{"type":"string","format":"email"},"bankName":{"type":"string","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2,"default":"CO"}},"required":["bankCode","accountNumber","documentType","documentNumber","email","accountHolderName"],"additionalProperties":false},"status":{"enum":["in_review","ready","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status"],"additionalProperties":false}]},{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["transfers_3_0"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"cbu":{"type":"string","minLength":22,"maxLength":22},"alias":{"type":"string","minLength":1,"maxLength":255},"bankName":{"type":"string","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"taxId":{"type":"string","minLength":1,"maxLength":64},"country":{"type":"string","minLength":2,"maxLength":2,"default":"AR"}},"required":["cbu","accountHolderName"],"additionalProperties":false},"status":{"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change.","enum":["action_required"]},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status","statusReason"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["transfers_3_0"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"cbu":{"type":"string","minLength":22,"maxLength":22},"alias":{"type":"string","minLength":1,"maxLength":255},"bankName":{"type":"string","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"taxId":{"type":"string","minLength":1,"maxLength":64},"country":{"type":"string","minLength":2,"maxLength":2,"default":"AR"}},"required":["cbu","accountHolderName"],"additionalProperties":false},"status":{"enum":["in_review","ready","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status"],"additionalProperties":false}]},{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["wallet"]},"currency":{"type":"string","minLength":2,"maxLength":10},"ownership":{"anyOf":[{"type":"object","properties":{"type":{"enum":["self_custodied"]}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"enum":["custodial"]},"custodianName":{"type":"string","minLength":1,"maxLength":255}},"required":["type","custodianName"],"additionalProperties":false}]},"details":{"type":"object","properties":{"network":{"enum":["polygon","ethereum","base","arbitrum","optimism","bsc","avalanche"]},"address":{"type":"string","minLength":1,"maxLength":255},"label":{"type":"string","maxLength":255}},"required":["network","address"],"additionalProperties":false},"status":{"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change.","enum":["action_required"]},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","ownership","details","status","statusReason"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["wallet"]},"currency":{"type":"string","minLength":2,"maxLength":10},"ownership":{"anyOf":[{"type":"object","properties":{"type":{"enum":["self_custodied"]}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"enum":["custodial"]},"custodianName":{"type":"string","minLength":1,"maxLength":255}},"required":["type","custodianName"],"additionalProperties":false}]},"details":{"type":"object","properties":{"network":{"enum":["polygon","ethereum","base","arbitrum","optimism","bsc","avalanche"]},"address":{"type":"string","minLength":1,"maxLength":255},"label":{"type":"string","maxLength":255}},"required":["network","address"],"additionalProperties":false},"status":{"enum":["in_review","ready","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","ownership","details","status"],"additionalProperties":false}]}]}},"required":["data"],"additionalProperties":false},"examples":{"ach":{"summary":"ACH recipient destination","description":"An ACH recipient destination uses `type: \"ach\"` and typed bank routing parameters.","value":{"data":{"id":"dst_7mA9sL1kBc6dV8xN2pQ4rT","type":"ach","currency":"USD","status":"ready","details":{"routingNumber":"021000021","accountNumber":"123456789","accountType":"checking","bankName":"JPMorgan Chase","accountHolderName":"Jason Swipelux","country":"US"},"createdAt":"2026-06-25T12:01:00.000Z","updatedAt":"2026-06-25T12:01:00.000Z","archivedAt":null}}},"wallet":{"summary":"Wallet recipient destination","description":"A wallet recipient destination uses `type: \"wallet\"` and typed network/address details.","value":{"data":{"id":"dst_8xN2pQ4rT7mA9sL1kBc6dV","type":"wallet","currency":"USDC","ownership":{"type":"self_custodied"},"status":"ready","details":{"network":"base","address":"0x1111111111111111111111111111111111111111"},"createdAt":"2026-06-25T12:02:00.000Z","updatedAt":"2026-06-25T12:02:00.000Z","archivedAt":null}}}}}}},"400":{"description":"Invalid request.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Resource not found.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"getV3CustomersByCustomerIdRecipientsByRecipientIdDestinationsByDestinationId","tags":["recipients"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"customerId","required":true},{"schema":{"type":"string"},"in":"path","name":"recipientId","required":true},{"schema":{"type":"string"},"in":"path","name":"destinationId","required":true}],"summary":"Get recipient destination","description":"Returns one recipient bank or wallet payout destination."},"delete":{"responses":{"200":{"description":"Recipient destination archived","headers":{"Idempotency-Replayed":{"description":"Present with value `true` when an idempotent request is replayed.","schema":{"type":"string","enum":["true"]}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"anyOf":[{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["sepa"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"iban":{"type":"string","minLength":15,"maxLength":34},"bic":{"type":"string","minLength":8,"maxLength":11},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2}},"required":["iban","accountHolderName","country"],"additionalProperties":false},"status":{"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change.","enum":["action_required"]},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status","statusReason"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["sepa"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"iban":{"type":"string","minLength":15,"maxLength":34},"bic":{"type":"string","minLength":8,"maxLength":11},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2}},"required":["iban","accountHolderName","country"],"additionalProperties":false},"status":{"enum":["in_review","ready","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status"],"additionalProperties":false}]},{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["swift"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"swiftCode":{"type":"string","minLength":8,"maxLength":11},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2},"routingNumber":{"type":"string","minLength":9,"maxLength":9},"intermediaryBankSwift":{"type":"string","minLength":8,"maxLength":11},"intermediaryBankName":{"type":"string","minLength":1,"maxLength":255},"intermediaryBankAddress":{"type":"string","minLength":1,"maxLength":512}},"required":["swiftCode","accountNumber","bankName","accountHolderName","country"],"additionalProperties":false},"status":{"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change.","enum":["action_required"]},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status","statusReason"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["swift"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"swiftCode":{"type":"string","minLength":8,"maxLength":11},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2},"routingNumber":{"type":"string","minLength":9,"maxLength":9},"intermediaryBankSwift":{"type":"string","minLength":8,"maxLength":11},"intermediaryBankName":{"type":"string","minLength":1,"maxLength":255},"intermediaryBankAddress":{"type":"string","minLength":1,"maxLength":512}},"required":["swiftCode","accountNumber","bankName","accountHolderName","country"],"additionalProperties":false},"status":{"enum":["in_review","ready","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status"],"additionalProperties":false}]},{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["ach"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"routingNumber":{"type":"string","minLength":9,"maxLength":9},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"accountType":{"enum":["checking","savings"],"default":"checking"},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2}},"required":["routingNumber","accountNumber","bankName","accountHolderName","country"],"additionalProperties":false},"status":{"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change.","enum":["action_required"]},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status","statusReason"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["ach"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"routingNumber":{"type":"string","minLength":9,"maxLength":9},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"accountType":{"enum":["checking","savings"],"default":"checking"},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2}},"required":["routingNumber","accountNumber","bankName","accountHolderName","country"],"additionalProperties":false},"status":{"enum":["in_review","ready","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status"],"additionalProperties":false}]},{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["wire"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"routingNumber":{"type":"string","minLength":9,"maxLength":9},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"accountType":{"enum":["checking","savings"],"default":"checking"},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2}},"required":["routingNumber","accountNumber","bankName","accountHolderName","country"],"additionalProperties":false},"status":{"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change.","enum":["action_required"]},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status","statusReason"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["wire"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"routingNumber":{"type":"string","minLength":9,"maxLength":9},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"accountType":{"enum":["checking","savings"],"default":"checking"},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2}},"required":["routingNumber","accountNumber","bankName","accountHolderName","country"],"additionalProperties":false},"status":{"enum":["in_review","ready","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status"],"additionalProperties":false}]},{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["spei"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"clabe":{"type":"string","minLength":18,"maxLength":18},"institutionName":{"type":"string","minLength":1,"maxLength":255},"bankName":{"type":"string","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2,"default":"MX"}},"required":["clabe","accountHolderName"],"additionalProperties":false},"status":{"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change.","enum":["action_required"]},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status","statusReason"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["spei"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"clabe":{"type":"string","minLength":18,"maxLength":18},"institutionName":{"type":"string","minLength":1,"maxLength":255},"bankName":{"type":"string","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2,"default":"MX"}},"required":["clabe","accountHolderName"],"additionalProperties":false},"status":{"enum":["in_review","ready","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status"],"additionalProperties":false}]},{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["pse"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"bankCode":{"type":"string","minLength":1,"maxLength":64},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"documentType":{"type":"string","minLength":1,"maxLength":32},"documentNumber":{"type":"string","minLength":1,"maxLength":64},"email":{"type":"string","format":"email"},"bankName":{"type":"string","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2,"default":"CO"}},"required":["bankCode","accountNumber","documentType","documentNumber","email","accountHolderName"],"additionalProperties":false},"status":{"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change.","enum":["action_required"]},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status","statusReason"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["pse"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"bankCode":{"type":"string","minLength":1,"maxLength":64},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"documentType":{"type":"string","minLength":1,"maxLength":32},"documentNumber":{"type":"string","minLength":1,"maxLength":64},"email":{"type":"string","format":"email"},"bankName":{"type":"string","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"country":{"type":"string","minLength":2,"maxLength":2,"default":"CO"}},"required":["bankCode","accountNumber","documentType","documentNumber","email","accountHolderName"],"additionalProperties":false},"status":{"enum":["in_review","ready","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status"],"additionalProperties":false}]},{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["transfers_3_0"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"cbu":{"type":"string","minLength":22,"maxLength":22},"alias":{"type":"string","minLength":1,"maxLength":255},"bankName":{"type":"string","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"taxId":{"type":"string","minLength":1,"maxLength":64},"country":{"type":"string","minLength":2,"maxLength":2,"default":"AR"}},"required":["cbu","accountHolderName"],"additionalProperties":false},"status":{"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change.","enum":["action_required"]},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status","statusReason"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["transfers_3_0"]},"currency":{"type":"string","minLength":3,"maxLength":3},"details":{"type":"object","properties":{"cbu":{"type":"string","minLength":22,"maxLength":22},"alias":{"type":"string","minLength":1,"maxLength":255},"bankName":{"type":"string","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","minLength":1,"maxLength":255},"taxId":{"type":"string","minLength":1,"maxLength":64},"country":{"type":"string","minLength":2,"maxLength":2,"default":"AR"}},"required":["cbu","accountHolderName"],"additionalProperties":false},"status":{"enum":["in_review","ready","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","details","status"],"additionalProperties":false}]},{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["wallet"]},"currency":{"type":"string","minLength":2,"maxLength":10},"ownership":{"anyOf":[{"type":"object","properties":{"type":{"enum":["self_custodied"]}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"enum":["custodial"]},"custodianName":{"type":"string","minLength":1,"maxLength":255}},"required":["type","custodianName"],"additionalProperties":false}]},"details":{"type":"object","properties":{"network":{"enum":["polygon","ethereum","base","arbitrum","optimism","bsc","avalanche"]},"address":{"type":"string","minLength":1,"maxLength":255},"label":{"type":"string","maxLength":255}},"required":["network","address"],"additionalProperties":false},"status":{"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change.","enum":["action_required"]},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"description":"Why this destination requires action. Present exactly when status is action_required; omitted otherwise."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","ownership","details","status","statusReason"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]},"type":{"description":"Recipient destination type. Closed enum — exhaustive; additions would be a breaking change.","enum":["wallet"]},"currency":{"type":"string","minLength":2,"maxLength":10},"ownership":{"anyOf":[{"type":"object","properties":{"type":{"enum":["self_custodied"]}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"enum":["custodial"]},"custodianName":{"type":"string","minLength":1,"maxLength":255}},"required":["type","custodianName"],"additionalProperties":false}]},"details":{"type":"object","properties":{"network":{"enum":["polygon","ethereum","base","arbitrum","optimism","bsc","avalanche"]},"address":{"type":"string","minLength":1,"maxLength":255},"label":{"type":"string","maxLength":255}},"required":["network","address"],"additionalProperties":false},"status":{"enum":["in_review","ready","archived"],"description":"Destination status. `ready` means lifecycle checks passed. Ready bank destinations can be fiat quote targets when other quote checks pass; ready wallet destinations can be stablecoin-move targets when their network and currency match the source. Closed enum — exhaustive; additions would be a breaking change."}},"required":["id","createdAt","updatedAt","archivedAt","type","currency","ownership","details","status"],"additionalProperties":false}]}]}},"required":["data"],"additionalProperties":false},"examples":{"archived":{"value":{"data":{"id":"dst_7mA9sL1kBc6dV8xN2pQ4rT","type":"ach","currency":"USD","status":"archived","details":{"routingNumber":"021000021","accountNumber":"123456789","accountType":"checking","bankName":"JPMorgan Chase","accountHolderName":"Jason Swipelux","country":"US"},"createdAt":"2026-06-25T12:01:00.000Z","updatedAt":"2026-06-25T12:07:00.000Z","archivedAt":"2026-06-25T12:07:00.000Z"}}}}}}},"400":{"description":"Invalid request.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Resource not found.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"deleteV3CustomersByCustomerIdRecipientsByRecipientIdDestinationsByDestinationId","tags":["recipients"],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":255},"example":"idem_20260626_0001","description":"Required for effectful v3 requests (POST, PATCH, PUT, DELETE). Reuse the same key with the same body to replay the cached response."},{"schema":{"type":"string"},"in":"path","name":"customerId","required":true},{"schema":{"type":"string"},"in":"path","name":"recipientId","required":true},{"schema":{"type":"string"},"in":"path","name":"destinationId","required":true}],"summary":"Archive recipient destination","description":"Archives one recipient payout destination."}},"/v3/customers/{customerId}/rules":{"post":{"responses":{"201":{"description":"Rule created","headers":{"Idempotency-Replayed":{"description":"Present with value `true` when an idempotent request is replayed.","schema":{"type":"string","enum":["true"]}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"customerId":{"type":"string"},"status":{"enum":["active","paused","archived"]},"trigger":{"type":"object","properties":{"type":{"enum":["funds_received"]},"accountId":{"type":"string"}},"required":["type","accountId"]},"action":{"type":"object","properties":{"type":{"enum":["transfer"]},"target":{"type":"object","properties":{"type":{"enum":["account","destination"]},"id":{"type":"string"}},"required":["type","id"]}},"required":["type","target"]},"label":{"type":"string"},"metadata":{"type":"object","additionalProperties":{}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]}},"required":["id","customerId","status","trigger","action","createdAt","updatedAt","archivedAt"]}},"required":["data"]},"examples":{"sweep":{"summary":"Custodial → non-custodial wallet sweep","description":"Funds received on the custodial wallet account are transferred to a recipient wallet destination.","value":{"data":{"id":"rul_8Q2mVtP0aXk1LzR4nJ6b7c","customerId":"cus_4rT7mA9sL1kBc6dV8xN2pQ","status":"active","trigger":{"type":"funds_received","accountId":"acc_6dV8xN2pQ4rT7mA9sL1kBc"},"action":{"type":"transfer","target":{"type":"destination","id":"dst_7mA9sL1kBc6dV8xN2pQ4rT"}},"label":"Operating wallet sweep","createdAt":"2026-07-10T09:15:00.000Z","updatedAt":"2026-07-10T09:15:00.000Z","archivedAt":null}}},"consolidation":{"summary":"Treasury consolidation","value":{"data":{"id":"rul_1LzR4nJ6b7c8Q2mVtP0aXk","customerId":"cus_4rT7mA9sL1kBc6dV8xN2pQ","status":"active","trigger":{"type":"funds_received","accountId":"acc_2pQ4rT7mA9sL1kBc6dV8xN"},"action":{"type":"transfer","target":{"type":"account","id":"acc_9sL1kBc6dV8xN2pQ4rT7mA"}},"label":"Treasury consolidation","createdAt":"2026-07-10T09:15:00.000Z","updatedAt":"2026-07-10T09:15:00.000Z","archivedAt":null}}}}}}},"400":{"description":"Invalid request.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Resource not found.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"409":{"description":"The trigger account already has a live rule (`rule_already_exists`; the conflicting id is returned as `conflictingRuleId`), or the Idempotency-Key was reused with a different body.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"postV3CustomersByCustomerIdRules","tags":["rules"],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":255},"example":"idem_20260626_0001","description":"Required for effectful v3 requests (POST, PATCH, PUT, DELETE). Reuse the same key with the same body to replay the cached response."},{"schema":{"type":"string"},"in":"path","name":"customerId","required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["trigger","action"],"properties":{"trigger":{"type":"object","required":["type","accountId"],"properties":{"type":{"type":"string","enum":["funds_received"],"description":"Fires when funds become available on the trigger account. Fiat deposits are matched once they settle into the issued bank account's settlement wallet account."},"accountId":{"type":"string","pattern":"^acc_[a-zA-Z0-9]+$","description":"Custodial wallet account watched by this rule.","example":"acc_6dV8xN2pQ4rT7mA9sL1kBc"}}},"action":{"type":"object","required":["type","target"],"properties":{"type":{"type":"string","enum":["transfer"],"description":"Transfers the received funds to the target. The action type carries the amount semantics; future behaviours arrive as new action types."},"target":{"type":"object","required":["type","id"],"description":"Where the received funds go: `account` for another custodial wallet account, or `destination` for a recipient destination (including non-custodial wallet destinations).","properties":{"type":{"type":"string","enum":["account","destination"]},"id":{"type":"string","description":"Account id (acc_…) for account targets; recipient destination id (dst_…) for destination targets.","example":"dst_7mA9sL1kBc6dV8xN2pQ4rT"}}}}},"label":{"type":"string","maxLength":255},"metadata":{"type":"object","additionalProperties":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}}}},"examples":{"sweep":{"summary":"Sweep a custodial wallet to a non-custodial wallet","value":{"trigger":{"type":"funds_received","accountId":"acc_6dV8xN2pQ4rT7mA9sL1kBc"},"action":{"type":"transfer","target":{"type":"destination","id":"dst_7mA9sL1kBc6dV8xN2pQ4rT"}},"label":"Operating wallet sweep"}},"consolidation":{"summary":"Consolidate into a treasury account","value":{"trigger":{"type":"funds_received","accountId":"acc_2pQ4rT7mA9sL1kBc6dV8xN"},"action":{"type":"transfer","target":{"type":"account","id":"acc_9sL1kBc6dV8xN2pQ4rT7mA"}},"label":"Treasury consolidation"}}}}}},"summary":"Create rule","description":"Create a standing instruction: when funds become available on the trigger account, transfer them to the target. At most one non-archived rule may watch a given trigger account."},"get":{"responses":{"200":{"description":"Rules retrieved","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"customerId":{"type":"string"},"status":{"enum":["active","paused","archived"]},"trigger":{"type":"object","properties":{"type":{"enum":["funds_received"]},"accountId":{"type":"string"}},"required":["type","accountId"]},"action":{"type":"object","properties":{"type":{"enum":["transfer"]},"target":{"type":"object","properties":{"type":{"enum":["account","destination"]},"id":{"type":"string"}},"required":["type","id"]}},"required":["type","target"]},"label":{"type":"string"},"metadata":{"type":"object","additionalProperties":{}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]}},"required":["id","customerId","status","trigger","action","createdAt","updatedAt","archivedAt"]}},"nextCursor":{"anyOf":[{"type":"string","nullable":true}]},"hasMore":{"type":"boolean"}},"required":["data","nextCursor","hasMore"]},"examples":{"rules":{"value":{"data":[{"id":"rul_8Q2mVtP0aXk1LzR4nJ6b7c","customerId":"cus_4rT7mA9sL1kBc6dV8xN2pQ","status":"active","trigger":{"type":"funds_received","accountId":"acc_6dV8xN2pQ4rT7mA9sL1kBc"},"action":{"type":"transfer","target":{"type":"destination","id":"dst_7mA9sL1kBc6dV8xN2pQ4rT"}},"label":"Operating wallet sweep","createdAt":"2026-07-10T09:15:00.000Z","updatedAt":"2026-07-10T09:15:00.000Z","archivedAt":null}],"nextCursor":null,"hasMore":false}}}}}},"400":{"description":"Invalid request.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Resource not found.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"getV3CustomersByCustomerIdRules","tags":["rules"],"parameters":[{"name":"cursor","in":"query","required":false,"schema":{"type":"string"},"description":"Opaque cursor returned as `nextCursor` from the previous page."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25},"description":"Maximum number of records to return. Defaults to 25."},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["active","paused","archived"]}},{"name":"updatedAfter","in":"query","required":false,"schema":{"type":"string","format":"date-time"},"description":"Return only records updated at or after this RFC 3339 timestamp. Use it to recover from missed webhooks by replaying a window of changes."},{"schema":{"type":"string"},"in":"path","name":"customerId","required":true}],"summary":"List rules","description":"List the customer's standing transfer instructions with optional status and updated-after filters."}},"/v3/customers/{customerId}/rules/{ruleId}":{"get":{"responses":{"200":{"description":"Rule retrieved","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"customerId":{"type":"string"},"status":{"enum":["active","paused","archived"]},"trigger":{"type":"object","properties":{"type":{"enum":["funds_received"]},"accountId":{"type":"string"}},"required":["type","accountId"]},"action":{"type":"object","properties":{"type":{"enum":["transfer"]},"target":{"type":"object","properties":{"type":{"enum":["account","destination"]},"id":{"type":"string"}},"required":["type","id"]}},"required":["type","target"]},"label":{"type":"string"},"metadata":{"type":"object","additionalProperties":{}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]}},"required":["id","customerId","status","trigger","action","createdAt","updatedAt","archivedAt"]}},"required":["data"]},"examples":{"sweep":{"summary":"Custodial → non-custodial wallet sweep","description":"Funds received on the custodial wallet account are transferred to a recipient wallet destination.","value":{"data":{"id":"rul_8Q2mVtP0aXk1LzR4nJ6b7c","customerId":"cus_4rT7mA9sL1kBc6dV8xN2pQ","status":"active","trigger":{"type":"funds_received","accountId":"acc_6dV8xN2pQ4rT7mA9sL1kBc"},"action":{"type":"transfer","target":{"type":"destination","id":"dst_7mA9sL1kBc6dV8xN2pQ4rT"}},"label":"Operating wallet sweep","createdAt":"2026-07-10T09:15:00.000Z","updatedAt":"2026-07-10T09:15:00.000Z","archivedAt":null}}},"consolidation":{"summary":"Treasury consolidation","value":{"data":{"id":"rul_1LzR4nJ6b7c8Q2mVtP0aXk","customerId":"cus_4rT7mA9sL1kBc6dV8xN2pQ","status":"active","trigger":{"type":"funds_received","accountId":"acc_2pQ4rT7mA9sL1kBc6dV8xN"},"action":{"type":"transfer","target":{"type":"account","id":"acc_9sL1kBc6dV8xN2pQ4rT7mA"}},"label":"Treasury consolidation","createdAt":"2026-07-10T09:15:00.000Z","updatedAt":"2026-07-10T09:15:00.000Z","archivedAt":null}}}}}}},"400":{"description":"Invalid request.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Resource not found.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"getV3CustomersByCustomerIdRulesByRuleId","tags":["rules"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"customerId","required":true},{"schema":{"type":"string"},"in":"path","name":"ruleId","required":true}],"summary":"Get rule","description":"Archived rules stay readable for audit."},"patch":{"responses":{"200":{"description":"Rule updated","headers":{"Idempotency-Replayed":{"description":"Present with value `true` when an idempotent request is replayed.","schema":{"type":"string","enum":["true"]}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"customerId":{"type":"string"},"status":{"enum":["active","paused","archived"]},"trigger":{"type":"object","properties":{"type":{"enum":["funds_received"]},"accountId":{"type":"string"}},"required":["type","accountId"]},"action":{"type":"object","properties":{"type":{"enum":["transfer"]},"target":{"type":"object","properties":{"type":{"enum":["account","destination"]},"id":{"type":"string"}},"required":["type","id"]}},"required":["type","target"]},"label":{"type":"string"},"metadata":{"type":"object","additionalProperties":{}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]}},"required":["id","customerId","status","trigger","action","createdAt","updatedAt","archivedAt"]}},"required":["data"]},"examples":{"sweep":{"summary":"Custodial → non-custodial wallet sweep","description":"Funds received on the custodial wallet account are transferred to a recipient wallet destination.","value":{"data":{"id":"rul_8Q2mVtP0aXk1LzR4nJ6b7c","customerId":"cus_4rT7mA9sL1kBc6dV8xN2pQ","status":"active","trigger":{"type":"funds_received","accountId":"acc_6dV8xN2pQ4rT7mA9sL1kBc"},"action":{"type":"transfer","target":{"type":"destination","id":"dst_7mA9sL1kBc6dV8xN2pQ4rT"}},"label":"Operating wallet sweep","createdAt":"2026-07-10T09:15:00.000Z","updatedAt":"2026-07-10T09:15:00.000Z","archivedAt":null}}},"consolidation":{"summary":"Treasury consolidation","value":{"data":{"id":"rul_1LzR4nJ6b7c8Q2mVtP0aXk","customerId":"cus_4rT7mA9sL1kBc6dV8xN2pQ","status":"active","trigger":{"type":"funds_received","accountId":"acc_2pQ4rT7mA9sL1kBc6dV8xN"},"action":{"type":"transfer","target":{"type":"account","id":"acc_9sL1kBc6dV8xN2pQ4rT7mA"}},"label":"Treasury consolidation","createdAt":"2026-07-10T09:15:00.000Z","updatedAt":"2026-07-10T09:15:00.000Z","archivedAt":null}}}}}}},"400":{"description":"Invalid request.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Resource not found.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"409":{"description":"The rule is archived and can no longer change.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"patchV3CustomersByCustomerIdRulesByRuleId","tags":["rules"],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":255},"example":"idem_20260626_0001","description":"Required for effectful v3 requests (POST, PATCH, PUT, DELETE). Reuse the same key with the same body to replay the cached response."},{"schema":{"type":"string"},"in":"path","name":"customerId","required":true},{"schema":{"type":"string"},"in":"path","name":"ruleId","required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["active","paused"],"description":"Pause or resume the rule. Archiving is terminal and only happens through DELETE."},"label":{"type":"string","maxLength":255},"metadata":{"type":"object","additionalProperties":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}}}},"examples":{"pause":{"summary":"Pause the rule","value":{"status":"paused"}},"relabel":{"summary":"Update the label","value":{"label":"Payroll float sweep"}}}}}},"summary":"Update rule","description":"Pause or resume the rule and edit its label or metadata. Archived rules are read-only (`rule_archived`)."},"delete":{"responses":{"200":{"description":"Rule archived","headers":{"Idempotency-Replayed":{"description":"Present with value `true` when an idempotent request is replayed.","schema":{"type":"string","enum":["true"]}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"customerId":{"type":"string"},"status":{"enum":["active","paused","archived"]},"trigger":{"type":"object","properties":{"type":{"enum":["funds_received"]},"accountId":{"type":"string"}},"required":["type","accountId"]},"action":{"type":"object","properties":{"type":{"enum":["transfer"]},"target":{"type":"object","properties":{"type":{"enum":["account","destination"]},"id":{"type":"string"}},"required":["type","id"]}},"required":["type","target"]},"label":{"type":"string"},"metadata":{"type":"object","additionalProperties":{}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string","nullable":true}]}},"required":["id","customerId","status","trigger","action","createdAt","updatedAt","archivedAt"]}},"required":["data"]},"examples":{"sweep":{"summary":"Custodial → non-custodial wallet sweep","description":"Funds received on the custodial wallet account are transferred to a recipient wallet destination.","value":{"data":{"id":"rul_8Q2mVtP0aXk1LzR4nJ6b7c","customerId":"cus_4rT7mA9sL1kBc6dV8xN2pQ","status":"active","trigger":{"type":"funds_received","accountId":"acc_6dV8xN2pQ4rT7mA9sL1kBc"},"action":{"type":"transfer","target":{"type":"destination","id":"dst_7mA9sL1kBc6dV8xN2pQ4rT"}},"label":"Operating wallet sweep","createdAt":"2026-07-10T09:15:00.000Z","updatedAt":"2026-07-10T09:15:00.000Z","archivedAt":null}}},"consolidation":{"summary":"Treasury consolidation","value":{"data":{"id":"rul_1LzR4nJ6b7c8Q2mVtP0aXk","customerId":"cus_4rT7mA9sL1kBc6dV8xN2pQ","status":"active","trigger":{"type":"funds_received","accountId":"acc_2pQ4rT7mA9sL1kBc6dV8xN"},"action":{"type":"transfer","target":{"type":"account","id":"acc_9sL1kBc6dV8xN2pQ4rT7mA"}},"label":"Treasury consolidation","createdAt":"2026-07-10T09:15:00.000Z","updatedAt":"2026-07-10T09:15:00.000Z","archivedAt":null}}}}}}},"400":{"description":"Invalid request.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Resource not found.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"409":{"description":"The rule is already archived.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"deleteV3CustomersByCustomerIdRulesByRuleId","tags":["rules"],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":255},"example":"idem_20260626_0001","description":"Required for effectful v3 requests (POST, PATCH, PUT, DELETE). Reuse the same key with the same body to replay the cached response."},{"schema":{"type":"string"},"in":"path","name":"customerId","required":true},{"schema":{"type":"string"},"in":"path","name":"ruleId","required":true}],"summary":"Archive rule","description":"Archiving is terminal and frees the trigger account for a new rule. The archived rule stays readable."}},"/v3/rates":{"get":{"responses":{"200":{"description":"Indicative rate returned","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"fromCurrency":{"type":"string","description":"Source fiat currency code, uppercased."},"toCurrency":{"type":"string","description":"Destination fiat currency code, uppercased."},"rate":{"type":"string","description":"Indicative exchange rate as a decimal string."},"asOf":{"type":"string","description":"Timestamp or source rate date for this indicative rate."},"indicative":{"enum":[true]}},"required":["fromCurrency","toCurrency","rate","asOf","indicative"]}},"required":["data"]}}}},"400":{"description":"Invalid or unsupported currency","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Resource not found.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"502":{"description":"FX rate source is unavailable","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"getV3Rates","tags":["money-movement"],"parameters":[{"name":"fromCurrency","in":"query","required":true,"schema":{"type":"string","minLength":1}},{"name":"toCurrency","in":"query","required":true,"schema":{"type":"string","minLength":1}}],"summary":"Get indicative FX rate","description":"Returns an indicative fiat FX rate. Executable pricing is returned by quote creation."}},"/v3/quotes/{quoteId}":{"get":{"responses":{"200":{"description":"Quote returned","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"customerId":{"type":"string"},"capabilityId":{"type":"string"},"institutionId":{"type":"string","description":"Public institution id for bank-backed movement capabilities when exactly one institution backs the quote."},"externalId":{"type":"string"},"mode":{"enum":["exact_in","exact_out"],"description":"Quote pricing mode. Closed enum — exhaustive; additions would be a breaking change."},"direction":{"enum":["fiat_to_stablecoin","stablecoin_to_fiat","stablecoin_move"],"description":"Quote direction. Closed enum — exhaustive; additions would be a breaking change."},"source":{"anyOf":[{"type":"object","properties":{"type":{"enum":["external"]}},"required":["type"]},{"type":"object","properties":{"type":{"enum":["account"]},"id":{"type":"string","description":"Source account for stablecoin-funded movements."}},"required":["type","id"]}],"description":"Resolved funding source. External for fiat-funded quotes and an account for stablecoin-funded quotes. May be absent on older stablecoin-funded quotes."},"destination":{"anyOf":[{"type":"object","properties":{"type":{"enum":["account"]},"id":{"type":"string","pattern":"^acc_[a-zA-Z0-9]+$"}},"required":["type","id"]},{"type":"object","properties":{"type":{"enum":["destination"]},"id":{"type":"string","pattern":"^dst_[a-zA-Z0-9]+$"}},"required":["type","id"]}]},"in":{"type":"object","properties":{"amount":{"type":"string"},"currency":{"type":"string"},"network":{"enum":["polygon","ethereum","base","arbitrum","optimism","bsc","avalanche"],"description":"Blockchain network for a crypto leg. Absent for fiat legs and uncatalogued networks. Blockchain network id. Open enum — values are added over time; clients must tolerate unknown values."}},"required":["amount","currency"]},"out":{"type":"object","properties":{"amount":{"type":"string"},"currency":{"type":"string"},"network":{"enum":["polygon","ethereum","base","arbitrum","optimism","bsc","avalanche"],"description":"Blockchain network for a crypto leg. Absent for fiat legs and uncatalogued networks. Blockchain network id. Open enum — values are added over time; clients must tolerate unknown values."}},"required":["amount","currency"]},"rate":{"type":"string"},"fees":{"type":"array","items":{"type":"object","properties":{"beneficiary":{"anyOf":[{"enum":["developer"]},{"enum":["service"]}],"description":"Fee beneficiary. Closed enum — exhaustive; additions would be a breaking change."},"amount":{"type":"string"},"currency":{"type":"string"},"rule":{"type":"object","properties":{"fixed":{"type":"string"},"bips":{"type":"number"}},"required":["fixed","bips"]}},"required":["beneficiary","amount","currency"]}},"status":{"enum":["active","executed","expired","failed"],"description":"Quote status. Closed enum — exhaustive; additions would be a breaking change."},"transferId":{"anyOf":[{"type":"string","nullable":true}]},"createdAt":{"type":"string"},"expiresAt":{"type":"string"}},"required":["id","customerId","capabilityId","mode","direction","destination","in","out","rate","fees","status","transferId","createdAt","expiresAt"]}},"required":["data"]},"examples":{"fiatToStablecoin":{"summary":"Fiat to stablecoin","value":{"data":{"customerId":"cus_7F3pL2nQ9xA5mW8kR1sT4v","externalId":"quote-ref-123","mode":"exact_in","rate":"1.00","status":"active","transferId":null,"createdAt":"2026-06-25T12:00:00.000Z","expiresAt":"2026-06-25T12:05:00.000Z","id":"quo_6dV8xN2pQ4rT7mA9sL1kBc","capabilityId":"ach_pooled","institutionId":"jpmorgan","direction":"fiat_to_stablecoin","source":{"type":"external"},"in":{"amount":"150.00","currency":"USD"},"out":{"amount":"145.00","currency":"USDC","network":"base"},"destination":{"type":"account","id":"acc_3eG7xN2pQ4rT8mA1sL6dVc"},"fees":[{"beneficiary":"developer","amount":"0.88","currency":"USDC","rule":{"fixed":"0.50","bips":25}},{"beneficiary":"service","amount":"4.12","currency":"USDC"}]}}},"stablecoinToFiat":{"summary":"Stablecoin to fiat","value":{"data":{"customerId":"cus_7F3pL2nQ9xA5mW8kR1sT4v","externalId":"quote-ref-123","mode":"exact_in","rate":"1.00","status":"active","transferId":null,"createdAt":"2026-06-25T12:00:00.000Z","expiresAt":"2026-06-25T12:05:00.000Z","id":"quo_9zK4pQ8rT2mA7sL1dV6xNc","capabilityId":"ach_pooled","institutionId":"jpmorgan","direction":"stablecoin_to_fiat","source":{"type":"account","id":"acc_base123"},"in":{"amount":"150.00","currency":"USDC","network":"base"},"out":{"amount":"145.00","currency":"USD"},"destination":{"type":"account","id":"acc_7mA9sL1kBc6dV8xN2pQ4rT"},"fees":[{"beneficiary":"developer","amount":"0.88","currency":"USDC","rule":{"fixed":"0.50","bips":25}},{"beneficiary":"service","amount":"4.12","currency":"USDC"}]}}},"stablecoinMove":{"summary":"Stablecoin move","value":{"data":{"customerId":"cus_7F3pL2nQ9xA5mW8kR1sT4v","externalId":"quote-ref-123","mode":"exact_in","rate":"1.00","status":"active","transferId":null,"createdAt":"2026-06-25T12:00:00.000Z","expiresAt":"2026-06-25T12:05:00.000Z","id":"quo_4mT8xN2pQ7rV6sL1dZ9yPa","capabilityId":"stablecoin_transfers","direction":"stablecoin_move","source":{"type":"account","id":"acc_base123"},"in":{"amount":"1.234567","currency":"USDC","network":"base"},"out":{"amount":"1.234567","currency":"USDC","network":"base"},"destination":{"type":"destination","id":"dst_8xN2pQ4rT7mA9sL1kBc6dV"},"fees":[{"beneficiary":"service","amount":"0.00","currency":"USD"}]}}}}}}},"400":{"description":"Invalid request.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Quote not found","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"getV3QuotesByQuoteId","tags":["money-movement"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"quoteId","required":true}],"summary":"Get quote","description":"Returns a v3 quote by id. Only quotes created through `POST /v3/quotes` are exposed here."}},"/v3/transfers":{"get":{"responses":{"200":{"description":"Transfers returned","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"origin":{"enum":["quoted","inbound_deposit"],"description":"How the transfer was created. `quoted` comes from a v3 quote; `inbound_deposit` comes from reconciliation. Open enum — values are added over time; clients must tolerate unknown values."},"quoteId":{"type":"string","description":"Quote id. Always present for `quoted` transfers and absent for `inbound_deposit` transfers."},"customerId":{"type":"string"},"capabilityId":{"type":"string","description":"Capability id when a capability applies. Absent for inbound deposits that do not map to a capability."},"openTaskIds":{"type":"array","items":{"type":"string"},"description":"Ids of transfer-scoped tasks with status `action_required` or `in_review`, ordered by creation time and id. Empty when nothing is open."},"sender":{"type":"object","properties":{"name":{"type":"string"},"bankName":{"type":"string"},"accountLast4":{"type":"string","pattern":"^\\d{4}$"}},"required":[],"description":"Sender evidence when available on merchant transfer GET responses. Omitted from webhook payloads."},"institutionId":{"type":"string","description":"Public institution id echoed from the quote when the backing bank capability has a single institution."},"externalId":{"type":"string"},"method":{"type":"string","description":"Movement method derived from the capability for quoted transfers or normalized from the receiving rail for inbound deposits. Open enum — values are added over time; clients must tolerate unknown values."},"direction":{"enum":["fiat_to_stablecoin","stablecoin_to_fiat","stablecoin_move"],"description":"Transfer direction. Closed enum — exhaustive; additions would be a breaking change."},"state":{"enum":["awaiting_funds","processing","action_required","completed","failed","canceled"],"description":"Public transfer state. `processing` covers funds received through settlement. `action_required` is projected when an otherwise in-flight transfer has open transfer tasks. `canceled` is projected when an unfunded deposit window expires. Closed enum — exhaustive; additions would be a breaking change."},"stateDetail":{"anyOf":[{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"nullable":true}],"description":"Structured reason for the current state. Nullable on happy-path states; required for action_required and other non-terminal blocking/failure states."},"amounts":{"type":"object","properties":{"in":{"type":"object","properties":{"amount":{"type":"string"},"currency":{"type":"string"},"network":{"enum":["polygon","ethereum","base","arbitrum","optimism","bsc","avalanche"],"description":"Blockchain network for a crypto leg. Absent for fiat legs and uncatalogued networks. Blockchain network id. Open enum — values are added over time; clients must tolerate unknown values."}},"required":["amount","currency"]},"out":{"type":"object","properties":{"amount":{"type":"string"},"currency":{"type":"string"},"network":{"enum":["polygon","ethereum","base","arbitrum","optimism","bsc","avalanche"],"description":"Blockchain network for a crypto leg. Absent for fiat legs and uncatalogued networks. Blockchain network id. Open enum — values are added over time; clients must tolerate unknown values."}},"required":["amount","currency"]},"settled":{"type":"object","properties":{"amount":{"type":"string"},"currency":{"type":"string"}},"required":["amount","currency"],"description":"Actually delivered amount; present once completed."}},"required":["in","out"]},"fees":{"type":"array","items":{"type":"object","properties":{"beneficiary":{"anyOf":[{"enum":["developer"]},{"enum":["service"]}],"description":"Fee beneficiary. Closed enum — exhaustive; additions would be a breaking change."},"amount":{"type":"string"},"currency":{"type":"string"},"rule":{"type":"object","properties":{"fixed":{"type":"string"},"bips":{"type":"number"}},"required":["fixed","bips"]}},"required":["beneficiary","amount","currency"]},"description":"Applied fee snapshot, using the same shape as the quote fee lines."},"source":{"anyOf":[{"type":"object","properties":{"type":{"enum":["external"]}},"required":["type"]},{"type":"object","properties":{"type":{"enum":["account"]},"id":{"type":"string","description":"Source account for stablecoin-funded movements."}},"required":["type","id"]}]},"destination":{"anyOf":[{"type":"object","properties":{"type":{"enum":["account"]},"id":{"type":"string","pattern":"^acc_[a-zA-Z0-9]+$"}},"required":["type","id"]},{"type":"object","properties":{"type":{"enum":["destination"]},"id":{"type":"string","pattern":"^dst_[a-zA-Z0-9]+$"}},"required":["type","id"]}]},"references":{"type":"object","properties":{"transactionHash":{"type":"string"},"traceNumber":{"type":"string","description":"Provider payment tracking reference, such as an ACH trace number or wire reference. Absent when unavailable."},"imad":{"type":"string"},"uetr":{"type":"string"},"explorerUrl":{"type":"string","description":"Block-explorer link for the crypto leg, derived from the wallet network. Absent when the network has no catalogued explorer."},"returnedTransferId":{"anyOf":[{"type":"string","nullable":true}],"description":"Return-movement id; currently always null."}},"required":["returnedTransferId"]},"memo":{"type":"string"},"supportingDocuments":{"type":"array","items":{"type":"string"}},"instructions":{"anyOf":[{"anyOf":[{"type":"object","properties":{"type":{"enum":["bank"]},"method":{"enum":["ach","wire","rtp","sepa","swift","spei","transfers_3_0","uaefts","faster_payments"],"description":"Bank instruction method. Open enum — values are added over time; clients must tolerate unknown values."},"amount":{"type":"object","properties":{"amount":{"type":"string"},"currency":{"type":"string"}},"required":["amount","currency"]},"accountHolderName":{"type":"string"},"bankName":{"type":"string"},"details":{"type":"object","additionalProperties":{"type":"string"},"description":"Per-method banking coordinates in camelCase: routingNumber/accountNumber/accountType (ach, wire, rtp), iban/bic (sepa, uaefts), swiftCode/accountNumber (swift), sortCode/accountNumber (faster_payments), clabe (spei), cbu (transfers_3_0)."},"reference":{"type":"object","properties":{"value":{"type":"string"},"required":{"type":"boolean","description":"Whether the deposit must carry this reference to be matched. Pooled accounts match deposits by reference; named virtual accounts match by account number."}},"required":["value","required"],"description":"Payment reference to include with the deposit."},"localAmount":{"type":"object","properties":{"amount":{"type":"string"},"currency":{"type":"string"}},"required":["amount","currency"],"description":"Amount in the local settlement currency when the rail settles in a currency different from the quoted in amount."},"expiresAt":{"type":"string"}},"required":["type","method","amount","details"]},{"type":"object","properties":{"type":{"enum":["code"]},"method":{"enum":["pix"],"description":"Code instruction method. Open enum — values are added over time; clients must tolerate unknown values."},"amount":{"type":"object","properties":{"amount":{"type":"string"},"currency":{"type":"string"}},"required":["amount","currency"]},"code":{"type":"string","description":"Copyable payment code the customer pastes into their banking app."},"localAmount":{"type":"object","properties":{"amount":{"type":"string"},"currency":{"type":"string"}},"required":["amount","currency"]},"expiresAt":{"type":"string"}},"required":["type","method","amount","code"]},{"type":"object","properties":{"type":{"enum":["redirect"]},"method":{"enum":["pse"],"description":"Redirect instruction method. Open enum — values are added over time; clients must tolerate unknown values."},"amount":{"type":"object","properties":{"amount":{"type":"string"},"currency":{"type":"string"}},"required":["amount","currency"]},"url":{"type":"string","description":"Hosted payment page the customer completes the payment on."},"localAmount":{"type":"object","properties":{"amount":{"type":"string"},"currency":{"type":"string"}},"required":["amount","currency"]},"expiresAt":{"type":"string"}},"required":["type","amount","url"]}],"nullable":true}],"description":"Deposit instructions, discriminated by `type`. `null` for payout-side transfers, which are funded from the source account."},"timestamps":{"type":"object","properties":{"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"fundsReceivedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Currently always null."},"completedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Currently always null."},"failedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Currently always null."},"returnedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Currently always null."},"settledAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Currently always null."}},"required":["createdAt","updatedAt","fundsReceivedAt","completedAt","failedAt","returnedAt","settledAt"]}},"required":["id","origin","customerId","openTaskIds","method","direction","state","stateDetail","amounts","fees","source","destination","references","instructions","timestamps"]}},"nextCursor":{"anyOf":[{"type":"string","nullable":true}]},"hasMore":{"type":"boolean"}},"required":["data","nextCursor","hasMore"]}}}},"400":{"description":"Invalid query parameter","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Resource not found.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"getV3Transfers","tags":["money-movement"],"parameters":[{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer"}},{"name":"customerId","in":"query","schema":{"type":"string"}},{"name":"state","in":"query","schema":{"type":"string","enum":["awaiting_funds","processing","action_required","completed","failed","canceled"]},"description":"Filter by transfer state. Closed enum — exhaustive; additions would be a breaking change."},{"name":"method","in":"query","schema":{"type":"string"},"description":"Filter by movement method. Open enum — values are added over time; clients must tolerate unknown values."},{"name":"direction","in":"query","schema":{"type":"string","enum":["fiat_to_stablecoin","stablecoin_to_fiat","stablecoin_move"]},"description":"Filter by transfer direction. Closed enum — exhaustive; additions would be a breaking change."},{"name":"quoteId","in":"query","schema":{"type":"string"}},{"name":"externalId","in":"query","schema":{"type":"string"}},{"name":"origin","in":"query","schema":{"type":"string","enum":["quoted","inbound_deposit"]},"description":"Filter by transfer origin. Open enum — values are added over time; clients must tolerate unknown values."},{"name":"accountId","in":"query","schema":{"type":"string","pattern":"^acc_[a-zA-Z0-9]+$"},"description":"Match transfers whose source or destination is this account."},{"name":"createdAfter","in":"query","schema":{"type":"string"}},{"name":"createdBefore","in":"query","schema":{"type":"string"}},{"name":"updatedAfter","in":"query","required":false,"schema":{"type":"string","format":"date-time"},"description":"Return only records updated at or after this RFC 3339 timestamp. Use it to recover from missed webhooks by replaying a window of changes."}],"summary":"List transfers","description":"Lists quoted transfers and reconciled inbound deposits in deterministic createdAt/id descending order. Filters are customerId, public state, method, direction, origin, source-or-destination accountId, quoteId, exact externalId, createdAt range, and updatedAfter (the missed-webhook recovery path)."},"post":{"responses":{"201":{"description":"Transfer created","headers":{"Idempotency-Replayed":{"description":"Present with value `true` when an idempotent request is replayed.","schema":{"type":"string","enum":["true"]}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"origin":{"enum":["quoted","inbound_deposit"],"description":"How the transfer was created. `quoted` comes from a v3 quote; `inbound_deposit` comes from reconciliation. Open enum — values are added over time; clients must tolerate unknown values."},"quoteId":{"type":"string","description":"Quote id. Always present for `quoted` transfers and absent for `inbound_deposit` transfers."},"customerId":{"type":"string"},"capabilityId":{"type":"string","description":"Capability id when a capability applies. Absent for inbound deposits that do not map to a capability."},"openTaskIds":{"type":"array","items":{"type":"string"},"description":"Ids of transfer-scoped tasks with status `action_required` or `in_review`, ordered by creation time and id. Empty when nothing is open."},"institutionId":{"type":"string","description":"Public institution id echoed from the quote when the backing bank capability has a single institution."},"externalId":{"type":"string"},"method":{"type":"string","description":"Movement method derived from the capability for quoted transfers or normalized from the receiving rail for inbound deposits. Open enum — values are added over time; clients must tolerate unknown values."},"direction":{"enum":["fiat_to_stablecoin","stablecoin_to_fiat","stablecoin_move"],"description":"Transfer direction. Closed enum — exhaustive; additions would be a breaking change."},"state":{"enum":["awaiting_funds","processing","action_required","completed","failed","canceled"],"description":"Public transfer state. `processing` covers funds received through settlement. `action_required` is projected when an otherwise in-flight transfer has open transfer tasks. `canceled` is projected when an unfunded deposit window expires. Closed enum — exhaustive; additions would be a breaking change."},"stateDetail":{"anyOf":[{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"nullable":true}],"description":"Structured reason for the current state. Nullable on happy-path states; required for action_required and other non-terminal blocking/failure states."},"amounts":{"type":"object","properties":{"in":{"type":"object","properties":{"amount":{"type":"string"},"currency":{"type":"string"},"network":{"enum":["polygon","ethereum","base","arbitrum","optimism","bsc","avalanche"],"description":"Blockchain network for a crypto leg. Absent for fiat legs and uncatalogued networks. Blockchain network id. Open enum — values are added over time; clients must tolerate unknown values."}},"required":["amount","currency"]},"out":{"type":"object","properties":{"amount":{"type":"string"},"currency":{"type":"string"},"network":{"enum":["polygon","ethereum","base","arbitrum","optimism","bsc","avalanche"],"description":"Blockchain network for a crypto leg. Absent for fiat legs and uncatalogued networks. Blockchain network id. Open enum — values are added over time; clients must tolerate unknown values."}},"required":["amount","currency"]},"settled":{"type":"object","properties":{"amount":{"type":"string"},"currency":{"type":"string"}},"required":["amount","currency"],"description":"Actually delivered amount; present once completed."}},"required":["in","out"]},"fees":{"type":"array","items":{"type":"object","properties":{"beneficiary":{"anyOf":[{"enum":["developer"]},{"enum":["service"]}],"description":"Fee beneficiary. Closed enum — exhaustive; additions would be a breaking change."},"amount":{"type":"string"},"currency":{"type":"string"},"rule":{"type":"object","properties":{"fixed":{"type":"string"},"bips":{"type":"number"}},"required":["fixed","bips"]}},"required":["beneficiary","amount","currency"]},"description":"Applied fee snapshot, using the same shape as the quote fee lines."},"source":{"anyOf":[{"type":"object","properties":{"type":{"enum":["external"]}},"required":["type"]},{"type":"object","properties":{"type":{"enum":["account"]},"id":{"type":"string","description":"Source account for stablecoin-funded movements."}},"required":["type","id"]}]},"destination":{"anyOf":[{"type":"object","properties":{"type":{"enum":["account"]},"id":{"type":"string","pattern":"^acc_[a-zA-Z0-9]+$"}},"required":["type","id"]},{"type":"object","properties":{"type":{"enum":["destination"]},"id":{"type":"string","pattern":"^dst_[a-zA-Z0-9]+$"}},"required":["type","id"]}]},"references":{"type":"object","properties":{"transactionHash":{"type":"string"},"traceNumber":{"type":"string","description":"Provider payment tracking reference, such as an ACH trace number or wire reference. Absent when unavailable."},"imad":{"type":"string"},"uetr":{"type":"string"},"explorerUrl":{"type":"string","description":"Block-explorer link for the crypto leg, derived from the wallet network. Absent when the network has no catalogued explorer."},"returnedTransferId":{"anyOf":[{"type":"string","nullable":true}],"description":"Return-movement id; currently always null."}},"required":["returnedTransferId"]},"memo":{"type":"string"},"supportingDocuments":{"type":"array","items":{"type":"string"}},"instructions":{"anyOf":[{"anyOf":[{"type":"object","properties":{"type":{"enum":["bank"]},"method":{"enum":["ach","wire","rtp","sepa","swift","spei","transfers_3_0","uaefts","faster_payments"],"description":"Bank instruction method. Open enum — values are added over time; clients must tolerate unknown values."},"amount":{"type":"object","properties":{"amount":{"type":"string"},"currency":{"type":"string"}},"required":["amount","currency"]},"accountHolderName":{"type":"string"},"bankName":{"type":"string"},"details":{"type":"object","additionalProperties":{"type":"string"},"description":"Per-method banking coordinates in camelCase: routingNumber/accountNumber/accountType (ach, wire, rtp), iban/bic (sepa, uaefts), swiftCode/accountNumber (swift), sortCode/accountNumber (faster_payments), clabe (spei), cbu (transfers_3_0)."},"reference":{"type":"object","properties":{"value":{"type":"string"},"required":{"type":"boolean","description":"Whether the deposit must carry this reference to be matched. Pooled accounts match deposits by reference; named virtual accounts match by account number."}},"required":["value","required"],"description":"Payment reference to include with the deposit."},"localAmount":{"type":"object","properties":{"amount":{"type":"string"},"currency":{"type":"string"}},"required":["amount","currency"],"description":"Amount in the local settlement currency when the rail settles in a currency different from the quoted in amount."},"expiresAt":{"type":"string"}},"required":["type","method","amount","details"]},{"type":"object","properties":{"type":{"enum":["code"]},"method":{"enum":["pix"],"description":"Code instruction method. Open enum — values are added over time; clients must tolerate unknown values."},"amount":{"type":"object","properties":{"amount":{"type":"string"},"currency":{"type":"string"}},"required":["amount","currency"]},"code":{"type":"string","description":"Copyable payment code the customer pastes into their banking app."},"localAmount":{"type":"object","properties":{"amount":{"type":"string"},"currency":{"type":"string"}},"required":["amount","currency"]},"expiresAt":{"type":"string"}},"required":["type","method","amount","code"]},{"type":"object","properties":{"type":{"enum":["redirect"]},"method":{"enum":["pse"],"description":"Redirect instruction method. Open enum — values are added over time; clients must tolerate unknown values."},"amount":{"type":"object","properties":{"amount":{"type":"string"},"currency":{"type":"string"}},"required":["amount","currency"]},"url":{"type":"string","description":"Hosted payment page the customer completes the payment on."},"localAmount":{"type":"object","properties":{"amount":{"type":"string"},"currency":{"type":"string"}},"required":["amount","currency"]},"expiresAt":{"type":"string"}},"required":["type","amount","url"]}],"nullable":true}],"description":"Deposit instructions, discriminated by `type`. `null` for payout-side transfers, which are funded from the source account."},"timestamps":{"type":"object","properties":{"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"fundsReceivedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Currently always null."},"completedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Currently always null."},"failedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Currently always null."},"returnedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Currently always null."},"settledAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Currently always null."}},"required":["createdAt","updatedAt","fundsReceivedAt","completedAt","failedAt","returnedAt","settledAt"]}},"required":["id","origin","customerId","openTaskIds","method","direction","state","stateDetail","amounts","fees","source","destination","references","instructions","timestamps"]}},"required":["data"]},"examples":{"awaitingFunds":{"summary":"Fiat to stablecoin transfer awaiting the deposit","value":{"data":{"id":"tr_6dV8xN2pQ4rT7mA9sL1kBc","origin":"quoted","quoteId":"quo_6dV8xN2pQ4rT7mA9sL1kBc","customerId":"cus_7F3pL2nQ9xA5mW8kR1sT4v","capabilityId":"ach_pooled","openTaskIds":[],"institutionId":"jpmorgan","externalId":"your-transfer-ref-123","method":"ach","direction":"fiat_to_stablecoin","state":"awaiting_funds","stateDetail":null,"amounts":{"in":{"amount":"150.00","currency":"USD"},"out":{"amount":"145.00","currency":"USDC","network":"base"}},"fees":[{"beneficiary":"developer","amount":"0.88","currency":"USDC","rule":{"fixed":"0.50","bips":25}},{"beneficiary":"service","amount":"4.12","currency":"USDC"}],"source":{"type":"external"},"destination":{"type":"account","id":"acc_3eG7xN2pQ4rT8mA1sL6dVc"},"references":{"returnedTransferId":null},"memo":"Invoice 118","instructions":{"type":"bank","method":"ach","amount":{"amount":"150.00","currency":"USD"},"accountHolderName":"Swipelux FBO Customer","bankName":"JPMorgan Chase","details":{"routingNumber":"021000021","accountNumber":"123456789","accountType":"checking"},"reference":{"value":"SWX-7F3P","required":true}},"timestamps":{"createdAt":"2026-06-25T12:01:00.000Z","updatedAt":"2026-06-25T12:01:00.000Z","fundsReceivedAt":null,"completedAt":null,"failedAt":null,"returnedAt":null,"settledAt":null}}}},"processing":{"summary":"Stablecoin to fiat transfer processing","value":{"data":{"id":"tr_9zK4pQ8rT2mA7sL1dV6xNc","origin":"quoted","quoteId":"quo_9zK4pQ8rT2mA7sL1dV6xNc","customerId":"cus_7F3pL2nQ9xA5mW8kR1sT4v","capabilityId":"ach_pooled","openTaskIds":[],"institutionId":"jpmorgan","method":"ach","direction":"stablecoin_to_fiat","state":"processing","stateDetail":null,"amounts":{"in":{"amount":"150.00","currency":"USDC","network":"base"},"out":{"amount":"145.00","currency":"USD"}},"fees":[{"beneficiary":"developer","amount":"0.88","currency":"USDC","rule":{"fixed":"0.50","bips":25}},{"beneficiary":"service","amount":"4.12","currency":"USDC"}],"source":{"type":"account","id":"acc_base123"},"destination":{"type":"account","id":"acc_7mA9sL1kBc6dV8xN2pQ4rT"},"references":{"transactionHash":"0x3f5a1c9d2e8b7a6f4c1d0e9b8a7f6c5d4e3b2a1f0e9d8c7b6a5f4e3d2c1b0a9f","explorerUrl":"https://basescan.org/tx/0x3f5a1c9d2e8b7a6f4c1d0e9b8a7f6c5d4e3b2a1f0e9d8c7b6a5f4e3d2c1b0a9f","returnedTransferId":null},"instructions":null,"timestamps":{"createdAt":"2026-06-25T12:01:00.000Z","updatedAt":"2026-06-25T12:06:00.000Z","fundsReceivedAt":null,"completedAt":null,"failedAt":null,"returnedAt":null,"settledAt":null}}}},"completed":{"summary":"Completed stablecoin move with settled amount","value":{"data":{"id":"tr_4mT8xN2pQ7rV6sL1dZ9yPa","origin":"quoted","quoteId":"quo_4mT8xN2pQ7rV6sL1dZ9yPa","customerId":"cus_7F3pL2nQ9xA5mW8kR1sT4v","capabilityId":"stablecoin_transfers","openTaskIds":[],"method":"stablecoin_transfers","direction":"stablecoin_move","state":"completed","stateDetail":null,"amounts":{"in":{"amount":"1.234567","currency":"USDC","network":"base"},"out":{"amount":"1.234567","currency":"USDC","network":"base"},"settled":{"amount":"1.234567","currency":"USDC"}},"fees":[{"beneficiary":"service","amount":"0.00","currency":"USD"}],"source":{"type":"account","id":"acc_base123"},"destination":{"type":"destination","id":"dst_8xN2pQ4rT7mA9sL1kBc6dV"},"references":{"transactionHash":"0x9d8c7b6a5f4e3d2c1b0a9f3f5a1c9d2e8b7a6f4c1d0e9b8a7f6c5d4e3b2a1f0e","explorerUrl":"https://basescan.org/tx/0x9d8c7b6a5f4e3d2c1b0a9f3f5a1c9d2e8b7a6f4c1d0e9b8a7f6c5d4e3b2a1f0e","returnedTransferId":null},"instructions":null,"timestamps":{"createdAt":"2026-06-25T12:01:00.000Z","updatedAt":"2026-06-25T12:03:00.000Z","fundsReceivedAt":null,"completedAt":null,"failedAt":null,"returnedAt":null,"settledAt":null}}}}}}}},"400":{"description":"Invalid request.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["validation_error"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["request_failed"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["request_failed"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Resource not found.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["not_found","quote_not_found","transfer_not_found"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"409":{"description":"Request conflict.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["account_unavailable","account_not_ready","capability_not_ready","idempotency_conflict","insufficient_balance","quote_already_executed","quote_destination_missing","quote_expired","rail_not_ready"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}},"examples":{"capabilityNotReady":{"summary":"Capability is not ready","value":{"type":"https://docs.swipelux.com/errors/capability-not-ready","title":"Capability Not Ready","status":409,"code":"capability_not_ready","detail":"Capability is not ready to use.","correlationId":"cor_01JMM23TRANSFERERRORS","retryable":false}},"idempotencyConflict":{"summary":"Idempotency key conflict","value":{"type":"https://docs.swipelux.com/errors/idempotency-conflict","title":"Idempotency Conflict","status":409,"code":"idempotency_conflict","detail":"Idempotency-Key was already used with a different request.","correlationId":"cor_01JMM23TRANSFERERRORS","retryable":false}},"quoteAlreadyExecuted":{"summary":"Quote already executed","value":{"type":"https://docs.swipelux.com/errors/quote-already-executed","title":"Quote Already Executed","status":409,"code":"quote_already_executed","detail":"This quote was already executed by another request.","correlationId":"cor_01JMM23TRANSFERERRORS","retryable":false,"transferId":"tr_6dV8xN2pQ4rT7mA9sL1kBc"}},"quoteDestinationMissing":{"summary":"Quote destination missing","value":{"type":"https://docs.swipelux.com/errors/quote-destination-missing","title":"Quote Destination Missing","status":409,"code":"quote_destination_missing","detail":"Quote cannot be executed because its destination was not stored.","correlationId":"cor_01JMM23TRANSFERERRORS","retryable":false}},"quoteExpired":{"summary":"Quote expired","value":{"type":"https://docs.swipelux.com/errors/quote-expired","title":"Quote Expired","status":409,"code":"quote_expired","detail":"The quote's expiresAt deadline passed; create a new quote and execute it.","correlationId":"cor_01JMM23TRANSFERERRORS","retryable":false}}}}}},"422":{"description":"Request cannot be processed.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["developer_fee_invalid","recipient_destination_invalid","supporting_document_not_found"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}},"examples":{"supportingDocumentNotFound":{"summary":"Supporting document not found","value":{"type":"https://docs.swipelux.com/errors/supporting-document-not-found","title":"Supporting Document Not Found","status":422,"code":"supporting_document_not_found","detail":"One or more supporting documents were not found.","correlationId":"cor_01JMM23TRANSFERERRORS","retryable":false,"errors":[{"pointer":"/supportingDocuments/0","code":"not_found","message":"The document was not found for this customer."}]}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["internal_error","quote_direction_invalid","quote_mode_invalid","transfer_execution_failed","transfer_state_invalid"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}},"examples":{"transferExecutionFailed":{"summary":"Transfer execution failed","value":{"type":"https://docs.swipelux.com/errors/transfer-execution-failed","title":"Transfer Execution Failed","status":500,"code":"transfer_execution_failed","detail":"The quoted transfer could not be executed. Contact support with the correlation id.","correlationId":"cor_01JMM23TRANSFERERRORS","retryable":false}}}}}}},"operationId":"postV3Transfers","tags":["money-movement"],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":255},"example":"idem_20260626_0001","description":"Required for effectful v3 requests (POST, PATCH, PUT, DELETE). Reuse the same key with the same body to replay the cached response."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["quoteId"],"properties":{"quoteId":{"type":"string","pattern":"^quo_[a-zA-Z0-9]+$","example":"quo_6dV8xN2pQ4rT7mA9sL1kBc"},"externalId":{"type":"string","minLength":1,"maxLength":255,"description":"Merchant-supplied correlation reference echoed on reads and filterable on GET /v3/transfers. Not required to be unique; independent of the quote's externalId.","example":"your-transfer-ref-123"},"memo":{"type":"string","minLength":1,"maxLength":140,"description":"Free-text memo stored on the transfer resource.","example":"Invoice 118"},"supportingDocuments":{"type":"array","maxItems":10,"items":{"type":"string","pattern":"^doc_[a-zA-Z0-9]+$"},"description":"Up to 10 document ids previously uploaded for this customer and linked to the transfer.","example":["doc_4rT7mA9sL1kBc6dV8xN2pQ"]}}},"examples":{"quoted":{"summary":"Execute transfer","value":{"quoteId":"quo_6dV8xN2pQ4rT7mA9sL1kBc"}},"withContext":{"summary":"Execute transfer with correlation and stored context","value":{"quoteId":"quo_6dV8xN2pQ4rT7mA9sL1kBc","externalId":"your-transfer-ref-123","memo":"Invoice 118","supportingDocuments":["doc_4rT7mA9sL1kBc6dV8xN2pQ"]}}}}}},"summary":"Create transfer (executes a quote)","description":"Executes the selected quote without intentionally re-pricing it. Execution can still fail validation, balance, destination, rail, or provider checks."}},"/v3/transfers/{transferId}":{"get":{"responses":{"200":{"description":"Transfer returned","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"origin":{"enum":["quoted","inbound_deposit"],"description":"How the transfer was created. `quoted` comes from a v3 quote; `inbound_deposit` comes from reconciliation. Open enum — values are added over time; clients must tolerate unknown values."},"quoteId":{"type":"string","description":"Quote id. Always present for `quoted` transfers and absent for `inbound_deposit` transfers."},"customerId":{"type":"string"},"capabilityId":{"type":"string","description":"Capability id when a capability applies. Absent for inbound deposits that do not map to a capability."},"openTaskIds":{"type":"array","items":{"type":"string"},"description":"Ids of transfer-scoped tasks with status `action_required` or `in_review`, ordered by creation time and id. Empty when nothing is open."},"sender":{"type":"object","properties":{"name":{"type":"string"},"bankName":{"type":"string"},"accountLast4":{"type":"string","pattern":"^\\d{4}$"}},"required":[],"description":"Sender evidence when available on merchant transfer GET responses. Omitted from webhook payloads."},"institutionId":{"type":"string","description":"Public institution id echoed from the quote when the backing bank capability has a single institution."},"externalId":{"type":"string"},"method":{"type":"string","description":"Movement method derived from the capability for quoted transfers or normalized from the receiving rail for inbound deposits. Open enum — values are added over time; clients must tolerate unknown values."},"direction":{"enum":["fiat_to_stablecoin","stablecoin_to_fiat","stablecoin_move"],"description":"Transfer direction. Closed enum — exhaustive; additions would be a breaking change."},"state":{"enum":["awaiting_funds","processing","action_required","completed","failed","canceled"],"description":"Public transfer state. `processing` covers funds received through settlement. `action_required` is projected when an otherwise in-flight transfer has open transfer tasks. `canceled` is projected when an unfunded deposit window expires. Closed enum — exhaustive; additions would be a breaking change."},"stateDetail":{"anyOf":[{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"nullable":true}],"description":"Structured reason for the current state. Nullable on happy-path states; required for action_required and other non-terminal blocking/failure states."},"amounts":{"type":"object","properties":{"in":{"type":"object","properties":{"amount":{"type":"string"},"currency":{"type":"string"},"network":{"enum":["polygon","ethereum","base","arbitrum","optimism","bsc","avalanche"],"description":"Blockchain network for a crypto leg. Absent for fiat legs and uncatalogued networks. Blockchain network id. Open enum — values are added over time; clients must tolerate unknown values."}},"required":["amount","currency"]},"out":{"type":"object","properties":{"amount":{"type":"string"},"currency":{"type":"string"},"network":{"enum":["polygon","ethereum","base","arbitrum","optimism","bsc","avalanche"],"description":"Blockchain network for a crypto leg. Absent for fiat legs and uncatalogued networks. Blockchain network id. Open enum — values are added over time; clients must tolerate unknown values."}},"required":["amount","currency"]},"settled":{"type":"object","properties":{"amount":{"type":"string"},"currency":{"type":"string"}},"required":["amount","currency"],"description":"Actually delivered amount; present once completed."}},"required":["in","out"]},"fees":{"type":"array","items":{"type":"object","properties":{"beneficiary":{"anyOf":[{"enum":["developer"]},{"enum":["service"]}],"description":"Fee beneficiary. Closed enum — exhaustive; additions would be a breaking change."},"amount":{"type":"string"},"currency":{"type":"string"},"rule":{"type":"object","properties":{"fixed":{"type":"string"},"bips":{"type":"number"}},"required":["fixed","bips"]}},"required":["beneficiary","amount","currency"]},"description":"Applied fee snapshot, using the same shape as the quote fee lines."},"source":{"anyOf":[{"type":"object","properties":{"type":{"enum":["external"]}},"required":["type"]},{"type":"object","properties":{"type":{"enum":["account"]},"id":{"type":"string","description":"Source account for stablecoin-funded movements."}},"required":["type","id"]}]},"destination":{"anyOf":[{"type":"object","properties":{"type":{"enum":["account"]},"id":{"type":"string","pattern":"^acc_[a-zA-Z0-9]+$"}},"required":["type","id"]},{"type":"object","properties":{"type":{"enum":["destination"]},"id":{"type":"string","pattern":"^dst_[a-zA-Z0-9]+$"}},"required":["type","id"]}]},"references":{"type":"object","properties":{"transactionHash":{"type":"string"},"traceNumber":{"type":"string","description":"Provider payment tracking reference, such as an ACH trace number or wire reference. Absent when unavailable."},"imad":{"type":"string"},"uetr":{"type":"string"},"explorerUrl":{"type":"string","description":"Block-explorer link for the crypto leg, derived from the wallet network. Absent when the network has no catalogued explorer."},"returnedTransferId":{"anyOf":[{"type":"string","nullable":true}],"description":"Return-movement id; currently always null."}},"required":["returnedTransferId"]},"memo":{"type":"string"},"supportingDocuments":{"type":"array","items":{"type":"string"}},"instructions":{"anyOf":[{"anyOf":[{"type":"object","properties":{"type":{"enum":["bank"]},"method":{"enum":["ach","wire","rtp","sepa","swift","spei","transfers_3_0","uaefts","faster_payments"],"description":"Bank instruction method. Open enum — values are added over time; clients must tolerate unknown values."},"amount":{"type":"object","properties":{"amount":{"type":"string"},"currency":{"type":"string"}},"required":["amount","currency"]},"accountHolderName":{"type":"string"},"bankName":{"type":"string"},"details":{"type":"object","additionalProperties":{"type":"string"},"description":"Per-method banking coordinates in camelCase: routingNumber/accountNumber/accountType (ach, wire, rtp), iban/bic (sepa, uaefts), swiftCode/accountNumber (swift), sortCode/accountNumber (faster_payments), clabe (spei), cbu (transfers_3_0)."},"reference":{"type":"object","properties":{"value":{"type":"string"},"required":{"type":"boolean","description":"Whether the deposit must carry this reference to be matched. Pooled accounts match deposits by reference; named virtual accounts match by account number."}},"required":["value","required"],"description":"Payment reference to include with the deposit."},"localAmount":{"type":"object","properties":{"amount":{"type":"string"},"currency":{"type":"string"}},"required":["amount","currency"],"description":"Amount in the local settlement currency when the rail settles in a currency different from the quoted in amount."},"expiresAt":{"type":"string"}},"required":["type","method","amount","details"]},{"type":"object","properties":{"type":{"enum":["code"]},"method":{"enum":["pix"],"description":"Code instruction method. Open enum — values are added over time; clients must tolerate unknown values."},"amount":{"type":"object","properties":{"amount":{"type":"string"},"currency":{"type":"string"}},"required":["amount","currency"]},"code":{"type":"string","description":"Copyable payment code the customer pastes into their banking app."},"localAmount":{"type":"object","properties":{"amount":{"type":"string"},"currency":{"type":"string"}},"required":["amount","currency"]},"expiresAt":{"type":"string"}},"required":["type","method","amount","code"]},{"type":"object","properties":{"type":{"enum":["redirect"]},"method":{"enum":["pse"],"description":"Redirect instruction method. Open enum — values are added over time; clients must tolerate unknown values."},"amount":{"type":"object","properties":{"amount":{"type":"string"},"currency":{"type":"string"}},"required":["amount","currency"]},"url":{"type":"string","description":"Hosted payment page the customer completes the payment on."},"localAmount":{"type":"object","properties":{"amount":{"type":"string"},"currency":{"type":"string"}},"required":["amount","currency"]},"expiresAt":{"type":"string"}},"required":["type","amount","url"]}],"nullable":true}],"description":"Deposit instructions, discriminated by `type`. `null` for payout-side transfers, which are funded from the source account."},"timestamps":{"type":"object","properties":{"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"fundsReceivedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Currently always null."},"completedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Currently always null."},"failedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Currently always null."},"returnedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Currently always null."},"settledAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Currently always null."}},"required":["createdAt","updatedAt","fundsReceivedAt","completedAt","failedAt","returnedAt","settledAt"]}},"required":["id","origin","customerId","openTaskIds","method","direction","state","stateDetail","amounts","fees","source","destination","references","instructions","timestamps"]}},"required":["data"]},"examples":{"awaitingFunds":{"summary":"Fiat to stablecoin transfer awaiting the deposit","value":{"data":{"id":"tr_6dV8xN2pQ4rT7mA9sL1kBc","origin":"quoted","quoteId":"quo_6dV8xN2pQ4rT7mA9sL1kBc","customerId":"cus_7F3pL2nQ9xA5mW8kR1sT4v","capabilityId":"ach_pooled","openTaskIds":[],"institutionId":"jpmorgan","externalId":"your-transfer-ref-123","method":"ach","direction":"fiat_to_stablecoin","state":"awaiting_funds","stateDetail":null,"amounts":{"in":{"amount":"150.00","currency":"USD"},"out":{"amount":"145.00","currency":"USDC","network":"base"}},"fees":[{"beneficiary":"developer","amount":"0.88","currency":"USDC","rule":{"fixed":"0.50","bips":25}},{"beneficiary":"service","amount":"4.12","currency":"USDC"}],"source":{"type":"external"},"destination":{"type":"account","id":"acc_3eG7xN2pQ4rT8mA1sL6dVc"},"references":{"returnedTransferId":null},"memo":"Invoice 118","instructions":{"type":"bank","method":"ach","amount":{"amount":"150.00","currency":"USD"},"accountHolderName":"Swipelux FBO Customer","bankName":"JPMorgan Chase","details":{"routingNumber":"021000021","accountNumber":"123456789","accountType":"checking"},"reference":{"value":"SWX-7F3P","required":true}},"timestamps":{"createdAt":"2026-06-25T12:01:00.000Z","updatedAt":"2026-06-25T12:01:00.000Z","fundsReceivedAt":null,"completedAt":null,"failedAt":null,"returnedAt":null,"settledAt":null}}}},"processing":{"summary":"Stablecoin to fiat transfer processing","value":{"data":{"id":"tr_9zK4pQ8rT2mA7sL1dV6xNc","origin":"quoted","quoteId":"quo_9zK4pQ8rT2mA7sL1dV6xNc","customerId":"cus_7F3pL2nQ9xA5mW8kR1sT4v","capabilityId":"ach_pooled","openTaskIds":[],"institutionId":"jpmorgan","method":"ach","direction":"stablecoin_to_fiat","state":"processing","stateDetail":null,"amounts":{"in":{"amount":"150.00","currency":"USDC","network":"base"},"out":{"amount":"145.00","currency":"USD"}},"fees":[{"beneficiary":"developer","amount":"0.88","currency":"USDC","rule":{"fixed":"0.50","bips":25}},{"beneficiary":"service","amount":"4.12","currency":"USDC"}],"source":{"type":"account","id":"acc_base123"},"destination":{"type":"account","id":"acc_7mA9sL1kBc6dV8xN2pQ4rT"},"references":{"transactionHash":"0x3f5a1c9d2e8b7a6f4c1d0e9b8a7f6c5d4e3b2a1f0e9d8c7b6a5f4e3d2c1b0a9f","explorerUrl":"https://basescan.org/tx/0x3f5a1c9d2e8b7a6f4c1d0e9b8a7f6c5d4e3b2a1f0e9d8c7b6a5f4e3d2c1b0a9f","returnedTransferId":null},"instructions":null,"timestamps":{"createdAt":"2026-06-25T12:01:00.000Z","updatedAt":"2026-06-25T12:06:00.000Z","fundsReceivedAt":null,"completedAt":null,"failedAt":null,"returnedAt":null,"settledAt":null}}}},"completed":{"summary":"Completed stablecoin move with settled amount","value":{"data":{"id":"tr_4mT8xN2pQ7rV6sL1dZ9yPa","origin":"quoted","quoteId":"quo_4mT8xN2pQ7rV6sL1dZ9yPa","customerId":"cus_7F3pL2nQ9xA5mW8kR1sT4v","capabilityId":"stablecoin_transfers","openTaskIds":[],"method":"stablecoin_transfers","direction":"stablecoin_move","state":"completed","stateDetail":null,"amounts":{"in":{"amount":"1.234567","currency":"USDC","network":"base"},"out":{"amount":"1.234567","currency":"USDC","network":"base"},"settled":{"amount":"1.234567","currency":"USDC"}},"fees":[{"beneficiary":"service","amount":"0.00","currency":"USD"}],"source":{"type":"account","id":"acc_base123"},"destination":{"type":"destination","id":"dst_8xN2pQ4rT7mA9sL1kBc6dV"},"references":{"transactionHash":"0x9d8c7b6a5f4e3d2c1b0a9f3f5a1c9d2e8b7a6f4c1d0e9b8a7f6c5d4e3b2a1f0e","explorerUrl":"https://basescan.org/tx/0x9d8c7b6a5f4e3d2c1b0a9f3f5a1c9d2e8b7a6f4c1d0e9b8a7f6c5d4e3b2a1f0e","returnedTransferId":null},"instructions":null,"timestamps":{"createdAt":"2026-06-25T12:01:00.000Z","updatedAt":"2026-06-25T12:03:00.000Z","fundsReceivedAt":null,"completedAt":null,"failedAt":null,"returnedAt":null,"settledAt":null}}}},"failed":{"summary":"Failed transfer with structured stateDetail","value":{"data":{"id":"tr_2wQ7xN4pR8mT1sL6dV9zKa","origin":"quoted","quoteId":"quo_2wQ7xN4pR8mT1sL6dV9zKa","customerId":"cus_7F3pL2nQ9xA5mW8kR1sT4v","capabilityId":"ach_pooled","openTaskIds":[],"institutionId":"jpmorgan","method":"ach","direction":"fiat_to_stablecoin","state":"failed","stateDetail":{"code":"network_rejected","message":"The payment network rejected this transfer. Create a new quote to retry, or contact support with the transfer id.","actor":"network","retryable":false},"amounts":{"in":{"amount":"150.00","currency":"USD"},"out":{"amount":"145.00","currency":"USDC","network":"base"}},"fees":[{"beneficiary":"developer","amount":"0.88","currency":"USDC","rule":{"fixed":"0.50","bips":25}},{"beneficiary":"service","amount":"4.12","currency":"USDC"}],"source":{"type":"external"},"destination":{"type":"account","id":"acc_3eG7xN2pQ4rT8mA1sL6dVc"},"references":{"returnedTransferId":null},"instructions":{"type":"bank","method":"ach","amount":{"amount":"150.00","currency":"USD"},"accountHolderName":"Swipelux FBO Customer","bankName":"JPMorgan Chase","details":{"routingNumber":"021000021","accountNumber":"123456789","accountType":"checking"},"reference":{"value":"SWX-7F3P","required":true}},"timestamps":{"createdAt":"2026-06-25T12:01:00.000Z","updatedAt":"2026-06-25T14:20:00.000Z","fundsReceivedAt":null,"completedAt":null,"failedAt":null,"returnedAt":null,"settledAt":null}}}},"canceled":{"summary":"Canceled transfer after the deposit window expired","value":{"data":{"id":"tr_8dQ2xN4pR7mT1sL6dV9zKb","origin":"quoted","quoteId":"quo_8dQ2xN4pR7mT1sL6dV9zKb","customerId":"cus_7F3pL2nQ9xA5mW8kR1sT4v","capabilityId":"ach_pooled","openTaskIds":[],"institutionId":"jpmorgan","method":"ach","direction":"fiat_to_stablecoin","state":"canceled","stateDetail":{"code":"deposit_window_expired","message":"The funding window expired before funds were received. Create a new quote and transfer to retry.","actor":"customer","retryable":false},"amounts":{"in":{"amount":"150.00","currency":"USD"},"out":{"amount":"145.00","currency":"USDC","network":"base"}},"fees":[{"beneficiary":"developer","amount":"0.88","currency":"USDC","rule":{"fixed":"0.50","bips":25}},{"beneficiary":"service","amount":"4.12","currency":"USDC"}],"source":{"type":"external"},"destination":{"type":"account","id":"acc_3eG7xN2pQ4rT8mA1sL6dVc"},"references":{"returnedTransferId":null},"instructions":{"type":"bank","method":"ach","amount":{"amount":"150.00","currency":"USD"},"accountHolderName":"Swipelux FBO Customer","bankName":"JPMorgan Chase","details":{"routingNumber":"021000021","accountNumber":"123456789","accountType":"checking"},"reference":{"value":"SWX-7F3P","required":true}},"timestamps":{"createdAt":"2026-06-25T12:01:00.000Z","updatedAt":"2026-06-25T12:06:00.000Z","fundsReceivedAt":null,"completedAt":null,"failedAt":null,"returnedAt":null,"settledAt":null}}}}}}}},"400":{"description":"Invalid request.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Transfer not found","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"getV3TransfersByTransferId","tags":["money-movement"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"transferId","required":true}],"summary":"Get transfer","description":"Returns a quoted or inbound-deposit transfer with its amounts/fees snapshot, public state, source/destination, open tasks, rail references, and instructions. Sender evidence is included when available and is never part of webhook payloads."}},"/v3/transfers/{transferId}/tasks":{"get":{"responses":{"200":{"description":"Transfer tasks returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskPage"}}}},"400":{"description":"Invalid query parameter","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Transfer not found","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"getV3TransfersByTransferIdTasks","tags":["money-movement"],"parameters":[{"name":"cursor","in":"query","required":false,"schema":{"type":"string"},"description":"Opaque cursor returned as `nextCursor` from the previous page."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25},"description":"Maximum number of records to return. Defaults to 25."},{"name":"updatedAfter","in":"query","required":false,"schema":{"type":"string","format":"date-time"},"description":"Return only records updated at or after this RFC 3339 timestamp. Use it to recover from missed webhooks by replaying a window of changes."},{"schema":{"type":"string"},"in":"path","name":"transferId","required":true}],"summary":"List transfer-scoped tasks","description":"Lists tasks scoped to this transfer in the standard page envelope. Unknown transfer ids return 404."}},"/v3/transfers/{transferId}/cancel":{"post":{"responses":{"400":{"description":"Invalid request.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Transfer not found","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"409":{"description":"Transfer is not cancelable (`transfer_not_cancelable`).","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"postV3TransfersByTransferIdCancel","tags":["money-movement"],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":255},"example":"idem_20260626_0001","description":"Required for effectful v3 requests (POST, PATCH, PUT, DELETE). Reuse the same key with the same body to replay the cached response."},{"schema":{"type":"string"},"in":"path","name":"transferId","required":true}],"summary":"Cancel transfer","description":"Returns `409 transfer_not_cancelable`; no current transfer state is cancelable through this operation."}},"/v3/transfers/{transferId}/instructions":{"get":{"responses":{"200":{"description":"Transfer instructions returned","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"transferId":{"type":"string"},"instructions":{"anyOf":[{"anyOf":[{"type":"object","properties":{"type":{"enum":["bank"]},"method":{"enum":["ach","wire","rtp","sepa","swift","spei","transfers_3_0","uaefts","faster_payments"],"description":"Bank instruction method. Open enum — values are added over time; clients must tolerate unknown values."},"amount":{"type":"object","properties":{"amount":{"type":"string"},"currency":{"type":"string"}},"required":["amount","currency"]},"accountHolderName":{"type":"string"},"bankName":{"type":"string"},"details":{"type":"object","additionalProperties":{"type":"string"},"description":"Per-method banking coordinates in camelCase: routingNumber/accountNumber/accountType (ach, wire, rtp), iban/bic (sepa, uaefts), swiftCode/accountNumber (swift), sortCode/accountNumber (faster_payments), clabe (spei), cbu (transfers_3_0)."},"reference":{"type":"object","properties":{"value":{"type":"string"},"required":{"type":"boolean","description":"Whether the deposit must carry this reference to be matched. Pooled accounts match deposits by reference; named virtual accounts match by account number."}},"required":["value","required"],"description":"Payment reference to include with the deposit."},"localAmount":{"type":"object","properties":{"amount":{"type":"string"},"currency":{"type":"string"}},"required":["amount","currency"],"description":"Amount in the local settlement currency when the rail settles in a currency different from the quoted in amount."},"expiresAt":{"type":"string"}},"required":["type","method","amount","details"]},{"type":"object","properties":{"type":{"enum":["code"]},"method":{"enum":["pix"],"description":"Code instruction method. Open enum — values are added over time; clients must tolerate unknown values."},"amount":{"type":"object","properties":{"amount":{"type":"string"},"currency":{"type":"string"}},"required":["amount","currency"]},"code":{"type":"string","description":"Copyable payment code the customer pastes into their banking app."},"localAmount":{"type":"object","properties":{"amount":{"type":"string"},"currency":{"type":"string"}},"required":["amount","currency"]},"expiresAt":{"type":"string"}},"required":["type","method","amount","code"]},{"type":"object","properties":{"type":{"enum":["redirect"]},"method":{"enum":["pse"],"description":"Redirect instruction method. Open enum — values are added over time; clients must tolerate unknown values."},"amount":{"type":"object","properties":{"amount":{"type":"string"},"currency":{"type":"string"}},"required":["amount","currency"]},"url":{"type":"string","description":"Hosted payment page the customer completes the payment on."},"localAmount":{"type":"object","properties":{"amount":{"type":"string"},"currency":{"type":"string"}},"required":["amount","currency"]},"expiresAt":{"type":"string"}},"required":["type","amount","url"]}],"nullable":true}],"description":"Deposit instructions, discriminated by `type`. `null` for payout-side transfers, which are funded from the source account."}},"required":["transferId","instructions"]}},"required":["data"]},"examples":{"awaitingFunds":{"summary":"Deposit instructions","value":{"data":{"transferId":"tr_6dV8xN2pQ4rT7mA9sL1kBc","instructions":{"type":"bank","method":"ach","amount":{"amount":"150.00","currency":"USD"},"accountHolderName":"Swipelux FBO Customer","bankName":"JPMorgan Chase","details":{"routingNumber":"021000021","accountNumber":"123456789","accountType":"checking"},"reference":{"value":"SWX-7F3P","required":true}}}}}}}}},"400":{"description":"Invalid request.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Transfer not found, or the transfer has no instructions (payout-side transfers; problem code `transfer_has_no_instructions`).","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"getV3TransfersByTransferIdInstructions","tags":["money-movement"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"transferId","required":true}],"summary":"Get transfer instructions","description":"Returns the typed deposit instructions for a v3 transfer created from a quote. Payout-side transfers are funded from the source account and have no instructions: this endpoint returns a 404 problem with code `transfer_has_no_instructions` for them."}},"/v3/quotes":{"post":{"responses":{"201":{"description":"Quote created","headers":{"Idempotency-Replayed":{"description":"Present with value `true` when an idempotent request is replayed.","schema":{"type":"string","enum":["true"]}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"customerId":{"type":"string"},"capabilityId":{"type":"string"},"institutionId":{"type":"string","description":"Public institution id for bank-backed movement capabilities when exactly one institution backs the quote."},"externalId":{"type":"string"},"mode":{"enum":["exact_in","exact_out"],"description":"Quote pricing mode. Closed enum — exhaustive; additions would be a breaking change."},"direction":{"enum":["fiat_to_stablecoin","stablecoin_to_fiat","stablecoin_move"],"description":"Quote direction. Closed enum — exhaustive; additions would be a breaking change."},"source":{"anyOf":[{"type":"object","properties":{"type":{"enum":["external"]}},"required":["type"]},{"type":"object","properties":{"type":{"enum":["account"]},"id":{"type":"string","description":"Source account for stablecoin-funded movements."}},"required":["type","id"]}],"description":"Resolved funding source. External for fiat-funded quotes and an account for stablecoin-funded quotes. May be absent on older stablecoin-funded quotes."},"destination":{"anyOf":[{"type":"object","properties":{"type":{"enum":["account"]},"id":{"type":"string","pattern":"^acc_[a-zA-Z0-9]+$"}},"required":["type","id"]},{"type":"object","properties":{"type":{"enum":["destination"]},"id":{"type":"string","pattern":"^dst_[a-zA-Z0-9]+$"}},"required":["type","id"]}]},"in":{"type":"object","properties":{"amount":{"type":"string"},"currency":{"type":"string"},"network":{"enum":["polygon","ethereum","base","arbitrum","optimism","bsc","avalanche"],"description":"Blockchain network for a crypto leg. Absent for fiat legs and uncatalogued networks. Blockchain network id. Open enum — values are added over time; clients must tolerate unknown values."}},"required":["amount","currency"]},"out":{"type":"object","properties":{"amount":{"type":"string"},"currency":{"type":"string"},"network":{"enum":["polygon","ethereum","base","arbitrum","optimism","bsc","avalanche"],"description":"Blockchain network for a crypto leg. Absent for fiat legs and uncatalogued networks. Blockchain network id. Open enum — values are added over time; clients must tolerate unknown values."}},"required":["amount","currency"]},"rate":{"type":"string"},"fees":{"type":"array","items":{"type":"object","properties":{"beneficiary":{"anyOf":[{"enum":["developer"]},{"enum":["service"]}],"description":"Fee beneficiary. Closed enum — exhaustive; additions would be a breaking change."},"amount":{"type":"string"},"currency":{"type":"string"},"rule":{"type":"object","properties":{"fixed":{"type":"string"},"bips":{"type":"number"}},"required":["fixed","bips"]}},"required":["beneficiary","amount","currency"]}},"status":{"enum":["active","executed","expired","failed"],"description":"Quote status. Closed enum — exhaustive; additions would be a breaking change."},"transferId":{"anyOf":[{"type":"string","nullable":true}]},"createdAt":{"type":"string"},"expiresAt":{"type":"string"}},"required":["id","customerId","capabilityId","mode","direction","destination","in","out","rate","fees","status","transferId","createdAt","expiresAt"]}},"required":["data"]},"examples":{"fiatToStablecoin":{"summary":"Fiat to stablecoin","value":{"data":{"customerId":"cus_7F3pL2nQ9xA5mW8kR1sT4v","externalId":"quote-ref-123","mode":"exact_in","rate":"1.00","status":"active","transferId":null,"createdAt":"2026-06-25T12:00:00.000Z","expiresAt":"2026-06-25T12:05:00.000Z","id":"quo_6dV8xN2pQ4rT7mA9sL1kBc","capabilityId":"ach_pooled","institutionId":"jpmorgan","direction":"fiat_to_stablecoin","source":{"type":"external"},"in":{"amount":"150.00","currency":"USD"},"out":{"amount":"145.00","currency":"USDC","network":"base"},"destination":{"type":"account","id":"acc_3eG7xN2pQ4rT8mA1sL6dVc"},"fees":[{"beneficiary":"developer","amount":"0.88","currency":"USDC","rule":{"fixed":"0.50","bips":25}},{"beneficiary":"service","amount":"4.12","currency":"USDC"}]}}},"stablecoinToFiat":{"summary":"Stablecoin to fiat","value":{"data":{"customerId":"cus_7F3pL2nQ9xA5mW8kR1sT4v","externalId":"quote-ref-123","mode":"exact_in","rate":"1.00","status":"active","transferId":null,"createdAt":"2026-06-25T12:00:00.000Z","expiresAt":"2026-06-25T12:05:00.000Z","id":"quo_9zK4pQ8rT2mA7sL1dV6xNc","capabilityId":"ach_pooled","institutionId":"jpmorgan","direction":"stablecoin_to_fiat","source":{"type":"account","id":"acc_base123"},"in":{"amount":"150.00","currency":"USDC","network":"base"},"out":{"amount":"145.00","currency":"USD"},"destination":{"type":"account","id":"acc_7mA9sL1kBc6dV8xN2pQ4rT"},"fees":[{"beneficiary":"developer","amount":"0.88","currency":"USDC","rule":{"fixed":"0.50","bips":25}},{"beneficiary":"service","amount":"4.12","currency":"USDC"}]}}},"stablecoinMove":{"summary":"Stablecoin move","value":{"data":{"customerId":"cus_7F3pL2nQ9xA5mW8kR1sT4v","externalId":"quote-ref-123","mode":"exact_in","rate":"1.00","status":"active","transferId":null,"createdAt":"2026-06-25T12:00:00.000Z","expiresAt":"2026-06-25T12:05:00.000Z","id":"quo_4mT8xN2pQ7rV6sL1dZ9yPa","capabilityId":"stablecoin_transfers","direction":"stablecoin_move","source":{"type":"account","id":"acc_base123"},"in":{"amount":"1.234567","currency":"USDC","network":"base"},"out":{"amount":"1.234567","currency":"USDC","network":"base"},"destination":{"type":"destination","id":"dst_8xN2pQ4rT7mA9sL1kBc6dV"},"fees":[{"beneficiary":"service","amount":"0.00","currency":"USD"}]}}}}}}},"400":{"description":"Invalid request.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Resource not found.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"409":{"description":"Capability is not ready, the payout account is not ready (`account_not_ready`), the recipient destination is not ready (`destination_not_ready`), or the selected payment rail is not ready (`rail_not_ready`).","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["account_not_ready","capability_not_ready","destination_not_ready","rail_not_ready"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"422":{"description":"Request cannot be processed.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["account_method_not_supported","amount_not_deliverable","developer_fee_invalid","quote_direction_invalid","recipient_destination_invalid","validation_error"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}},"examples":{"quoteDirectionInvalid":{"summary":"Fiat-funded quote cannot target a recipient destination","value":{"type":"https://docs.swipelux.com/errors/quote-direction-invalid","title":"Quote Direction Invalid","status":422,"code":"quote_direction_invalid","detail":"Fiat-funded quotes must target a customer account.","correlationId":"cor_01JMM25QUOTEDIRECTION","retryable":false,"errors":[{"pointer":"/destinationId","code":"invalid_direction","message":"Choose an acc_ destination account for a fiat-funded quote."}]}},"recipientDestinationNetworkMismatch":{"summary":"Stablecoin destination uses a different network","value":{"type":"https://docs.swipelux.com/errors/recipient-destination-invalid","title":"Recipient Destination Invalid","status":422,"code":"recipient_destination_invalid","detail":"Destination is invalid for this stablecoin transfer.","correlationId":"cor_01JMM25DESTNETWORK","retryable":false,"errors":[{"pointer":"/destinationId","code":"network_mismatch","message":"The source and destination networks must match."}]}},"recipientDestinationCurrencyMismatch":{"summary":"Stablecoin destination uses a different currency","value":{"type":"https://docs.swipelux.com/errors/recipient-destination-invalid","title":"Recipient Destination Invalid","status":422,"code":"recipient_destination_invalid","detail":"Destination is invalid for this stablecoin transfer.","correlationId":"cor_01JMM25DESTCURRENCY","retryable":false,"errors":[{"pointer":"/out/currency","code":"currency_mismatch","message":"The source and destination currencies must match."}]}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["quote_failed"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"502":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["quote_failed","rate_unavailable"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"503":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","enum":["rail_temporarily_unavailable"],"description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"postV3Quotes","tags":["money-movement"],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":255},"example":"idem_20260626_0001","description":"Required for effectful v3 requests (POST, PATCH, PUT, DELETE). Reuse the same key with the same body to replay the cached response."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Provide exactly one of `in.amount` or `out.amount`. Stablecoin moves are same-network, same-currency transfers; cross-chain bridging and asset swaps are not supported.","required":["customerId","capabilityId","in","destinationId","out"],"properties":{"customerId":{"type":"string","pattern":"^cus_[a-zA-Z0-9]+$","example":"cus_7F3pL2nQ9xA5mW8kR1sT4v"},"capabilityId":{"type":"string","minLength":1,"description":"Ready capability used to price this quote. Open enum — values are added over time; clients must tolerate unknown values.","example":"ach_pooled"},"externalId":{"type":"string","minLength":1,"maxLength":255,"description":"Optional merchant-supplied opaque reference of at most 255 characters. Echoed on the quote resource and not required to be unique.","example":"quote-ref-123"},"in":{"type":"object","required":["currency"],"properties":{"amount":{"type":"string","minLength":1,"pattern":"^\\d+(\\.\\d+)?$","description":"Source amount for exact_in quotes. Omit when `out.amount` is supplied. For currencies with a published scale, fractional digits beyond that scale are rejected. USDC and USDT exact-in and exact-out amounts accept up to six fractional digits; excess precision is rejected, never rounded.","example":"100.00"},"currency":{"type":"string","minLength":1,"example":"USD"},"accountId":{"type":"string","pattern":"^acc_[a-zA-Z0-9]+$","description":"Source account for stablecoin-funded quotes. It must be an active issued custodial account owned by the request customer in the authenticated merchant and developer space and support `in.currency`. The scoped default issued account is used when omitted; ignored for fiat-funded quotes.","example":"acc_base123"}}},"destinationId":{"type":"string","pattern":"^(?:acc|dst)_[a-zA-Z0-9]+$","description":"Movement output. The public ID prefix determines the resource kind: `acc_` identifies an account and `dst_` identifies a recipient destination. For `stablecoin_transfers`, use any active Swipelux stablecoin account or a ready wallet destination owned by the request customer. A wallet destination can contain any address valid for its declared network; create it through the recipient-destination API because raw inline addresses are not accepted. Stablecoin source and destination must use the same network and currency. Destination-owner data is never exposed.","example":"acc_base123"},"out":{"type":"object","required":["currency"],"properties":{"amount":{"type":"string","minLength":1,"pattern":"^\\d+(\\.\\d+)?$","description":"Target amount for exact_out quotes. Omit when `in.amount` is supplied. For currencies with a published scale, fractional digits beyond that scale are rejected. USDC and USDT exact-in and exact-out amounts accept up to six fractional digits; excess precision is rejected, never rounded.","example":"100.00"},"currency":{"type":"string","minLength":1,"example":"USDC"}}},"fees":{"type":"object","description":"Optional quote-level developer fee override. Overrides account fees for this quote only. A `stablecoin_transfers` wallet move currently accepts zero fees only: any non-zero platform or developer fee is rejected with `422 amount_not_deliverable` until direct crypto fee settlement is supported.","required":["breakdown"],"properties":{"breakdown":{"type":"object","required":["developer"],"properties":{"developer":{"type":"object","required":["fixed","bips"],"properties":{"fixed":{"type":"string","pattern":"^\\d+(\\.\\d{1,2})?$","description":"Fixed developer fee as a major-unit decimal string with at most 2 decimal places.","example":"0.50"},"bips":{"type":"integer","minimum":0,"maximum":9999,"description":"Variable developer fee in basis points. `50` means `0.50%`. Must be below 10000 (100%).","example":25}}}}}}}}},"examples":{"fiatToStablecoin":{"summary":"Fiat to stablecoin","value":{"customerId":"cus_7F3pL2nQ9xA5mW8kR1sT4v","capabilityId":"ach_pooled","externalId":"quote-ref-123","in":{"amount":"150.00","currency":"USD"},"destinationId":"acc_base123","out":{"currency":"USDC"}}},"stablecoinToFiat":{"summary":"Stablecoin to fiat","value":{"customerId":"cus_7F3pL2nQ9xA5mW8kR1sT4v","capabilityId":"ach_pooled","in":{"amount":"150.00","currency":"USDC"},"destinationId":"acc_7mA9sL1kBc6dV8xN2pQ4rT","out":{"currency":"USD"}}},"stablecoinToFiatDestination":{"summary":"Stablecoin to fiat destination","value":{"customerId":"cus_7F3pL2nQ9xA5mW8kR1sT4v","capabilityId":"ach_pooled","in":{"amount":"150.00","currency":"USDC"},"destinationId":"dst_2pQ4rT7mA9sL1kBc6dV8xN","out":{"currency":"USD"}}},"stablecoinToFiatExactOut":{"summary":"Stablecoin to fiat with an exact output amount","value":{"customerId":"cus_7F3pL2nQ9xA5mW8kR1sT4v","capabilityId":"ach_pooled","in":{"currency":"USDC"},"destinationId":"dst_2pQ4rT7mA9sL1kBc6dV8xN","out":{"amount":"100.00","currency":"USD"}}},"stablecoinMove":{"summary":"Stablecoin move","value":{"customerId":"cus_7F3pL2nQ9xA5mW8kR1sT4v","capabilityId":"stablecoin_transfers","in":{"amount":"1.234567","currency":"USDC","accountId":"acc_base123"},"destinationId":"dst_8xN2pQ4rT7mA9sL1kBc6dV","out":{"currency":"USDC"}}}}}}},"summary":"Create quote","description":"Creates a priced movement that can be executed before `expiresAt` while the quote, capability, balance, destination, rail, and provider checks still pass."}},"/v3/sandbox/accounts/{accountId}/topup":{"post":{"responses":{"200":{"description":"Sandbox top-up completed","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"type":{"enum":["wallet_to_wallet"]},"state":{"description":"Sandbox top-up state. Closed enum — exhaustive; additions would be a breaking change.","enum":["completed"]},"from":{"type":"object","properties":{"rail":{"type":"string"},"identifier":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"}},"required":["rail","identifier","amount","currency"]},"to":{"type":"object","properties":{"identifier":{"type":"string"}},"required":["identifier"]},"url":{"type":"string"},"onchainUrl":{"type":"string"}},"required":["id","type","state","from","to","url","onchainUrl"]}},"required":["data"]}}}},"400":{"description":"Validation, currency, or non-sandbox-customer rejection","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Live API key — sandbox-only endpoint","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Target account not found for this merchant","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"409":{"description":"Target account is archived","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"postV3SandboxAccountsByAccountIdTopup","tags":["sandbox"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"accountId","required":true}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"amount":{"type":"string","pattern":"^[+-]?(?:\\d*\\.)?\\d+$","description":"Amount of currency to credit. Decimal string."},"currency":{"type":"string","minLength":2,"description":"Crypto currency symbol, for example USDC."}},"required":["amount","currency"]}}}},"summary":"Credit a sandbox account","description":"Credits an issued sandbox wallet account with test funds. No real funds move."}},"/v3/sandbox/transfers/{transferId}/state":{"post":{"responses":{"200":{"description":"Sandbox transfer state forced","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"origin":{"enum":["quoted","inbound_deposit"],"description":"How the transfer was created. `quoted` comes from a v3 quote; `inbound_deposit` comes from reconciliation. Open enum — values are added over time; clients must tolerate unknown values."},"quoteId":{"type":"string","description":"Quote id. Always present for `quoted` transfers and absent for `inbound_deposit` transfers."},"customerId":{"type":"string"},"capabilityId":{"type":"string","description":"Capability id when a capability applies. Absent for inbound deposits that do not map to a capability."},"openTaskIds":{"type":"array","items":{"type":"string"},"description":"Ids of transfer-scoped tasks with status `action_required` or `in_review`, ordered by creation time and id. Empty when nothing is open."},"institutionId":{"type":"string","description":"Public institution id echoed from the quote when the backing bank capability has a single institution."},"externalId":{"type":"string"},"method":{"type":"string","description":"Movement method derived from the capability for quoted transfers or normalized from the receiving rail for inbound deposits. Open enum — values are added over time; clients must tolerate unknown values."},"direction":{"enum":["fiat_to_stablecoin","stablecoin_to_fiat","stablecoin_move"],"description":"Transfer direction. Closed enum — exhaustive; additions would be a breaking change."},"state":{"enum":["awaiting_funds","processing","action_required","completed","failed","canceled"],"description":"Public transfer state. `processing` covers funds received through settlement. `action_required` is projected when an otherwise in-flight transfer has open transfer tasks. `canceled` is projected when an unfunded deposit window expires. Closed enum — exhaustive; additions would be a breaking change."},"stateDetail":{"anyOf":[{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"nullable":true}],"description":"Structured reason for the current state. Nullable on happy-path states; required for action_required and other non-terminal blocking/failure states."},"amounts":{"type":"object","properties":{"in":{"type":"object","properties":{"amount":{"type":"string"},"currency":{"type":"string"},"network":{"enum":["polygon","ethereum","base","arbitrum","optimism","bsc","avalanche"],"description":"Blockchain network for a crypto leg. Absent for fiat legs and uncatalogued networks. Blockchain network id. Open enum — values are added over time; clients must tolerate unknown values."}},"required":["amount","currency"]},"out":{"type":"object","properties":{"amount":{"type":"string"},"currency":{"type":"string"},"network":{"enum":["polygon","ethereum","base","arbitrum","optimism","bsc","avalanche"],"description":"Blockchain network for a crypto leg. Absent for fiat legs and uncatalogued networks. Blockchain network id. Open enum — values are added over time; clients must tolerate unknown values."}},"required":["amount","currency"]},"settled":{"type":"object","properties":{"amount":{"type":"string"},"currency":{"type":"string"}},"required":["amount","currency"],"description":"Actually delivered amount; present once completed."}},"required":["in","out"]},"fees":{"type":"array","items":{"type":"object","properties":{"beneficiary":{"anyOf":[{"enum":["developer"]},{"enum":["service"]}],"description":"Fee beneficiary. Closed enum — exhaustive; additions would be a breaking change."},"amount":{"type":"string"},"currency":{"type":"string"},"rule":{"type":"object","properties":{"fixed":{"type":"string"},"bips":{"type":"number"}},"required":["fixed","bips"]}},"required":["beneficiary","amount","currency"]},"description":"Applied fee snapshot, using the same shape as the quote fee lines."},"source":{"anyOf":[{"type":"object","properties":{"type":{"enum":["external"]}},"required":["type"]},{"type":"object","properties":{"type":{"enum":["account"]},"id":{"type":"string","description":"Source account for stablecoin-funded movements."}},"required":["type","id"]}]},"destination":{"anyOf":[{"type":"object","properties":{"type":{"enum":["account"]},"id":{"type":"string","pattern":"^acc_[a-zA-Z0-9]+$"}},"required":["type","id"]},{"type":"object","properties":{"type":{"enum":["destination"]},"id":{"type":"string","pattern":"^dst_[a-zA-Z0-9]+$"}},"required":["type","id"]}]},"references":{"type":"object","properties":{"transactionHash":{"type":"string"},"traceNumber":{"type":"string","description":"Provider payment tracking reference, such as an ACH trace number or wire reference. Absent when unavailable."},"imad":{"type":"string"},"uetr":{"type":"string"},"explorerUrl":{"type":"string","description":"Block-explorer link for the crypto leg, derived from the wallet network. Absent when the network has no catalogued explorer."},"returnedTransferId":{"anyOf":[{"type":"string","nullable":true}],"description":"Return-movement id; currently always null."}},"required":["returnedTransferId"]},"memo":{"type":"string"},"supportingDocuments":{"type":"array","items":{"type":"string"}},"instructions":{"anyOf":[{"anyOf":[{"type":"object","properties":{"type":{"enum":["bank"]},"method":{"enum":["ach","wire","rtp","sepa","swift","spei","transfers_3_0","uaefts","faster_payments"],"description":"Bank instruction method. Open enum — values are added over time; clients must tolerate unknown values."},"amount":{"type":"object","properties":{"amount":{"type":"string"},"currency":{"type":"string"}},"required":["amount","currency"]},"accountHolderName":{"type":"string"},"bankName":{"type":"string"},"details":{"type":"object","additionalProperties":{"type":"string"},"description":"Per-method banking coordinates in camelCase: routingNumber/accountNumber/accountType (ach, wire, rtp), iban/bic (sepa, uaefts), swiftCode/accountNumber (swift), sortCode/accountNumber (faster_payments), clabe (spei), cbu (transfers_3_0)."},"reference":{"type":"object","properties":{"value":{"type":"string"},"required":{"type":"boolean","description":"Whether the deposit must carry this reference to be matched. Pooled accounts match deposits by reference; named virtual accounts match by account number."}},"required":["value","required"],"description":"Payment reference to include with the deposit."},"localAmount":{"type":"object","properties":{"amount":{"type":"string"},"currency":{"type":"string"}},"required":["amount","currency"],"description":"Amount in the local settlement currency when the rail settles in a currency different from the quoted in amount."},"expiresAt":{"type":"string"}},"required":["type","method","amount","details"]},{"type":"object","properties":{"type":{"enum":["code"]},"method":{"enum":["pix"],"description":"Code instruction method. Open enum — values are added over time; clients must tolerate unknown values."},"amount":{"type":"object","properties":{"amount":{"type":"string"},"currency":{"type":"string"}},"required":["amount","currency"]},"code":{"type":"string","description":"Copyable payment code the customer pastes into their banking app."},"localAmount":{"type":"object","properties":{"amount":{"type":"string"},"currency":{"type":"string"}},"required":["amount","currency"]},"expiresAt":{"type":"string"}},"required":["type","method","amount","code"]},{"type":"object","properties":{"type":{"enum":["redirect"]},"method":{"enum":["pse"],"description":"Redirect instruction method. Open enum — values are added over time; clients must tolerate unknown values."},"amount":{"type":"object","properties":{"amount":{"type":"string"},"currency":{"type":"string"}},"required":["amount","currency"]},"url":{"type":"string","description":"Hosted payment page the customer completes the payment on."},"localAmount":{"type":"object","properties":{"amount":{"type":"string"},"currency":{"type":"string"}},"required":["amount","currency"]},"expiresAt":{"type":"string"}},"required":["type","amount","url"]}],"nullable":true}],"description":"Deposit instructions, discriminated by `type`. `null` for payout-side transfers, which are funded from the source account."},"timestamps":{"type":"object","properties":{"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"fundsReceivedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Currently always null."},"completedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Currently always null."},"failedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Currently always null."},"returnedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Currently always null."},"settledAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Currently always null."}},"required":["createdAt","updatedAt","fundsReceivedAt","completedAt","failedAt","returnedAt","settledAt"]}},"required":["id","origin","customerId","openTaskIds","method","direction","state","stateDetail","amounts","fees","source","destination","references","instructions","timestamps"]}},"required":["data"]}}}},"400":{"description":"Validation, state transition, or non-sandbox rejection","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Live API key — sandbox-only endpoint","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Transfer not found for this merchant","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"postV3SandboxTransfersByTransferIdState","tags":["sandbox"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"transferId","required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["state"],"properties":{"state":{"type":"string","enum":["completed","failed"],"description":"Transfer state implemented by the sandbox simulator."},"stateDetail":{"type":"object","description":"Optional failure detail. Applied only when forcing a payin transfer to `failed`; ignored for completed states and payout transfers.","required":["code"],"properties":{"code":{"type":"string","minLength":1},"message":{"type":"string","minLength":1}}}}},"examples":{"completed":{"value":{"state":"completed"}},"failed":{"value":{"state":"failed","stateDetail":{"code":"provider_review","message":"Sandbox transfer failed."}}}}}}},"summary":"Force sandbox transfer state","description":"Forces an existing sandbox transfer to `completed` or `failed`."}},"/v3/sandbox/tasks":{"post":{"responses":{"201":{"description":"Sandbox task created","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Task identifier."},"name":{"type":"string","minLength":1,"description":"Customer-facing task name."},"customerId":{"type":"string","minLength":1,"description":"Owning customer identifier."},"scope":{"type":"object","properties":{"type":{"type":"string","minLength":1,"description":"Resource type whose workflow created the task."},"id":{"type":"string","minLength":1,"description":"Public resource id or capability key."}},"required":["type","id"]},"subject":{"type":"object","properties":{"type":{"type":"string","minLength":1,"description":"Resource type whose information is requested."},"id":{"type":"string","minLength":1,"description":"Public subject identifier."}},"required":["type","id"]},"originGroupId":{"type":"string","description":"Opaque correlation value."},"category":{"type":"string","minLength":1,"description":"Task category. Open enum — values are added over time; clients must tolerate unknown values."},"status":{"enum":["action_required","in_review","satisfied","rejected","canceled"],"description":"Task lifecycle status. Closed enum — exhaustive; additions would be a breaking change."},"revision":{"type":"integer","minimum":1,"description":"Current task revision."},"remediationRound":{"type":"integer","minimum":0,"description":"Current remediation round."},"reason":{"type":"object","properties":{"code":{"type":"string","minLength":1,"description":"Stable reason code."},"message":{"type":"string","minLength":1,"description":"Safe developer-facing explanation."},"requestedBy":{"type":"string","minLength":1,"description":"Party that requested the work."}},"required":["code","message","requestedBy"]},"dueAt":{"anyOf":[{"type":"string","format":"date-time","description":"Informational due time.","nullable":true}],"description":"Informational due time, or null when none is set."},"deadline":{"anyOf":[{"type":"object","properties":{"at":{"type":"string","format":"date-time","description":"Executable deadline time."},"outcome":{"enum":["none","auto_rejected"],"description":"Closed deadline outcome."},"noticeCount":{"type":"integer","minimum":0,"description":"Recorded auto-reject notices."}},"required":["at","outcome","noticeCount"],"nullable":true}],"description":"Executable deadline, or null when none is set."},"notices":{"type":"array","items":{"type":"object","properties":{"at":{"type":"string","format":"date-time","description":"Informational notice time."},"type":{"type":"string","minLength":1,"description":"Open notice type."},"noticeCount":{"type":"integer","minimum":0,"description":"Recorded notice count."}},"required":["at","type","noticeCount"]},"description":"Ordered informational notices."},"requirements":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Requirement identifier."},"key":{"type":"string","minLength":1,"description":"Stable requirement key."},"section":{"type":"string","description":"Optional presentation section."},"status":{"enum":["action_required","in_review","accepted","rejected","canceled","superseded"],"description":"Closed requirement status."},"request":{"anyOf":[{"type":"object","properties":{"type":{"description":"Profile-field request.","enum":["profile"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"valueType":{"enum":["string","number","boolean","date","country","money","address","tax_identifier","identity_document","object","array"],"description":"Canonical profile value type."},"itemValueType":{"enum":["string","number","boolean","date","country","money","address","tax_identifier","identity_document","object"],"description":"Array element value type."},"profilePointer":{"type":"string","pattern":"^\\/(?:[^/~]|~0|~1)*(?:\\/(?:[^/~]|~0|~1)*)*$","description":"Canonical customer or related-party JSON Pointer."},"constraints":{"type":"object","properties":{"minLength":{"type":"integer","minimum":0,"description":"Minimum string length."},"maxLength":{"type":"integer","minimum":1,"description":"Maximum string length."},"pattern":{"type":"string","description":"Regular expression the value must match."}},"required":[],"description":"Type-compatible profile constraints."}},"required":["type","prompt","required","valueType","profilePointer"]},{"type":"object","properties":{"type":{"description":"Free-text request.","enum":["text"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"constraints":{"type":"object","properties":{"minLength":{"type":"integer","minimum":0,"description":"Minimum string length."},"maxLength":{"type":"integer","minimum":1,"description":"Maximum string length."},"pattern":{"type":"string","description":"Regular expression the value must match."}},"required":[],"description":"String constraints."}},"required":["type","prompt","required"]},{"type":"object","properties":{"type":{"description":"Full-date request.","enum":["date"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"constraints":{"type":"object","properties":{"minimum":{"type":"string","format":"date","description":"Inclusive minimum full-date."},"maximum":{"type":"string","format":"date","description":"Inclusive maximum full-date."}},"required":[],"description":"Full-date constraints."}},"required":["type","prompt","required"]},{"type":"object","properties":{"type":{"description":"Select request discriminator.","enum":["single_select"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"options":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string","minLength":1,"description":"Stable submitted option value."},"label":{"type":"string","minLength":1,"description":"Human-readable option label."},"description":{"type":"string","description":"Additional option guidance."}},"required":["value","label"]},"minItems":1,"description":"Available options."},"constraints":{"type":"object","properties":{"minItems":{"type":"integer","minimum":0,"description":"Minimum selections."},"maxItems":{"type":"integer","minimum":1,"description":"Maximum selections."}},"required":[],"description":"Selection-count constraints."}},"required":["type","prompt","required","options"]},{"type":"object","properties":{"type":{"description":"Select request discriminator.","enum":["multi_select"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"options":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string","minLength":1,"description":"Stable submitted option value."},"label":{"type":"string","minLength":1,"description":"Human-readable option label."},"description":{"type":"string","description":"Additional option guidance."}},"required":["value","label"]},"minItems":1,"description":"Available options."},"constraints":{"type":"object","properties":{"minItems":{"type":"integer","minimum":0,"description":"Minimum selections."},"maxItems":{"type":"integer","minimum":1,"description":"Maximum selections."}},"required":[],"description":"Selection-count constraints."}},"required":["type","prompt","required","options"]},{"type":"object","properties":{"type":{"description":"Boolean request.","enum":["boolean"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."}},"required":["type","prompt","required"]},{"type":"object","properties":{"type":{"description":"Versioned attestation request.","enum":["attestation"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"text":{"type":"string","minLength":1,"description":"Exact text presented for acceptance."},"version":{"type":"string","minLength":1,"description":"Immutable text version."},"constraints":{"type":"object","properties":{"verificationLink":{"allOf":[{"type":"string"},{"type":"number"}],"description":"Forbidden on summary representations."}},"required":[],"description":"URL-free public attestation constraints."}},"required":["type","prompt","required","text","version"]},{"type":"object","properties":{"type":{"description":"Document request.","enum":["document"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"purpose":{"type":"string","minLength":1,"description":"Published document purpose."},"acceptedDocumentTypes":{"type":"array","items":{"type":"string"},"minItems":1,"description":"Accepted document types."},"minDocuments":{"type":"integer","minimum":1,"description":"Minimum document count."},"maxDocuments":{"type":"integer","minimum":1,"description":"Maximum document count."},"constraints":{"type":"object","properties":{"maxAgeDays":{"type":"integer","minimum":1,"description":"Maximum document age in days."},"captureMethods":{"type":"array","items":{"type":"string"},"minItems":1,"description":"Accepted capture methods."},"nameMatch":{"type":"string","description":"Required subject name."},"acceptedFormats":{"type":"array","items":{"type":"string"},"minItems":1,"description":"Accepted media formats."}},"required":[],"description":"Document constraints."}},"required":["type","prompt","required","purpose"]},{"type":"object","properties":{"type":{"description":"Related-party reference request.","enum":["resource_reference"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"resourceType":{"description":"Referenced resource type.","enum":["related_party"]},"requiredRoles":{"type":"array","items":{"type":"string"},"minItems":1,"description":"Required related-party roles."}},"required":["type","prompt","required","resourceType"]},{"type":"object","properties":{"type":{"description":"Mutually exclusive evidence routes.","enum":["alternatives"]},"prompt":{"type":"string","minLength":1,"description":"Instruction for choosing one route."},"alternatives":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"description":"Stable alternative key."},"request":{"anyOf":[{"type":"object","properties":{"type":{"description":"Profile-field request.","enum":["profile"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"valueType":{"enum":["string","number","boolean","date","country","money","address","tax_identifier","identity_document","object","array"],"description":"Canonical profile value type."},"itemValueType":{"enum":["string","number","boolean","date","country","money","address","tax_identifier","identity_document","object"],"description":"Array element value type."},"profilePointer":{"type":"string","pattern":"^\\/(?:[^/~]|~0|~1)*(?:\\/(?:[^/~]|~0|~1)*)*$","description":"Canonical customer or related-party JSON Pointer."},"constraints":{"type":"object","properties":{"minLength":{"type":"integer","minimum":0,"description":"Minimum string length."},"maxLength":{"type":"integer","minimum":1,"description":"Maximum string length."},"pattern":{"type":"string","description":"Regular expression the value must match."}},"required":[],"description":"Type-compatible profile constraints."}},"required":["type","prompt","required","valueType","profilePointer"]},{"type":"object","properties":{"type":{"description":"Free-text request.","enum":["text"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"constraints":{"type":"object","properties":{"minLength":{"type":"integer","minimum":0,"description":"Minimum string length."},"maxLength":{"type":"integer","minimum":1,"description":"Maximum string length."},"pattern":{"type":"string","description":"Regular expression the value must match."}},"required":[],"description":"String constraints."}},"required":["type","prompt","required"]},{"type":"object","properties":{"type":{"description":"Full-date request.","enum":["date"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"constraints":{"type":"object","properties":{"minimum":{"type":"string","format":"date","description":"Inclusive minimum full-date."},"maximum":{"type":"string","format":"date","description":"Inclusive maximum full-date."}},"required":[],"description":"Full-date constraints."}},"required":["type","prompt","required"]},{"type":"object","properties":{"type":{"description":"Select request discriminator.","enum":["single_select"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"options":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string","minLength":1,"description":"Stable submitted option value."},"label":{"type":"string","minLength":1,"description":"Human-readable option label."},"description":{"type":"string","description":"Additional option guidance."}},"required":["value","label"]},"minItems":1,"description":"Available options."},"constraints":{"type":"object","properties":{"minItems":{"type":"integer","minimum":0,"description":"Minimum selections."},"maxItems":{"type":"integer","minimum":1,"description":"Maximum selections."}},"required":[],"description":"Selection-count constraints."}},"required":["type","prompt","required","options"]},{"type":"object","properties":{"type":{"description":"Select request discriminator.","enum":["multi_select"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"options":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string","minLength":1,"description":"Stable submitted option value."},"label":{"type":"string","minLength":1,"description":"Human-readable option label."},"description":{"type":"string","description":"Additional option guidance."}},"required":["value","label"]},"minItems":1,"description":"Available options."},"constraints":{"type":"object","properties":{"minItems":{"type":"integer","minimum":0,"description":"Minimum selections."},"maxItems":{"type":"integer","minimum":1,"description":"Maximum selections."}},"required":[],"description":"Selection-count constraints."}},"required":["type","prompt","required","options"]},{"type":"object","properties":{"type":{"description":"Boolean request.","enum":["boolean"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."}},"required":["type","prompt","required"]},{"type":"object","properties":{"type":{"description":"Versioned attestation request.","enum":["attestation"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"text":{"type":"string","minLength":1,"description":"Exact text presented for acceptance."},"version":{"type":"string","minLength":1,"description":"Immutable text version."},"constraints":{"type":"object","properties":{"verificationLink":{"allOf":[{"type":"string"},{"type":"number"}],"description":"Forbidden on summary representations."}},"required":[],"description":"URL-free public attestation constraints."}},"required":["type","prompt","required","text","version"]},{"type":"object","properties":{"type":{"description":"Document request.","enum":["document"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"purpose":{"type":"string","minLength":1,"description":"Published document purpose."},"acceptedDocumentTypes":{"type":"array","items":{"type":"string"},"minItems":1,"description":"Accepted document types."},"minDocuments":{"type":"integer","minimum":1,"description":"Minimum document count."},"maxDocuments":{"type":"integer","minimum":1,"description":"Maximum document count."},"constraints":{"type":"object","properties":{"maxAgeDays":{"type":"integer","minimum":1,"description":"Maximum document age in days."},"captureMethods":{"type":"array","items":{"type":"string"},"minItems":1,"description":"Accepted capture methods."},"nameMatch":{"type":"string","description":"Required subject name."},"acceptedFormats":{"type":"array","items":{"type":"string"},"minItems":1,"description":"Accepted media formats."}},"required":[],"description":"Document constraints."}},"required":["type","prompt","required","purpose"]},{"type":"object","properties":{"type":{"description":"Related-party reference request.","enum":["resource_reference"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"resourceType":{"description":"Referenced resource type.","enum":["related_party"]},"requiredRoles":{"type":"array","items":{"type":"string"},"minItems":1,"description":"Required related-party roles."}},"required":["type","prompt","required","resourceType"]}]}},"required":["key","request"]},"minItems":1,"description":"Non-recursive alternative requests."}},"required":["type","prompt","alternatives"]}]},"reviewFeedback":{"type":"object","properties":{"code":{"type":"string","minLength":1,"description":"Stable actionable feedback code."},"message":{"type":"string","minLength":1,"description":"Redacted developer-facing feedback."}},"required":["code","message"],"description":"Safe review feedback."}},"required":["id","key","status","request"]},"description":"Current requirements."},"completionPolicy":{"anyOf":[{"anyOf":[{"type":"object","properties":{"type":{"enum":["requirements","verification_sessions","tos_sessions"],"description":"Task child collection evaluated by this policy leaf."},"completion":{"description":"Every live member of the collection must complete.","enum":["all"]}},"required":["type","completion"]},{"type":"object","properties":{"mode":{"enum":["all_of","any_of"],"description":"How nested completion conditions are combined."},"conditions":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"type":{"enum":["requirements","verification_sessions","tos_sessions"],"description":"Task child collection evaluated by this policy leaf."},"completion":{"description":"Every live member of the collection must complete.","enum":["all"]}},"required":["type","completion"]},{"type":"object","properties":{"mode":{"enum":["all_of","any_of"],"description":"How nested completion conditions are combined."},"conditions":{"type":"array","items":{"type":"object","properties":{"type":{"enum":["requirements","verification_sessions","tos_sessions"],"description":"Task child collection evaluated by this policy leaf."},"completion":{"description":"Every live member of the collection must complete.","enum":["all"]}},"required":["type","completion"]},"minItems":2,"description":"Two or more normalized child conditions."}},"required":["mode","conditions"]}]},"minItems":2,"description":"Two or more normalized child conditions."}},"required":["mode","conditions"]}],"nullable":true}],"description":"Completion expression, or null when no completion policy is available."},"createdAt":{"type":"string","format":"date-time","description":"Task creation time."},"updatedAt":{"type":"string","format":"date-time","description":"Last task update time."},"verificationSessions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^vfy_[0-9A-Za-z]+$","description":"Verification-session identifier (`vfy_...`)."},"key":{"type":"string","minLength":1,"description":"Stable session key."},"type":{"type":"string","minLength":1,"description":"Open hosted-session type."},"status":{"enum":["action_required","in_review","completed","rejected","canceled"],"description":"Closed session status."}},"required":["id","key","type","status"]},"description":"URL-free identity and business session summaries."},"tosSessions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^vfy_[0-9A-Za-z]+$","description":"Verification-session identifier (`vfy_...`)."},"key":{"type":"string","minLength":1,"description":"Stable session key."},"type":{"type":"string","minLength":1,"description":"Open hosted-session type."},"status":{"enum":["action_required","in_review","completed","rejected","canceled"],"description":"Closed session status."}},"required":["id","key","type","status"]},"description":"URL-free terms-session summaries."}},"required":["id","name","customerId","scope","subject","category","status","revision","remediationRound","reason","dueAt","deadline","notices","requirements","completionPolicy","createdAt","updatedAt","verificationSessions","tosSessions"]}},"required":["data"]}}}},"400":{"description":"Validation error","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Live API key — sandbox-only endpoint","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Customer, capability, or transfer not found","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"postV3SandboxTasks","tags":["sandbox"],"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"scope":{"anyOf":[{"type":"object","properties":{"type":{"enum":["customer"]},"customerId":{"type":"string","pattern":"^cus_[a-zA-Z0-9]+$","description":"Customer id that owns the sandbox requirement."}},"required":["type","customerId"]},{"type":"object","properties":{"type":{"enum":["capability"]},"customerId":{"type":"string","pattern":"^cus_[a-zA-Z0-9]+$","description":"Customer id that owns the capability requirement."},"capabilityId":{"type":"string","minLength":1,"description":"Public v3 capability id, for example ach_pooled."}},"required":["type","customerId","capabilityId"]},{"type":"object","properties":{"type":{"enum":["transfer"]},"customerId":{"type":"string","pattern":"^cus_[a-zA-Z0-9]+$","description":"Customer id that owns the transfer requirement."},"transferId":{"type":"string","pattern":"^tr_[a-zA-Z0-9]+$","description":"Public transfer id to scope the requirement to."}},"required":["type","customerId","transferId"]}]},"category":{"enum":["intake","information_request","correction_required","verification","terms_of_service","periodic_review","transaction_rfi","issue_resolution","other"]},"subject":{"type":"object","properties":{"type":{"enum":["person","entity"],"description":"Whether the subject is a natural person or legal entity."},"name":{"type":"string","minLength":1},"relatedPartyId":{"anyOf":[{"type":"string","pattern":"^rp_[a-zA-Z0-9]+$","description":"Public v3 related-party id (`rp_...`).","nullable":true}]}},"required":["type","name","relatedPartyId"]},"dueAt":{"type":"string","format":"date-time"},"deadline":{"type":"object","properties":{"type":{"enum":["reminder","final_notice","auto_reject","provider_sla"]},"outcome":{"enum":["auto_rejected","none"]},"noticeCount":{"type":"integer","minimum":0}},"required":["type","outcome"]},"items":{"type":"array","items":{"type":"object","properties":{"type":{"enum":["document","profile","questionnaire","explanation","attestation"],"description":"Kind of item the customer must submit."},"request":{"type":"string","minLength":1,"description":"Human-readable request shown on the v3 requirement."},"profilePointer":{"type":"string","pattern":"^\\/(?:[^/~]|~0|~1)*(?:\\/(?:[^/~]|~0|~1)*)*$","description":"JSON Pointer into the customer resource naming the field the item asks for. Present only on profile items; older profile items may omit it."},"constraints":{"type":"object","properties":{"acceptedDocumentTypes":{"type":"array","items":{"type":"string","minLength":1},"minItems":1},"maxAgeDays":{"type":"integer","minimum":1},"captureMethods":{"type":"array","items":{"type":"string","minLength":1},"minItems":1},"nameMatch":{"type":"string","minLength":1},"acceptedFormats":{"type":"array","items":{"type":"string","minLength":1},"minItems":1}},"required":[],"additionalProperties":false,"description":"Optional public document constraints."}},"required":["type","request"]},"minItems":1}},"required":["scope","items"]}}}},"summary":"Create sandbox task","description":"Creates a canonical sandbox task scoped to a customer, capability, or transfer."}},"/v3/sandbox/tasks/{taskId}/review":{"post":{"responses":{"200":{"description":"Sandbox task reviewed","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Task identifier."},"name":{"type":"string","minLength":1,"description":"Customer-facing task name."},"customerId":{"type":"string","minLength":1,"description":"Owning customer identifier."},"scope":{"type":"object","properties":{"type":{"type":"string","minLength":1,"description":"Resource type whose workflow created the task."},"id":{"type":"string","minLength":1,"description":"Public resource id or capability key."}},"required":["type","id"]},"subject":{"type":"object","properties":{"type":{"type":"string","minLength":1,"description":"Resource type whose information is requested."},"id":{"type":"string","minLength":1,"description":"Public subject identifier."}},"required":["type","id"]},"originGroupId":{"type":"string","description":"Opaque correlation value."},"category":{"type":"string","minLength":1,"description":"Task category. Open enum — values are added over time; clients must tolerate unknown values."},"status":{"enum":["action_required","in_review","satisfied","rejected","canceled"],"description":"Task lifecycle status. Closed enum — exhaustive; additions would be a breaking change."},"revision":{"type":"integer","minimum":1,"description":"Current task revision."},"remediationRound":{"type":"integer","minimum":0,"description":"Current remediation round."},"reason":{"type":"object","properties":{"code":{"type":"string","minLength":1,"description":"Stable reason code."},"message":{"type":"string","minLength":1,"description":"Safe developer-facing explanation."},"requestedBy":{"type":"string","minLength":1,"description":"Party that requested the work."}},"required":["code","message","requestedBy"]},"dueAt":{"anyOf":[{"type":"string","format":"date-time","description":"Informational due time.","nullable":true}],"description":"Informational due time, or null when none is set."},"deadline":{"anyOf":[{"type":"object","properties":{"at":{"type":"string","format":"date-time","description":"Executable deadline time."},"outcome":{"enum":["none","auto_rejected"],"description":"Closed deadline outcome."},"noticeCount":{"type":"integer","minimum":0,"description":"Recorded auto-reject notices."}},"required":["at","outcome","noticeCount"],"nullable":true}],"description":"Executable deadline, or null when none is set."},"notices":{"type":"array","items":{"type":"object","properties":{"at":{"type":"string","format":"date-time","description":"Informational notice time."},"type":{"type":"string","minLength":1,"description":"Open notice type."},"noticeCount":{"type":"integer","minimum":0,"description":"Recorded notice count."}},"required":["at","type","noticeCount"]},"description":"Ordered informational notices."},"requirements":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Requirement identifier."},"key":{"type":"string","minLength":1,"description":"Stable requirement key."},"section":{"type":"string","description":"Optional presentation section."},"status":{"enum":["action_required","in_review","accepted","rejected","canceled","superseded"],"description":"Closed requirement status."},"request":{"anyOf":[{"type":"object","properties":{"type":{"description":"Profile-field request.","enum":["profile"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"valueType":{"enum":["string","number","boolean","date","country","money","address","tax_identifier","identity_document","object","array"],"description":"Canonical profile value type."},"itemValueType":{"enum":["string","number","boolean","date","country","money","address","tax_identifier","identity_document","object"],"description":"Array element value type."},"profilePointer":{"type":"string","pattern":"^\\/(?:[^/~]|~0|~1)*(?:\\/(?:[^/~]|~0|~1)*)*$","description":"Canonical customer or related-party JSON Pointer."},"constraints":{"type":"object","properties":{"minLength":{"type":"integer","minimum":0,"description":"Minimum string length."},"maxLength":{"type":"integer","minimum":1,"description":"Maximum string length."},"pattern":{"type":"string","description":"Regular expression the value must match."}},"required":[],"description":"Type-compatible profile constraints."}},"required":["type","prompt","required","valueType","profilePointer"]},{"type":"object","properties":{"type":{"description":"Free-text request.","enum":["text"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"constraints":{"type":"object","properties":{"minLength":{"type":"integer","minimum":0,"description":"Minimum string length."},"maxLength":{"type":"integer","minimum":1,"description":"Maximum string length."},"pattern":{"type":"string","description":"Regular expression the value must match."}},"required":[],"description":"String constraints."}},"required":["type","prompt","required"]},{"type":"object","properties":{"type":{"description":"Full-date request.","enum":["date"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"constraints":{"type":"object","properties":{"minimum":{"type":"string","format":"date","description":"Inclusive minimum full-date."},"maximum":{"type":"string","format":"date","description":"Inclusive maximum full-date."}},"required":[],"description":"Full-date constraints."}},"required":["type","prompt","required"]},{"type":"object","properties":{"type":{"description":"Select request discriminator.","enum":["single_select"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"options":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string","minLength":1,"description":"Stable submitted option value."},"label":{"type":"string","minLength":1,"description":"Human-readable option label."},"description":{"type":"string","description":"Additional option guidance."}},"required":["value","label"]},"minItems":1,"description":"Available options."},"constraints":{"type":"object","properties":{"minItems":{"type":"integer","minimum":0,"description":"Minimum selections."},"maxItems":{"type":"integer","minimum":1,"description":"Maximum selections."}},"required":[],"description":"Selection-count constraints."}},"required":["type","prompt","required","options"]},{"type":"object","properties":{"type":{"description":"Select request discriminator.","enum":["multi_select"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"options":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string","minLength":1,"description":"Stable submitted option value."},"label":{"type":"string","minLength":1,"description":"Human-readable option label."},"description":{"type":"string","description":"Additional option guidance."}},"required":["value","label"]},"minItems":1,"description":"Available options."},"constraints":{"type":"object","properties":{"minItems":{"type":"integer","minimum":0,"description":"Minimum selections."},"maxItems":{"type":"integer","minimum":1,"description":"Maximum selections."}},"required":[],"description":"Selection-count constraints."}},"required":["type","prompt","required","options"]},{"type":"object","properties":{"type":{"description":"Boolean request.","enum":["boolean"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."}},"required":["type","prompt","required"]},{"type":"object","properties":{"type":{"description":"Versioned attestation request.","enum":["attestation"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"text":{"type":"string","minLength":1,"description":"Exact text presented for acceptance."},"version":{"type":"string","minLength":1,"description":"Immutable text version."},"constraints":{"type":"object","properties":{"verificationLink":{"allOf":[{"type":"string"},{"type":"number"}],"description":"Forbidden on summary representations."}},"required":[],"description":"URL-free public attestation constraints."}},"required":["type","prompt","required","text","version"]},{"type":"object","properties":{"type":{"description":"Document request.","enum":["document"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"purpose":{"type":"string","minLength":1,"description":"Published document purpose."},"acceptedDocumentTypes":{"type":"array","items":{"type":"string"},"minItems":1,"description":"Accepted document types."},"minDocuments":{"type":"integer","minimum":1,"description":"Minimum document count."},"maxDocuments":{"type":"integer","minimum":1,"description":"Maximum document count."},"constraints":{"type":"object","properties":{"maxAgeDays":{"type":"integer","minimum":1,"description":"Maximum document age in days."},"captureMethods":{"type":"array","items":{"type":"string"},"minItems":1,"description":"Accepted capture methods."},"nameMatch":{"type":"string","description":"Required subject name."},"acceptedFormats":{"type":"array","items":{"type":"string"},"minItems":1,"description":"Accepted media formats."}},"required":[],"description":"Document constraints."}},"required":["type","prompt","required","purpose"]},{"type":"object","properties":{"type":{"description":"Related-party reference request.","enum":["resource_reference"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"resourceType":{"description":"Referenced resource type.","enum":["related_party"]},"requiredRoles":{"type":"array","items":{"type":"string"},"minItems":1,"description":"Required related-party roles."}},"required":["type","prompt","required","resourceType"]},{"type":"object","properties":{"type":{"description":"Mutually exclusive evidence routes.","enum":["alternatives"]},"prompt":{"type":"string","minLength":1,"description":"Instruction for choosing one route."},"alternatives":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"description":"Stable alternative key."},"request":{"anyOf":[{"type":"object","properties":{"type":{"description":"Profile-field request.","enum":["profile"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"valueType":{"enum":["string","number","boolean","date","country","money","address","tax_identifier","identity_document","object","array"],"description":"Canonical profile value type."},"itemValueType":{"enum":["string","number","boolean","date","country","money","address","tax_identifier","identity_document","object"],"description":"Array element value type."},"profilePointer":{"type":"string","pattern":"^\\/(?:[^/~]|~0|~1)*(?:\\/(?:[^/~]|~0|~1)*)*$","description":"Canonical customer or related-party JSON Pointer."},"constraints":{"type":"object","properties":{"minLength":{"type":"integer","minimum":0,"description":"Minimum string length."},"maxLength":{"type":"integer","minimum":1,"description":"Maximum string length."},"pattern":{"type":"string","description":"Regular expression the value must match."}},"required":[],"description":"Type-compatible profile constraints."}},"required":["type","prompt","required","valueType","profilePointer"]},{"type":"object","properties":{"type":{"description":"Free-text request.","enum":["text"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"constraints":{"type":"object","properties":{"minLength":{"type":"integer","minimum":0,"description":"Minimum string length."},"maxLength":{"type":"integer","minimum":1,"description":"Maximum string length."},"pattern":{"type":"string","description":"Regular expression the value must match."}},"required":[],"description":"String constraints."}},"required":["type","prompt","required"]},{"type":"object","properties":{"type":{"description":"Full-date request.","enum":["date"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"constraints":{"type":"object","properties":{"minimum":{"type":"string","format":"date","description":"Inclusive minimum full-date."},"maximum":{"type":"string","format":"date","description":"Inclusive maximum full-date."}},"required":[],"description":"Full-date constraints."}},"required":["type","prompt","required"]},{"type":"object","properties":{"type":{"description":"Select request discriminator.","enum":["single_select"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"options":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string","minLength":1,"description":"Stable submitted option value."},"label":{"type":"string","minLength":1,"description":"Human-readable option label."},"description":{"type":"string","description":"Additional option guidance."}},"required":["value","label"]},"minItems":1,"description":"Available options."},"constraints":{"type":"object","properties":{"minItems":{"type":"integer","minimum":0,"description":"Minimum selections."},"maxItems":{"type":"integer","minimum":1,"description":"Maximum selections."}},"required":[],"description":"Selection-count constraints."}},"required":["type","prompt","required","options"]},{"type":"object","properties":{"type":{"description":"Select request discriminator.","enum":["multi_select"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"options":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string","minLength":1,"description":"Stable submitted option value."},"label":{"type":"string","minLength":1,"description":"Human-readable option label."},"description":{"type":"string","description":"Additional option guidance."}},"required":["value","label"]},"minItems":1,"description":"Available options."},"constraints":{"type":"object","properties":{"minItems":{"type":"integer","minimum":0,"description":"Minimum selections."},"maxItems":{"type":"integer","minimum":1,"description":"Maximum selections."}},"required":[],"description":"Selection-count constraints."}},"required":["type","prompt","required","options"]},{"type":"object","properties":{"type":{"description":"Boolean request.","enum":["boolean"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."}},"required":["type","prompt","required"]},{"type":"object","properties":{"type":{"description":"Versioned attestation request.","enum":["attestation"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"text":{"type":"string","minLength":1,"description":"Exact text presented for acceptance."},"version":{"type":"string","minLength":1,"description":"Immutable text version."},"constraints":{"type":"object","properties":{"verificationLink":{"allOf":[{"type":"string"},{"type":"number"}],"description":"Forbidden on summary representations."}},"required":[],"description":"URL-free public attestation constraints."}},"required":["type","prompt","required","text","version"]},{"type":"object","properties":{"type":{"description":"Document request.","enum":["document"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"purpose":{"type":"string","minLength":1,"description":"Published document purpose."},"acceptedDocumentTypes":{"type":"array","items":{"type":"string"},"minItems":1,"description":"Accepted document types."},"minDocuments":{"type":"integer","minimum":1,"description":"Minimum document count."},"maxDocuments":{"type":"integer","minimum":1,"description":"Maximum document count."},"constraints":{"type":"object","properties":{"maxAgeDays":{"type":"integer","minimum":1,"description":"Maximum document age in days."},"captureMethods":{"type":"array","items":{"type":"string"},"minItems":1,"description":"Accepted capture methods."},"nameMatch":{"type":"string","description":"Required subject name."},"acceptedFormats":{"type":"array","items":{"type":"string"},"minItems":1,"description":"Accepted media formats."}},"required":[],"description":"Document constraints."}},"required":["type","prompt","required","purpose"]},{"type":"object","properties":{"type":{"description":"Related-party reference request.","enum":["resource_reference"]},"prompt":{"type":"string","minLength":1,"description":"Instruction shown to the person completing the task."},"required":{"description":"Published non-alternative requests are required.","enum":[true]},"allowsAbsence":{"type":"boolean","description":"Whether an absence answer is accepted."},"resourceType":{"description":"Referenced resource type.","enum":["related_party"]},"requiredRoles":{"type":"array","items":{"type":"string"},"minItems":1,"description":"Required related-party roles."}},"required":["type","prompt","required","resourceType"]}]}},"required":["key","request"]},"minItems":1,"description":"Non-recursive alternative requests."}},"required":["type","prompt","alternatives"]}]},"reviewFeedback":{"type":"object","properties":{"code":{"type":"string","minLength":1,"description":"Stable actionable feedback code."},"message":{"type":"string","minLength":1,"description":"Redacted developer-facing feedback."}},"required":["code","message"],"description":"Safe review feedback."}},"required":["id","key","status","request"]},"description":"Current requirements."},"completionPolicy":{"anyOf":[{"anyOf":[{"type":"object","properties":{"type":{"enum":["requirements","verification_sessions","tos_sessions"],"description":"Task child collection evaluated by this policy leaf."},"completion":{"description":"Every live member of the collection must complete.","enum":["all"]}},"required":["type","completion"]},{"type":"object","properties":{"mode":{"enum":["all_of","any_of"],"description":"How nested completion conditions are combined."},"conditions":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"type":{"enum":["requirements","verification_sessions","tos_sessions"],"description":"Task child collection evaluated by this policy leaf."},"completion":{"description":"Every live member of the collection must complete.","enum":["all"]}},"required":["type","completion"]},{"type":"object","properties":{"mode":{"enum":["all_of","any_of"],"description":"How nested completion conditions are combined."},"conditions":{"type":"array","items":{"type":"object","properties":{"type":{"enum":["requirements","verification_sessions","tos_sessions"],"description":"Task child collection evaluated by this policy leaf."},"completion":{"description":"Every live member of the collection must complete.","enum":["all"]}},"required":["type","completion"]},"minItems":2,"description":"Two or more normalized child conditions."}},"required":["mode","conditions"]}]},"minItems":2,"description":"Two or more normalized child conditions."}},"required":["mode","conditions"]}],"nullable":true}],"description":"Completion expression, or null when no completion policy is available."},"createdAt":{"type":"string","format":"date-time","description":"Task creation time."},"updatedAt":{"type":"string","format":"date-time","description":"Last task update time."},"verificationSessions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^vfy_[0-9A-Za-z]+$","description":"Verification-session identifier (`vfy_...`)."},"key":{"type":"string","minLength":1,"description":"Stable session key."},"type":{"type":"string","minLength":1,"description":"Open hosted-session type."},"status":{"enum":["action_required","in_review","completed","rejected","canceled"],"description":"Closed session status."}},"required":["id","key","type","status"]},"description":"URL-free identity and business session summaries."},"tosSessions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^vfy_[0-9A-Za-z]+$","description":"Verification-session identifier (`vfy_...`)."},"key":{"type":"string","minLength":1,"description":"Stable session key."},"type":{"type":"string","minLength":1,"description":"Open hosted-session type."},"status":{"enum":["action_required","in_review","completed","rejected","canceled"],"description":"Closed session status."}},"required":["id","key","type","status"]},"description":"URL-free terms-session summaries."}},"required":["id","name","customerId","scope","subject","category","status","revision","remediationRound","reason","dueAt","deadline","notices","requirements","completionPolicy","createdAt","updatedAt","verificationSessions","tosSessions"]}},"required":["data"]}}}},"400":{"description":"Validation error","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Live API key — sandbox-only endpoint","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Task not found","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"409":{"description":"Task has no submitted submission to review","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"postV3SandboxTasksByTaskIdReview","tags":["sandbox"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"taskId","required":true}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"outcome":{"enum":["accepted","rejected"],"description":"Sandbox review outcome for the current task submission."},"message":{"type":"string","minLength":1},"items":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1},"verdict":{"enum":["accepted","rejected"]},"rejection":{"type":"object","properties":{"code":{"type":"string","minLength":1},"message":{"type":"string","minLength":1}},"required":["code","message"]}},"required":["key","verdict"]}}},"required":["outcome"]}}}},"summary":"Review sandbox task submission","description":"Accepts or rejects the current submitted sandbox task answers."}},"/v3/sandbox/customers/{customerId}/verification":{"post":{"responses":{"200":{"description":"Verification state simulated.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"customerId":{"type":"string","description":"Verified customer id."},"customerType":{"enum":["individual","business"],"description":"Customer verification workflow that was simulated."},"status":{"enum":["approved","rejected"],"description":"Verification state after simulation."},"previousStatus":{"enum":["not_started","pending","approved","rejected"],"description":"Verification state before simulation."},"reason":{"anyOf":[{"type":"string","nullable":true}],"description":"Caller-supplied simulation reason, or null when omitted."}},"required":["customerId","customerType","status","previousStatus","reason"]}},"required":["data"]}}}},"400":{"description":"Invalid request.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Live API key — sandbox-only endpoint","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Customer not found.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"422":{"description":"Verification state cannot be simulated safely.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"502":{"description":"Sandbox verification provider request failed.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"503":{"description":"Sandbox verification provider unavailable.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"postV3SandboxCustomersByCustomerIdVerification","tags":["sandbox"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"customerId","required":true}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"enum":["approved","rejected"],"description":"Sandbox verification decision to simulate."},"reason":{"type":"string","minLength":1,"description":"Optional public-safe reason included in a changed verification webhook."}},"required":["status"]}}}},"summary":"Simulate customer verification","description":"Approve or reject an individual KYC or business KYB review in sandbox. The environment is selected by the API key."}},"/v3/sandbox/customers/{customerId}/capabilities/{capabilityId}/status":{"post":{"responses":{"200":{"description":"Sandbox capability status forced","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z0-9]+(?:_[a-z0-9]+)*$","description":"Permanent capability id, for example `ach_pooled`. `wire_pooled`/`wire_named` cover bank-wire capability requests, including provider routes that use the domestic wire network as the underlying rail. The internal rail remains a method/rail vocabulary value, not a public capability id. Open enum — values are added over time; clients must tolerate unknown values."},"customerId":{"type":"string","description":"Customer identifier."},"method":{"enum":["ach","wire","rtp","pix","sepa","swift","spei","pse","transfers_3_0","uaefts","faster_payments","sepa_instant","ipp","card","stablecoin_transfers"],"description":"Single payment method represented by this capability. Open enum — values are added over time; clients must tolerate unknown values."},"accountType":{"anyOf":[{"enum":["pooled","named"],"nullable":true}],"description":"Bank account type when the capability is bank-account based."},"status":{"description":"Capability status. Closed enum — exhaustive; additions would be a breaking change.","enum":["ready"]},"statusReason":{"allOf":[{"type":"string"},{"type":"number"}],"description":"Structured reason for a non-ready capability. Ready capabilities omit this field."},"openTaskIds":{"type":"array","items":{"type":"string"},"description":"Ids of open tasks associated with this capability or one of its applications, including shared customer tasks reached through an active dependency, ordered by creation time and then task id. Empty when nothing is open."},"applications":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Application identifier (`apl_...`)."},"institution":{"type":"object","properties":{"id":{"type":"string","description":"Opaque public institution id to send in `institutions`."},"name":{"type":"string","description":"Public institution name."},"bic":{"anyOf":[{"type":"string","nullable":true}],"description":"BIC/SWIFT code when known."}},"required":["id","name","bic"]},"status":{"enum":["requested","in_review","action_required","ready","rejected","disabled","canceled"],"description":"Institution application status. Closed enum — exhaustive; additions would be a breaking change."},"statusReason":{"anyOf":[{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"nullable":true}],"description":"Structured reason for the current status. `in_review` always returns a stored or synthesized reason; self-explanatory statuses may return null."},"openTaskIds":{"type":"array","items":{"type":"string"},"description":"Ids of open tasks associated with this application, including shared customer tasks reached through an active dependency, ordered by creation time and then task id. Empty when nothing is open."},"submittedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Submitted at."},"createdAt":{"type":"string","description":"Created at."},"updatedAt":{"type":"string","description":"Updated at."}},"required":["id","institution","status","statusReason","openTaskIds","submittedAt","createdAt","updatedAt"]},"description":"Institution compliance flows for this capability."},"submittedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Submitted at."},"createdAt":{"type":"string","description":"Created at."},"updatedAt":{"type":"string","description":"Updated at."}},"required":["id","customerId","method","accountType","status","openTaskIds","applications","submittedAt","createdAt","updatedAt"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z0-9]+(?:_[a-z0-9]+)*$","description":"Permanent capability id, for example `ach_pooled`. `wire_pooled`/`wire_named` cover bank-wire capability requests, including provider routes that use the domestic wire network as the underlying rail. The internal rail remains a method/rail vocabulary value, not a public capability id. Open enum — values are added over time; clients must tolerate unknown values."},"customerId":{"type":"string","description":"Customer identifier."},"method":{"enum":["ach","wire","rtp","pix","sepa","swift","spei","pse","transfers_3_0","uaefts","faster_payments","sepa_instant","ipp","card","stablecoin_transfers"],"description":"Single payment method represented by this capability. Open enum — values are added over time; clients must tolerate unknown values."},"accountType":{"anyOf":[{"enum":["pooled","named"],"nullable":true}],"description":"Bank account type when the capability is bank-account based."},"status":{"enum":["pending","restricted","rejected","canceled"],"description":"Capability status. Closed enum — exhaustive; additions would be a breaking change."},"statusReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code for the capability status."},"resolution":{"enum":["complete_tasks","wait","contact_support","none"],"description":"Action that can move the capability forward."},"message":{"type":"string","description":"Human-readable explanation of the capability status."}},"required":["code","resolution","message"],"description":"Structured reason for a non-ready capability. Ready capabilities omit this field."},"openTaskIds":{"type":"array","items":{"type":"string"},"description":"Ids of open tasks associated with this capability or one of its applications, including shared customer tasks reached through an active dependency, ordered by creation time and then task id. Empty when nothing is open."},"applications":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Application identifier (`apl_...`)."},"institution":{"type":"object","properties":{"id":{"type":"string","description":"Opaque public institution id to send in `institutions`."},"name":{"type":"string","description":"Public institution name."},"bic":{"anyOf":[{"type":"string","nullable":true}],"description":"BIC/SWIFT code when known."}},"required":["id","name","bic"]},"status":{"enum":["requested","in_review","action_required","ready","rejected","disabled","canceled"],"description":"Institution application status. Closed enum — exhaustive; additions would be a breaking change."},"statusReason":{"anyOf":[{"type":"object","properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog."},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}},"required":["code","message","actor","retryable"],"nullable":true}],"description":"Structured reason for the current status. `in_review` always returns a stored or synthesized reason; self-explanatory statuses may return null."},"openTaskIds":{"type":"array","items":{"type":"string"},"description":"Ids of open tasks associated with this application, including shared customer tasks reached through an active dependency, ordered by creation time and then task id. Empty when nothing is open."},"submittedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Submitted at."},"createdAt":{"type":"string","description":"Created at."},"updatedAt":{"type":"string","description":"Updated at."}},"required":["id","institution","status","statusReason","openTaskIds","submittedAt","createdAt","updatedAt"]},"description":"Institution compliance flows for this capability."},"submittedAt":{"anyOf":[{"type":"string","nullable":true}],"description":"Submitted at."},"createdAt":{"type":"string","description":"Created at."},"updatedAt":{"type":"string","description":"Updated at."}},"required":["id","customerId","method","accountType","status","statusReason","openTaskIds","applications","submittedAt","createdAt","updatedAt"]}],"description":"Capability."}},"required":["data"]}}}},"400":{"description":"Validation error","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Live API key — sandbox-only endpoint","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Customer not found","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"422":{"description":"Capability or requested status cannot be forced","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"postV3SandboxCustomersByCustomerIdCapabilitiesByCapabilityIdStatus","tags":["sandbox"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"customerId","required":true},{"schema":{"type":"string"},"in":"path","name":"capabilityId","required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["status"],"properties":{"status":{"type":"string","enum":["ready","rejected","restricted"],"description":"Capability status implemented by the sandbox simulator."}}},"examples":{"ready":{"value":{"status":"ready"}},"rejected":{"value":{"status":"rejected"}},"restricted":{"value":{"status":"restricted"}}}}}},"summary":"Force sandbox capability status","description":"Forces a sandbox capability to `ready`, `rejected`, or `restricted`."}},"/v3/webhooks":{"get":{"responses":{"200":{"description":"Webhook endpoints retrieved","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Webhook endpoint id."},"url":{"type":"string","description":"Webhook destination URL."},"events":{"type":"array","items":{"type":"string"},"description":"Event types delivered to this endpoint."},"status":{"enum":["active","archived"],"description":"Webhook endpoint lifecycle status. Closed enum — exhaustive; additions would be a breaking change."},"createdAt":{"type":"string","description":"Created at."},"updatedAt":{"type":"string","description":"Updated at."},"archivedAt":{"type":"string","description":"Archived at."}},"required":["id","url","events","status","createdAt","updatedAt"]}}},"required":["data"]}}}},"400":{"description":"Invalid request.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Resource not found.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"getV3Webhooks","tags":["webhooks"],"parameters":[],"summary":"List webhook endpoints","description":"Lists webhook endpoints configured for the authenticated merchant."},"post":{"responses":{"201":{"description":"Webhook endpoint created","headers":{"Idempotency-Replayed":{"description":"Present with value `true` when an idempotent request is replayed.","schema":{"type":"string","enum":["true"]}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"Webhook endpoint id."},"url":{"type":"string","description":"Webhook destination URL."},"events":{"type":"array","items":{"type":"string"},"description":"Event types delivered to this endpoint."},"status":{"enum":["active","archived"],"description":"Webhook endpoint lifecycle status. Closed enum — exhaustive; additions would be a breaking change."},"createdAt":{"type":"string","description":"Created at."},"updatedAt":{"type":"string","description":"Updated at."},"archivedAt":{"type":"string","description":"Archived at."}},"required":["id","url","events","status","createdAt","updatedAt"]}},"required":["data"]}}}},"400":{"description":"Invalid request.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Resource not found.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"postV3Webhooks","tags":["webhooks"],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":255},"example":"idem_20260626_0001","description":"Required for effectful v3 requests (POST, PATCH, PUT, DELETE). Reuse the same key with the same body to replay the cached response."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["url","events"],"properties":{"url":{"type":"string","format":"uri","description":"Webhook destination URL."},"events":{"type":"array","minItems":1,"items":{"type":"string","enum":["customer.created","customer.updated","customer.archived","capability.created","capability.status_changed","application.status_changed","recipient.status_changed","destination.status_changed","account.created","account.status_changed","account.details_changed","api.deprecation","transfer.created","transfer.state_changed"],"description":"Open enum — values are added over time; clients must tolerate new names appearing in the catalog. Unknown names are rejected at write time against the current catalog."},"description":"Event types delivered to this endpoint."}}}}}},"summary":"Create webhook endpoint","description":"Creates a webhook endpoint with an event-type allowlist."}},"/v3/webhooks/{webhookId}":{"patch":{"responses":{"200":{"description":"Webhook endpoint updated","headers":{"Idempotency-Replayed":{"description":"Present with value `true` when an idempotent request is replayed.","schema":{"type":"string","enum":["true"]}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"Webhook endpoint id."},"url":{"type":"string","description":"Webhook destination URL."},"events":{"type":"array","items":{"type":"string"},"description":"Event types delivered to this endpoint."},"status":{"enum":["active","archived"],"description":"Webhook endpoint lifecycle status. Closed enum — exhaustive; additions would be a breaking change."},"createdAt":{"type":"string","description":"Created at."},"updatedAt":{"type":"string","description":"Updated at."},"archivedAt":{"type":"string","description":"Archived at."}},"required":["id","url","events","status","createdAt","updatedAt"]}},"required":["data"]}}}},"400":{"description":"Invalid request.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Webhook endpoint not found","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"patchV3WebhooksByWebhookId","tags":["webhooks"],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":255},"example":"idem_20260626_0001","description":"Required for effectful v3 requests (POST, PATCH, PUT, DELETE). Reuse the same key with the same body to replay the cached response."},{"schema":{"type":"string"},"in":"path","name":"webhookId","required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"Webhook destination URL."},"events":{"type":"array","minItems":1,"items":{"type":"string","enum":["customer.created","customer.updated","customer.archived","capability.created","capability.status_changed","application.status_changed","recipient.status_changed","destination.status_changed","account.created","account.status_changed","account.details_changed","api.deprecation","transfer.created","transfer.state_changed"],"description":"Open enum — values are added over time; clients must tolerate new names appearing in the catalog. Unknown names are rejected at write time against the current catalog."},"description":"Event types delivered to this endpoint."}}}}}},"summary":"Update webhook endpoint","description":"Updates a webhook endpoint URL or event-type allowlist."},"delete":{"responses":{"200":{"description":"Webhook endpoint archived","headers":{"Idempotency-Replayed":{"description":"Present with value `true` when an idempotent request is replayed.","schema":{"type":"string","enum":["true"]}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"Webhook endpoint id."},"url":{"type":"string","description":"Webhook destination URL."},"events":{"type":"array","items":{"type":"string"},"description":"Event types delivered to this endpoint."},"status":{"enum":["active","archived"],"description":"Webhook endpoint lifecycle status. Closed enum — exhaustive; additions would be a breaking change."},"createdAt":{"type":"string","description":"Created at."},"updatedAt":{"type":"string","description":"Updated at."},"archivedAt":{"type":"string","description":"Archived at."}},"required":["id","url","events","status","createdAt","updatedAt"]}},"required":["data"]}}}},"400":{"description":"Invalid request.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Webhook endpoint not found","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"deleteV3WebhooksByWebhookId","tags":["webhooks"],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":255},"example":"idem_20260626_0001","description":"Required for effectful v3 requests (POST, PATCH, PUT, DELETE). Reuse the same key with the same body to replay the cached response."},{"schema":{"type":"string"},"in":"path","name":"webhookId","required":true}],"summary":"Archive webhook endpoint","description":"Archives a webhook endpoint."}},"/v3/webhooks/portal":{"get":{"responses":{"200":{"description":"Webhook portal URL generated","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"Webhook management portal URL."}},"required":["url"]}}}},"400":{"description":"Invalid request.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"401":{"description":"Authentication required.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"403":{"description":"Insufficient permissions.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"404":{"description":"Resource not found.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code."},"code":{"type":"string","description":"Stable snake_case error code."},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","description":"Whether retrying the same request may succeed."},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}}}},"operationId":"getV3WebhooksPortal","tags":["webhooks"],"parameters":[],"summary":"Get webhook portal URL","description":"Returns a webhook management portal URL for delivery logs, retries, and manual replay."}},"/v1/payin/quote":{"post":{"responses":{"200":{"description":"Quote created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Quote ID (quo_xxx)"},"from":{"type":"object","properties":{"currency":{"type":"string","description":"Source currency code"},"amount":{"type":"string","description":"Source amount"},"rail":{"type":"string","description":"Payment rail"}},"required":["currency","amount","rail"]},"to":{"type":"string","description":"Destination wallet ID"},"rate":{"type":"string","description":"Exchange rate (source currency to USD)"},"fee":{"type":"object","properties":{"percent":{"type":"string","description":"Fee percentage"},"fixed":{"type":"string","description":"Fixed fee amount"},"total":{"type":"string","description":"Total fee amount"},"currency":{"type":"string","description":"Fee currency"}},"required":["percent","fixed","total","currency"]},"destination_amount":{"type":"string","description":"Final USDC amount after fees"},"state":{"enum":["pending","used","expired","execution_failed"],"description":"Quote state"},"expires_at":{"type":"string","description":"Quote expiration time (ISO 8601)"},"created_at":{"type":"string","description":"Quote creation time (ISO 8601)"}},"required":["id","from","to","rate","fee","destination_amount","state","expires_at","created_at"]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Requested resource not found","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"409":{"description":"Selected rail is not ready for this customer. Response includes `code: \"rail_not_ready\"`, `requiredRails`, and `requestRailEndpoint`."},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"postV1PayinQuote","tags":["Payin Quotes"],"parameters":[],"summary":"Create a quote for payin","description":"Creates a quote with exchange rate and fee calculation for payins. Supports fiat rails: wire_pooled, wire_named, swift, swift_pooled, swift_named, ach, ach_pooled, ach_named, fedwire, fedwire_pooled, fedwire_named, sepa, sepa_pooled, sepa_named, rtp, rtp_pooled, rtp_named, pix, pix_pooled, spei, spei_pooled, pse, pse_pooled, transfers, transfers_3_0, transfers_3_0_pooled, uaefts, uaefts_pooled, uaefts_named, faster_payments, faster_payments_pooled, faster_payments_named, card, apple_pay. Bank-transfer quotes are valid for 5 minutes. Card and Apple Pay quotes are priced through wallet infrastructure. Quotes can be used to execute a payin with the quoted pricing.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"from":{"type":"object","properties":{"currency":{"type":"string","minLength":1,"description":"Source currency code (e.g., EUR, GBP)"},"amount":{"type":"string","minLength":1,"description":"Amount to convert (minimum 0.1)"},"rail":{"type":"string","description":"Payment rail (wire_pooled, wire_named, swift, swift_pooled, swift_named, ach, ach_pooled, ach_named, fedwire, fedwire_pooled, fedwire_named, sepa, sepa_pooled, sepa_named, rtp, rtp_pooled, rtp_named, pix, pix_pooled, spei, spei_pooled, pse, pse_pooled, transfers, transfers_3_0, transfers_3_0_pooled, uaefts, uaefts_pooled, uaefts_named, faster_payments, faster_payments_pooled, faster_payments_named, card, apple_pay)"}},"required":["currency","amount","rail"],"description":"Source payment details"},"to":{"type":"string","minLength":1,"pattern":"^wal_.+","description":"Destination wallet ID (wal_xxx)"},"payer":{"type":"object","properties":{"fullName":{"type":"string","minLength":1},"taxId":{"type":"string","minLength":1},"taxIds":{"type":"array","items":{"type":"string","minLength":1}},"documentType":{"enum":["CC","NIT"]},"documentNumber":{"type":"string","minLength":1},"email":{"type":"string","format":"email"},"phone":{"type":"string","minLength":1},"bankCode":{"type":"string","minLength":1}},"required":[],"description":"Optional payer details required by local rails such as PSE"}},"required":["from","to"]}}}}}},"/v1/payin":{"post":{"responses":{"200":{"description":"PayIn created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Transfer ID for tracking the payin"},"to":{"type":"string","description":"Wallet ID"},"rail":{"type":"string","description":"Payment rail"},"currency":{"type":"string","description":"Currency code (e.g., USD, EUR, USDC)"},"amount":{"type":"string","description":"Amount to pay in"},"resource":{"type":"string","description":"Deprecated: Use recipient_details instead. Wallet address or payment URL."},"recipient_details":{"anyOf":[{"type":"object","properties":{"type":{"anyOf":[{"enum":["iban"]},{"enum":["sepa"]},{"enum":["uaefts"]}],"description":"Recipient type: SEPA, UAEFTS, or generic IBAN transfer"},"description":{"type":"string","description":"Human-readable description of how to complete the payment"},"reference":{"type":"string","description":"Wire transfer reference to include in payment"},"iban":{"type":"string","description":"IBAN to send payment to"},"bic":{"type":"string","description":"BIC/SWIFT code"},"bank_name":{"type":"string","description":"Bank name"},"account_holder_name":{"type":"string","description":"Account holder name"}},"required":["type","description","reference","iban","bic","bank_name","account_holder_name"]},{"type":"object","properties":{"type":{"description":"Recipient type: UK Faster Payments","enum":["faster_payments"]},"description":{"type":"string","description":"Human-readable description of how to complete the payment"},"reference":{"type":"string","description":"Payment reference to include in the transfer"},"sort_code":{"type":"string","description":"UK bank sort code"},"account_number":{"type":"string","description":"UK account number"},"bank_name":{"type":"string","description":"Bank name"},"account_holder_name":{"type":"string","description":"Account holder name"}},"required":["type","description","reference","sort_code","account_number","bank_name","account_holder_name"]},{"type":"object","properties":{"type":{"description":"Recipient type: SWIFT international wire transfer","enum":["swift"]},"description":{"type":"string","description":"Human-readable description of how to complete the payment"},"reference":{"type":"string","description":"Wire transfer reference to include in payment"},"swift_code":{"type":"string","description":"SWIFT/BIC code of the receiving bank"},"account_number":{"type":"string","description":"Bank account number"},"bank_name":{"type":"string","description":"Bank name"},"account_holder_name":{"type":"string","description":"Account holder name"},"routing_number":{"type":"string","description":"Routing number (ABA for US, sort code for UK)"}},"required":["type","description","reference","swift_code","account_number","bank_name","account_holder_name"]},{"type":"object","properties":{"type":{"description":"Recipient type: ACH bank transfer (US)","enum":["ach"]},"description":{"type":"string","description":"Human-readable description of how to complete the payment"},"reference":{"type":"string","description":"ACH transfer reference to include in payment"},"routing_number":{"type":"string","description":"ABA routing number (9 digits)"},"account_number":{"type":"string","description":"Bank account number"},"account_type":{"type":"string","description":"Account type (checking or savings)"},"bank_name":{"type":"string","description":"Bank name"},"account_holder_name":{"type":"string","description":"Account holder name"}},"required":["type","description","reference","routing_number","account_number","account_type","bank_name","account_holder_name"]},{"type":"object","properties":{"type":{"description":"Recipient type: Fedwire bank transfer (US)","enum":["fedwire"]},"description":{"type":"string","description":"Human-readable description of how to complete the payment"},"reference":{"type":"string","description":"Wire transfer reference to include in payment"},"routing_number":{"type":"string","description":"ABA routing number (9 digits)"},"account_number":{"type":"string","description":"Bank account number"},"account_type":{"type":"string","description":"Account type (checking or savings)"},"bank_name":{"type":"string","description":"Bank name"},"account_holder_name":{"type":"string","description":"Account holder name"}},"required":["type","description","reference","routing_number","account_number","account_type","bank_name","account_holder_name"]},{"type":"object","properties":{"type":{"description":"Recipient type: RTP bank transfer (US)","enum":["rtp"]},"description":{"type":"string","description":"Human-readable description of how to complete the payment"},"reference":{"type":"string","description":"RTP transfer reference to include in payment"},"routing_number":{"type":"string","description":"ABA routing number (9 digits)"},"account_number":{"type":"string","description":"Bank account number"},"account_type":{"type":"string","description":"Account type (checking or savings)"},"bank_name":{"type":"string","description":"Bank name"},"account_holder_name":{"type":"string","description":"Account holder name"}},"required":["type","description","reference","routing_number","account_number","account_type","bank_name","account_holder_name"]},{"type":"object","properties":{"type":{"description":"Recipient type: wallet address for crypto deposits","enum":["wallet_address"]},"description":{"type":"string","description":"Human-readable description of how to complete the payment"},"wallet_address":{"type":"string","description":"Wallet address to send crypto to"},"network":{"type":"string","description":"Blockchain network (e.g., polygon, ethereum)"}},"required":["type","description","wallet_address","network"]},{"type":"object","properties":{"type":{"description":"Recipient type: payment link for fiat onramp","enum":["payment_link"]},"description":{"type":"string","description":"Human-readable description of how to complete the payment"},"url":{"type":"string","description":"URL to complete the payment"}},"required":["type","description","url"]},{"type":"object","properties":{"type":{"description":"Recipient type: PIX (Brazil instant payment)","enum":["pix"]},"description":{"type":"string","description":"Human-readable description of how to complete the payment"},"pix_code":{"type":"string","description":"EMV/BR Code payload — paste into banking app or render as QR client-side"},"brl_amount":{"type":"string","description":"Exact BRL amount the end user must transfer"},"expires_at":{"type":"number","description":"Unix timestamp (ms) when the PIX code expires — typically ~5 minutes after creation"}},"required":["type","description","pix_code"]},{"type":"object","properties":{"type":{"description":"Recipient type: SPEI (Mexico bank transfer)","enum":["spei"]},"description":{"type":"string","description":"Human-readable description of how to complete the payment"},"clabe":{"type":"string","description":"CLABE details to copy into the banking app"},"mxn_amount":{"type":"string","description":"Exact MXN amount the end user must transfer"},"reference":{"type":"string","description":"Payment reference to include when available"},"expires_at":{"type":"number","description":"Unix timestamp (ms) when the payment instructions expire"}},"required":["type","description","clabe"]},{"type":"object","properties":{"type":{"description":"Recipient type: PSE (Colombia payment link)","enum":["pse"]},"description":{"type":"string","description":"Human-readable description of how to complete the payment"},"url":{"type":"string","description":"URL to complete the PSE payment"},"cop_amount":{"type":"string","description":"Exact COP amount the end user must pay"},"expires_at":{"type":"number","description":"Unix timestamp (ms) when the payment link expires"}},"required":["type","description","url"]},{"type":"object","properties":{"type":{"description":"Recipient type: Transfers 3.0 (Argentina bank transfer)","enum":["transfers"]},"description":{"type":"string","description":"Human-readable description of how to complete the payment"},"cbu":{"type":"string","description":"CBU details to copy into the banking app"},"ars_amount":{"type":"string","description":"Exact ARS amount the end user must transfer"},"reference":{"type":"string","description":"Payment reference to include when available"},"expires_at":{"type":"number","description":"Unix timestamp (ms) when the payment instructions expire"}},"required":["type","description","cbu"]}],"description":"Payment instructions based on rail type"},"state":{"type":"string","description":"PayIn state"},"sender":{"type":"object","properties":{"name":{"type":"string"},"bankName":{"type":"string"},"accountLast4":{"type":"string","pattern":"^\\d{4}$"}},"required":[],"description":"Available sender identity evidence; absent when the provider did not supply it"}},"required":["id","to","rail","currency","amount","recipient_details","state"]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Requested resource not found","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"409":{"description":"No active provider is available for the selected bank payin rail. Select another rail or contact support."},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"postV1Payin","tags":["Pay-ins"],"parameters":[],"summary":"Create payin","description":"Create a payin transfer to receive funds into a wallet.\n\n**Crypto payins** (rail: polygon, ethereum, tron, etc.):\nReturns a wallet address for the customer to send crypto to.\n\n**Fiat payins** (rail: card, sepa_pooled, sepa_named, swift, ach, fedwire, wire_pooled, wire_named, rtp_pooled, rtp_named, apple_pay):\nReturns payment instructions (bank details for SEPA/ACH/Fedwire/Wire/RTP/SWIFT, URL for card).\n\n**Example request (wire):**\n```json\n{\n  \"to\": \"wal_abc123\",\n  \"rail\": \"wire_pooled\",\n  \"amount\": \"100.00\",\n  \"currency\": \"USD\"\n}\n```\n\n**Example request (crypto):**\n```json\n{\n  \"to\": \"wal_abc123\",\n  \"rail\": \"polygon\",\n  \"amount\": \"50\",\n  \"currency\": \"USDC\"\n}\n```\n\nFor rate-locked payins, use `POST /v1/payin/quote` first, then pass the quote ID:\n\n**Example request (using quote):**\n```json\n{\n  \"quote\": \"quo_abc123xyz\"\n}\n```","requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"to":{"type":"string","minLength":1,"pattern":"^(wal_|cus_).+","description":"Wallet ID (wal_xxx)"},"rail":{"anyOf":[{"enum":["algorand","aptos","arbitrum","avalanche","babylon","base","berachain","bsc","bitcoin","bitcoin_cash","bob","canton","cardano","celo","codex","cosmos","dogecoin","ethereum","fantom","hedera","icp","ion","iota","kadena","kaspa","kusama","litecoin","optimism","origyn","plume","polkadot","polygon","polymesh","ripple","sei","solana","stellar","sui","ton","tezos","tron","card","sepa","swift","ach","fedwire","rtp","apple_pay","pix","uaefts","faster_payments","sepa_instant","ipp","ach_pooled","ach_named","sepa_pooled","sepa_named","swift_pooled","swift_named","fedwire_pooled","fedwire_named","wire_pooled","wire_named","rtp_pooled","rtp_named","pix_pooled","pix_named","uaefts_pooled","uaefts_named","faster_payments_pooled","faster_payments_named","sepa_instant_pooled","sepa_instant_named","ipp_pooled","ipp_named"]},{"enum":["spei","spei_pooled","pse","pse_pooled","transfers","transfers_3_0","transfers_3_0_pooled"]}],"description":"Payment rail - crypto (polygon, ethereum, tron) or fiat (card, sepa, sepa_pooled, sepa_named, wire_pooled, wire_named, swift, ach, fedwire, rtp, rtp_pooled, rtp_named, apple_pay, pix, spei, pse, transfers_3_0, uaefts_pooled, uaefts_named, faster_payments, faster_payments_pooled, faster_payments_named)"},"amount":{"anyOf":[{"type":"string","minLength":1},{"type":"number"}],"description":"Amount to pay in (minimum 0.1)"},"currency":{"type":"string","minLength":1,"description":"Currency code (e.g., USDC, USD, EUR)"},"payer":{"type":"object","properties":{"fullName":{"type":"string","minLength":1},"taxId":{"type":"string","minLength":1},"taxIds":{"type":"array","items":{"type":"string","minLength":1}},"documentType":{"enum":["CC","NIT"]},"documentNumber":{"type":"string","minLength":1},"email":{"type":"string","format":"email"},"phone":{"type":"string","minLength":1},"bankCode":{"type":"string","minLength":1}},"required":[],"description":"Optional payer details required by local rails such as PSE"}},"required":["to","rail","amount","currency"]},{"type":"object","properties":{"quote":{"type":"string","minLength":1,"description":"Quote ID (quo_xxx) from POST /v1/payin/quote"}},"required":["quote"]}]}}}}}},"/v1/merchant-kyb/creation-gate":{"get":{"responses":{"200":{"description":"Creation-gate posture for the authenticated space","content":{"application/json":{"schema":{"type":"object","properties":{"kybGated":{"type":"boolean","description":"Whether merchant KYB gates customer creation in this space. false for sandbox and legacy grandfathered spaces (kyb_required = false); the dashboard must not force KYB when false."},"verificationStatus":{"anyOf":[{"enum":["pending","approved","rejected","not_submitted"],"nullable":true}],"description":"The merchant's own KYB status in this space: the designated self-customer's status, 'not_submitted' when KYB is required but not yet submitted, or null when the space is not gated."},"canCreateCustomers":{"type":"boolean","description":"Resolved gate: whether a partner customer may be created in this space right now. Mirrors the 422 creation gate exactly."},"subjectCustomerId":{"anyOf":[{"type":"string","nullable":true}],"description":"The customer id durably designated as this space's merchant KYB subject, or null when no subject is designated."}},"required":["kybGated","verificationStatus","canCreateCustomers","subjectCustomerId"]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Requested resource not found","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"getV1Merchant-kybCreation-gate","tags":["Business"],"parameters":[],"summary":"Get the merchant-KYB creation-gate posture for the current space","description":"Read-only view of whether merchant KYB gates customer creation in the authenticated space, and where the merchant's own KYB stands. Lets the dashboard mirror the enforced creation gate — which otherwise surfaces only as a 422 on create — so it neither over-gates legacy grandfathered spaces (kyb_required = false) nor under-gates spaces that require KYB."}},"/v1/merchant-kyb/documents/upload-token":{"post":{"responses":{"201":{"description":"Upload token minted","content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"Bearer token for POST /v2/documents/direct-upload. Valid for 5 minutes."},"expiresAt":{"type":"string","description":"ISO 8601 token expiry timestamp."},"maxBytes":{"type":"number","description":"Maximum accepted file size in bytes (25MB)."}},"required":["token","expiresAt","maxBytes"]}}}},"400":{"description":"Invalid merchant document label"},"401":{"description":"Authentication required"},"403":{"description":"customers:read permission required"},"404":{"description":"Requested resource not found","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"503":{"description":"Direct document upload is not configured"}},"operationId":"postV1Merchant-kybDocumentsUpload-token","tags":["Business"],"parameters":[],"summary":"Mint a merchant-KYB direct-upload token","description":"Issues a short-lived merchant-and-space-bound token for parking merchant KYB document bytes through POST /v2/documents/direct-upload.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[a-z0-9_]+$","description":"Merchant KYB document label, using lowercase letters, numbers, and underscores."}},"required":["type"]}}}}}},"/v1/merchant-kyb/documents/parked-url":{"post":{"responses":{"200":{"description":"Parked document URL and metadata","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"Presigned S3 URL, valid for 5 minutes."},"contentType":{"type":"string","description":"Stored object's media type."},"sizeBytes":{"type":"number","description":"Stored object size in bytes."}},"required":["url","contentType","sizeBytes"]}}}},"400":{"description":"Invalid request body"},"401":{"description":"Authentication required"},"403":{"description":"customers:read permission required"},"404":{"description":"Parked document not found"},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"503":{"description":"Direct document upload is not configured"}},"operationId":"postV1Merchant-kybDocumentsParked-url","tags":["Business"],"parameters":[],"summary":"Get a merchant-KYB parked-document URL","description":"Verifies a merchant-and-space-bound opaque storage reference and returns a five-minute read URL plus stored object metadata.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"storageKey":{"type":"string","description":"Opaque storage reference returned by the direct-upload route."}},"required":["storageKey"]}}}}}},"/v1/merchant-kyb/customers/{customerId}/submit":{"post":{"responses":{"200":{"description":"Merchant KYB submitted pending Operations review","content":{"application/json":{"schema":{"type":"object","properties":{"revisionId":{"type":"string","description":"KYB revision ID"},"status":{"description":"Merchant KYB revision status","enum":["pending"]},"submittedAt":{"type":"string","description":"ISO timestamp of submission"}},"required":["revisionId","status","submittedAt"]}}}},"400":{"description":"X-Space-Id is missing, customer is not a business, or KYB evidence is incomplete"},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Service-token authentication is required"},"404":{"description":"Business customer not found in this space"},"409":{"description":"Another customer is already the space's merchant KYB subject","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Whether the request failed","enum":[true]},"success":{"description":"Whether the request succeeded","enum":[false]},"code":{"description":"Stable merchant-subject conflict error code","enum":["merchant_kyb_subject_conflict"]},"message":{"type":"string","description":"Human-readable error message"},"designatedCustomerId":{"type":"string","description":"Customer already designated as the merchant KYB subject"}},"required":["error","success","code","message","designatedCustomerId"]}}}},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"postV1Merchant-kybCustomersByCustomerIdSubmit","tags":["Business"],"parameters":[{"in":"path","name":"customerId","schema":{"type":"string","description":"The merchant business customer ID"},"required":true},{"name":"X-Merchant-Id","in":"header","required":true,"description":"Merchant identity targeted by the service command","schema":{"type":"string"}},{"name":"X-Space-Id","in":"header","required":true,"description":"Developer space targeted by the service command","schema":{"type":"string"}}],"summary":"Submit the authenticated space's merchant KYB","description":"Service-only merchant KYB command, including voluntary submission on grandfathered spaces. Requires a raw X-Space-Id and a same-space business customer. It atomically creates or confirms the durable merchant subject and records a pending revision through the same completeness, archive, notification, webhook, and space-mirror orchestration as ordinary business KYB.","security":[{"serviceToken":[]}]}},"/v1/transfers":{},"/v1/transfers/{id}":{"get":{"responses":{"200":{"description":"The transfer object","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"The unique ID of the transfer"},"customerId":{"type":"string","description":"The customer this transfer belongs to (cus_xxx); absent for transfers with no associated customer"},"type":{"enum":["onramp","wallet_to_wallet","offramp"],"description":"The type of the transfer: onramp, wallet_to_wallet, or offramp"},"state":{"enum":["awaiting_funds","pending","in_progress","completed","failed"],"description":"The current state of the transfer"},"from":{"type":"object","properties":{"identifier":{"type":"string","description":"Customer ID or wallet address"},"amount":{"type":"string","pattern":"^[+-]?(?:\\d*\\.)?\\d+$","description":"Transfer amount"},"rail":{"enum":["algorand","aptos","arbitrum","avalanche","babylon","base","berachain","bsc","bitcoin","bitcoin_cash","bob","canton","cardano","celo","codex","cosmos","dogecoin","ethereum","fantom","hedera","icp","ion","iota","kadena","kaspa","kusama","litecoin","optimism","origyn","plume","polkadot","polygon","polymesh","ripple","sei","solana","stellar","sui","ton","tezos","tron","card","sepa","swift","ach","fedwire","rtp","apple_pay","pix","uaefts","faster_payments","sepa_instant","ipp","ach_pooled","ach_named","sepa_pooled","sepa_named","swift_pooled","swift_named","fedwire_pooled","fedwire_named","wire_pooled","wire_named","rtp_pooled","rtp_named","pix_pooled","pix_named","uaefts_pooled","uaefts_named","faster_payments_pooled","faster_payments_named","sepa_instant_pooled","sepa_instant_named","ipp_pooled","ipp_named"],"description":"Payment rail used"},"currency":{"type":"string","description":"Currency code"}},"required":["identifier","amount","rail","currency"],"description":"Transfer source details"},"to":{"type":"object","properties":{"identifier":{"type":"string","description":"Destination customer or wallet ID (cus_xxx / wal_xxx)"},"address":{"type":"string","description":"Destination on-chain wallet address; present once the destination wallet is known (e.g. wallet-to-wallet payouts), absent for in-flight crypto payins or onramp-to-wallet deposits without a recorded wallet transfer"}},"required":["identifier"],"description":"Transfer destination details"},"url":{"type":"string","description":"Payment link for fiat rails or blockchain explorer link for crypto rails"},"onchain_url":{"type":"string","description":"Blockchain explorer URL for the onchain transaction, present only when the transfer is confirmed onchain"},"createdAt":{"type":"string","description":"The date and time the transfer was created"},"updatedAt":{"type":"string","description":"The date and time the transfer was last updated"},"provider":{"type":"string","description":"Payment provider identifier"},"sender":{"type":"object","properties":{"name":{"type":"string"},"bankName":{"type":"string"},"accountLast4":{"type":"string","pattern":"^\\d{4}$"}},"required":[],"description":"Available sender identity evidence for inbound bank pay-ins; absent when the provider did not supply it"},"failureReason":{"type":"string","description":"Provider-supplied reason for a failed transfer, when available"},"cardPaymentSteps":{"type":"array","items":{"type":"object","properties":{"key":{"enum":["checkout_opened","user_authentication","verification","payment_started","payment_outcome"]},"title":{"type":"string"},"status":{"enum":["pending","completed","failed","unavailable"]},"occurredAt":{"type":"string"},"description":{"type":"string"},"failureReason":{"type":"string"}},"required":["key","title","status","description"]},"description":"Provider-neutral checkout lifecycle for card-hosted pay-ins"},"attentionRequired":{"type":"boolean","description":"True when operations should review this transfer in ops-platform"},"attentionReason":{"type":"string","description":"Machine-readable reason for the operations attention marker"}},"required":["id","type","state","from","to"]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Transfer or quote not found"},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"getV1TransfersById","tags":["Transfers"],"parameters":[{"in":"path","name":"id","schema":{"type":"string","description":"The transfer ID (tr_xxx) or quote ID (quo_xxx) it was created from"},"required":true}],"summary":"Get a transfer by ID","description":"Retrieve a transfer by its `tr_xxx` ID, or by the `quo_xxx` quote ID it was created from. When a quote ID is passed, the endpoint resolves to the transfer that consumed that quote and returns the same response shape as if the transfer ID had been passed directly."}},"/v1/webhooks":{"get":{"responses":{"200":{"description":"The webhook configuration was retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"number","description":"The unique identifier for the webhook"},"url":{"type":"string","description":"The URL of the webhook"}},"required":["id","url"]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"The webhook configuration was not found"},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"getV1Webhooks","tags":["Webhooks"],"parameters":[],"summary":"Get current webhook configuration","description":"Retrieve the current webhook configuration for a merchant"},"patch":{"responses":{"200":{"description":"The webhook configuration was created or updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"number","description":"The unique identifier for the webhook"},"merchantId":{"type":"string","description":"The merchant that owns the webhook configuration"},"url":{"type":"string","description":"The URL of the webhook"},"secretKey":{"type":"string","description":"legacy HMAC compatibility secret. Svix endpoint signing secrets are managed separately and are the primary verification secret."},"createdAt":{"type":"string","description":"The date and time the webhook was created"},"updatedAt":{"type":"string","description":"The date and time the webhook was last updated"}},"required":["id","merchantId","url","secretKey","createdAt","updatedAt"]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Requested resource not found","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"patchV1Webhooks","tags":["Webhooks"],"parameters":[],"summary":"Configure webhook","description":"Configure webhook for a merchant","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","minLength":1,"format":"uri","description":"The URL of the webhook endpoint"}},"required":["url"]}}}}}},"/v1/payout/quote":{"post":{"responses":{"200":{"description":"Quote created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Quote ID (quo_xxx)"},"from":{"type":"object","properties":{"id":{"type":"string","description":"Source wallet ID"},"amount":{"type":"string","description":"Source amount"},"currency":{"type":"string","description":"Source currency"}},"required":["id","amount","currency"]},"to":{"type":"object","properties":{"id":{"type":"string","description":"Destination ID"},"currency":{"type":"string","description":"Destination currency"}},"required":["id","currency"]},"rate":{"type":"string","description":"Exchange rate"},"fee":{"type":"object","properties":{"percent":{"type":"string","description":"Fee percentage"},"fixed":{"type":"string","description":"Fixed fee amount"},"total":{"type":"string","description":"Total fee amount"},"currency":{"type":"string","description":"Fee currency"}},"required":["percent","fixed","total","currency"]},"destination_amount":{"type":"string","description":"Final destination amount after fees"},"state":{"enum":["pending","used","expired","execution_failed"],"description":"Quote state"},"expires_at":{"type":"string","description":"Quote expiration time (ISO 8601)"},"created_at":{"type":"string","description":"Quote creation time (ISO 8601)"}},"required":["id","from","to","rate","fee","destination_amount","state","expires_at","created_at"]}}}},"400":{"description":"Invalid payout quote request, including rail IDs used as account IDs, non-custodial source wallet, virtual account destination, minimum amount, or cross-chain transfer.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Whether the request resulted in an error","enum":[true]},"success":{"description":"Always false when present on error responses","enum":[false]},"message":{"type":"string","description":"Customer-facing error message"},"path":{"type":"string","description":"Request path where the error occurred"},"correlationId":{"type":"string","description":"Support correlation ID for server-side troubleshooting"}},"required":["error","message","path"]},"examples":{"nonCustodialSource":{"summary":"Imported source wallet","value":{"error":true,"success":false,"message":"Payouts can only be made from custodial wallets. Imported wallets are for receiving only.","path":"/v1/payout/quote","correlationId":"req_example"}},"virtualAccount":{"summary":"Virtual account destination","value":{"error":true,"success":false,"message":"Payouts can only be made to external accounts. Virtual accounts are for deposits only.","path":"/v1/payout/quote","correlationId":"req_example"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"The source customer cannot use the requested destination account.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Whether the request resulted in an error","enum":[true]},"success":{"description":"Always false when present on error responses","enum":[false]},"message":{"type":"string","description":"Customer-facing error message"},"path":{"type":"string","description":"Request path where the error occurred"},"correlationId":{"type":"string","description":"Support correlation ID for server-side troubleshooting"}},"required":["error","message","path"]},"examples":{"recipientCustomerMismatch":{"summary":"Recipient account belongs to another customer","value":{"error":true,"success":false,"message":"Recipient account racc_example is registered under a different customer. Recipients are scoped per customer. To send to this beneficiary, create a recipient for customer cus_example with POST /v1/customers/cus_example/recipients.","path":"/v1/payout/quote","correlationId":"req_example"}}}}}},"404":{"description":"The source wallet, destination account, or destination wallet was not found.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Whether the request resulted in an error","enum":[true]},"success":{"description":"Always false when present on error responses","enum":[false]},"message":{"type":"string","description":"Customer-facing error message"},"path":{"type":"string","description":"Request path where the error occurred"},"correlationId":{"type":"string","description":"Support correlation ID for server-side troubleshooting"}},"required":["error","message","path"]},"examples":{"walletNotFound":{"summary":"Source wallet not found","value":{"error":true,"success":false,"message":"Wallet wal_example not found","path":"/v1/payout/quote","correlationId":"req_example"}},"accountNotFound":{"summary":"Destination account not found","value":{"error":true,"success":false,"message":"Account acc_example not found","path":"/v1/payout/quote","correlationId":"req_example"}}}}}},"409":{"description":"Destination rail is not ready for this customer (`code: \"rail_not_ready\"`, `requiredRails`, and `requestRailEndpoint`), or no active payout provider is available. Provider-unavailable conflicts use the standard payout error envelope."},"500":{"description":"Payout quote creation failed unexpectedly. Contact support with the correlation ID.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Whether the request resulted in an error","enum":[true]},"success":{"description":"Always false when present on error responses","enum":[false]},"message":{"type":"string","description":"Customer-facing error message"},"path":{"type":"string","description":"Request path where the error occurred"},"correlationId":{"type":"string","description":"Support correlation ID for server-side troubleshooting"}},"required":["error","message","path"]},"examples":{"quoteCreationFailed":{"summary":"Quote creation failed","value":{"error":true,"success":false,"message":"Failed to create payout quote. Please contact support with the correlation ID.","path":"/v1/payout/quote","correlationId":"req_example"}}}}}}},"operationId":"postV1PayoutQuote","tags":["Payout Quotes"],"parameters":[],"summary":"Create a quote for payout","description":"Creates a quote with exchange rate and fee calculation for payouts. Supports crypto-to-crypto (wal_xxx → wal_xxx) and offramp (wal_xxx → acc_xxx or racc_xxx) payouts. Quotes are valid for 5 minutes and can be used to execute a payout with the quoted pricing.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"from":{"type":"object","properties":{"id":{"type":"string","pattern":"^wal_[a-zA-Z0-9]+$","description":"Wallet ID to send from (wal_xxx)"},"amount":{"type":"number","minimum":0.1,"description":"Amount to send (minimum 0.1)"},"currency":{"type":"string","description":"Source currency code (e.g., USDC). Defaults to USDC if not specified."}},"required":["id","amount"],"description":"Source wallet - where funds are sent from"},"to":{"type":"object","properties":{"id":{"type":"string","description":"Destination: wallet ID (wal_xxx), customer account ID (acc_xxx), or recipient account ID (racc_xxx). Rail IDs (cfr_xxx) are not account IDs."},"currency":{"type":"string","minLength":1,"description":"Destination currency (REQUIRED: e.g., EUR, USD for wire; USDC for crypto)"}},"required":["id","currency"],"description":"Destination - where funds are sent to"}},"required":["from","to"]}}}}}},"/v1/payout":{"post":{"responses":{"200":{"description":"Payout created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Transfer ID for tracking the payout"},"state":{"type":"string","description":"Payout state"},"from":{"type":"object","properties":{"rail":{"type":"string","description":"Source rail (inferred from wallet)"},"id":{"type":"string","description":"Wallet ID (wal_xxx)"},"amount":{"type":"number","description":"Source amount"},"currency":{"type":"string","description":"Source currency"}},"required":["rail","id","amount","currency"],"description":"Source details"},"to":{"type":"object","properties":{"rail":{"type":"string","description":"Destination rail"},"id":{"type":"string","description":"Destination identifier"},"amount":{"type":"number","description":"Destination amount"},"currency":{"type":"string","description":"Destination currency"}},"required":["rail","id","amount","currency"],"description":"Destination details"},"recipient_details":{"type":"object","properties":{"masked_iban":{"type":"string","description":"Masked IBAN (SEPA only, e.g., DE89***1234)"},"masked_account_number":{"type":"string","description":"Masked domestic account number (ACH/fedwire/SWIFT, e.g., 5551**4567)"},"account_holder_name":{"anyOf":[{"type":"string","nullable":true}],"description":"Account holder name"},"bank_name":{"anyOf":[{"type":"string","nullable":true}],"description":"Bank name"}},"required":["account_holder_name","bank_name"],"description":"Recipient account details (for bank offramps)"},"url":{"type":"string","description":"Legacy primary link: payment link for fiat sources, explorer URL otherwise"},"onchain_url":{"type":"string","description":"Always the blockchain explorer URL when available"},"tracking":{"type":"object","properties":{"current":{"type":"object","properties":{"key":{"enum":["payout_created","preparing_route","funds_sent_onchain","funds_received_banking_partner","bank_transfer_initiated","payout_completed","payout_failed","needs_review"],"description":"Stable current tracking step identifier"},"label":{"type":"string","description":"Current tracking label"},"description":{"type":"string","description":"Current tracking description"}},"required":["key","label","description"]},"steps":{"type":"array","items":{"type":"object","properties":{"key":{"enum":["payout_created","preparing_route","funds_sent_onchain","funds_received_banking_partner","bank_transfer_initiated","payout_completed","payout_failed","needs_review"],"description":"Stable payout tracking step identifier"},"label":{"type":"string","description":"Customer-facing step label"},"description":{"type":"string","description":"Customer-facing step description"},"status":{"enum":["completed","current","pending","failed","attention"],"description":"Step display status"},"timestamp":{"type":"string","description":"ISO timestamp when known"},"details":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string","description":"Detail label"},"value":{"type":"string","description":"Detail value"},"href":{"type":"string","description":"Optional public link for the detail"},"copyLabel":{"type":"string","description":"Optional copy button label"},"monospace":{"type":"boolean","description":"Whether the value should be displayed as a code-like value"}},"required":["label","value"]},"description":"Optional safe public details for this step"}},"required":["key","label","description","status"]},"description":"Customer-facing payout tracking timeline"}},"required":["current","steps"],"description":"Customer-facing payout tracking timeline"}},"required":["id","state","from","to"]}}}},"400":{"description":"Invalid payout request, including rail IDs used as account IDs, missing rail/currency, non-custodial source wallet, insufficient balance, unsupported destination, minimum amount, or cross-chain transfer.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Whether the request resulted in an error","enum":[true]},"success":{"description":"Always false when present on error responses","enum":[false]},"message":{"type":"string","description":"Customer-facing error message"},"path":{"type":"string","description":"Request path where the error occurred"},"correlationId":{"type":"string","description":"Support correlation ID for server-side troubleshooting"}},"required":["error","message","path"]},"examples":{"nonCustodialSource":{"summary":"Imported source wallet","value":{"error":true,"success":false,"message":"Payouts can only be made from custodial wallets. Imported wallets are for receiving only.","path":"/v1/payout","correlationId":"req_example"}},"insufficientBalance":{"summary":"Insufficient source balance","value":{"error":true,"success":false,"message":"Insufficient balance. Available: 100.00 USDC, requested: 250.00 USDC.","path":"/v1/payout","correlationId":"req_example"}},"minimumAmount":{"summary":"Below fiat minimum","value":{"error":true,"success":false,"message":"Minimum amount for ach offramp is $10 USD.","path":"/v1/payout","correlationId":"req_example"}},"crossChain":{"summary":"Cross-chain crypto transfer","value":{"error":true,"success":false,"message":"Cross-chain transfers are not supported. Source is polygon, destination is ethereum.","path":"/v1/payout","correlationId":"req_example"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"The source customer cannot use the requested destination account, or the quote belongs to another merchant.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Whether the request resulted in an error","enum":[true]},"success":{"description":"Always false when present on error responses","enum":[false]},"message":{"type":"string","description":"Customer-facing error message"},"path":{"type":"string","description":"Request path where the error occurred"},"correlationId":{"type":"string","description":"Support correlation ID for server-side troubleshooting"}},"required":["error","message","path"]},"examples":{"accountCustomerMismatch":{"summary":"Destination account belongs to another customer","value":{"error":true,"success":false,"message":"Account acc_example is not owned by customer cus_example. To send to a third-party account, create a recipient for this customer with POST /v1/customers/cus_example/recipients.","path":"/v1/payout","correlationId":"req_example"}},"quoteMerchantMismatch":{"summary":"Quote belongs to another merchant","value":{"error":true,"success":false,"message":"Quote belongs to a different merchant.","path":"/v1/payout","correlationId":"req_example"}}}}}},"404":{"description":"The source wallet, destination account, destination wallet, or quote was not found.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Whether the request resulted in an error","enum":[true]},"success":{"description":"Always false when present on error responses","enum":[false]},"message":{"type":"string","description":"Customer-facing error message"},"path":{"type":"string","description":"Request path where the error occurred"},"correlationId":{"type":"string","description":"Support correlation ID for server-side troubleshooting"}},"required":["error","message","path"]},"examples":{"walletNotFound":{"summary":"Source wallet not found","value":{"error":true,"success":false,"message":"Wallet wal_example not found","path":"/v1/payout","correlationId":"req_example"}},"accountNotFound":{"summary":"Destination account not found","value":{"error":true,"success":false,"message":"Account acc_example not found","path":"/v1/payout","correlationId":"req_example"}},"quoteNotFound":{"summary":"Quote not found","value":{"error":true,"success":false,"message":"Quote not found","path":"/v1/payout","correlationId":"req_example"}}}}}},"409":{"description":"The payout quote has already been used, or no active payout provider is available for the destination rail.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Whether the request resulted in an error","enum":[true]},"success":{"description":"Always false when present on error responses","enum":[false]},"message":{"type":"string","description":"Customer-facing error message"},"path":{"type":"string","description":"Request path where the error occurred"},"correlationId":{"type":"string","description":"Support correlation ID for server-side troubleshooting"}},"required":["error","message","path"]},"examples":{"quoteAlreadyUsed":{"summary":"Quote already used","value":{"error":true,"success":false,"message":"Quote has already been used. Create a new payout quote and retry.","path":"/v1/payout","correlationId":"req_example"}},"providerUnavailable":{"summary":"No active payout provider","value":{"error":true,"success":false,"message":"This payout rail is no longer supported. Select another payout rail or contact support to update the rail configuration.","path":"/v1/payout","correlationId":"req_example"}}}}}},"422":{"description":"The payout request is valid, but provider-side payout prerequisites are pending or rejected.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Whether the request resulted in an error","enum":[true]},"success":{"description":"Always false when present on error responses","enum":[false]},"message":{"type":"string","description":"Customer-facing error message"},"path":{"type":"string","description":"Request path where the error occurred"},"correlationId":{"type":"string","description":"Support correlation ID for server-side troubleshooting"}},"required":["error","message","path"]},"examples":{"prerequisitesPending":{"summary":"Provider prerequisites pending","value":{"error":true,"success":false,"message":"Payout prerequisites are still being provisioned. Retry after recipient onboarding is complete.","path":"/v1/payout","correlationId":"req_example"}},"prerequisitesRejected":{"summary":"Provider prerequisites rejected","value":{"error":true,"success":false,"message":"Payout prerequisites were rejected by the payment provider. Update the recipient/account details and create a new payout.","path":"/v1/payout","correlationId":"req_example"}}}}}},"500":{"description":"Payout provider configuration or execution failed. Contact support with the correlation ID.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Whether the request resulted in an error","enum":[true]},"success":{"description":"Always false when present on error responses","enum":[false]},"message":{"type":"string","description":"Customer-facing error message"},"path":{"type":"string","description":"Request path where the error occurred"},"correlationId":{"type":"string","description":"Support correlation ID for server-side troubleshooting"}},"required":["error","message","path"]},"examples":{"providerNotConfigured":{"summary":"Provider not configured for rail","value":{"error":true,"success":false,"message":"Payout is not configured for this rail. Please contact support.","path":"/v1/payout","correlationId":"req_example"}},"executionFailed":{"summary":"Provider execution failed","value":{"error":true,"success":false,"message":"Failed to create payout. Please contact support with the correlation ID.","path":"/v1/payout","correlationId":"req_example"}}}}}}},"operationId":"postV1Payout","tags":["Payouts"],"parameters":[],"summary":"Create payout","description":"Send funds from a customer's wallet to an external destination.\n\n**Destination types:**\n- `wal_xxx`: Crypto transfer to another wallet (same network)\n- `acc_xxx`: Offramp to a customer's external bank account\n- `racc_xxx`: Offramp to a third-party recipient bank account\n\nRail is inferred from the wallet - no need to specify it.\n\n**Example request (crypto to crypto):**\n```json\n{\n  \"from\": {\n    \"id\": \"wal_source123\",\n    \"amount\": 100,\n    \"currency\": \"USDC\"\n  },\n  \"to\": {\n    \"id\": \"wal_dest456\",\n    \"currency\": \"USDC\"\n  }\n}\n```\n\n**Example request (offramp to bank):**\n```json\n{\n  \"from\": {\n    \"id\": \"wal_source123\",\n    \"amount\": 500,\n    \"currency\": \"USDC\"\n  },\n  \"to\": {\n    \"id\": \"racc_bank789\",\n    \"currency\": \"EUR\"\n  }\n}\n```\n\nFor rate-locked payouts, use `POST /v1/payout/quote` first, then pass the quote ID.\n\n**Example request (using quote):**\n```json\n{\n  \"quote\": \"quo_abc123xyz\"\n}\n```","requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"from":{"type":"object","properties":{"id":{"type":"string","pattern":"^(wal_|cus_)[a-zA-Z0-9]+$","description":"Wallet ID (wal_xxx)"},"amount":{"type":"number","minimum":0.1,"description":"Amount to send (minimum 0.1)"},"currency":{"type":"string","description":"Currency code (e.g., USDC). Defaults to USDC if not specified."},"rail":{"enum":["polygon","ethereum","bsc","avalanche","optimism","solana","stellar","arbitrum","ton","base","tron"]}},"required":["id","amount"],"description":"Source wallet - where funds are sent from"},"to":{"type":"object","properties":{"id":{"type":"string","description":"Destination: wallet ID (wal_xxx), customer account ID (acc_xxx), or recipient account ID (racc_xxx). Rail IDs (cfr_xxx) are not account IDs."},"amount":{"type":"number","description":"Destination amount (optional, defaults to from.amount)"},"currency":{"type":"string","description":"Destination currency (e.g., USDC for crypto, EUR/USD for wire). Defaults to from.currency."},"rail":{"enum":["polygon","ethereum","bsc","avalanche","optimism","solana","stellar","arbitrum","ton","base","tron"]}},"required":["id"],"description":"Destination - where funds are sent to"}},"required":["from","to"]},{"type":"object","properties":{"quote":{"type":"string","pattern":"^quo_[a-zA-Z0-9]+$","description":"Quote ID to use for this payout (quo_xxx)"}},"required":["quote"]}]}}}}}},"/v1/sandbox/topup":{"post":{"responses":{"200":{"description":"Sandbox top-up completed","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Transfer ID for the sandbox top-up"},"type":{"description":"Always wallet_to_wallet for sandbox top-ups","enum":["wallet_to_wallet"]},"state":{"description":"Sandbox top-ups complete synchronously","enum":["completed"]},"from":{"type":"object","properties":{"rail":{"type":"string"},"identifier":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"}},"required":["rail","identifier","amount","currency"]},"to":{"type":"object","properties":{"identifier":{"type":"string"}},"required":["identifier"]},"url":{"type":"string","description":"Explorer-style URL for the sandbox top-up. It is for testing only."},"onchain_url":{"type":"string","description":"Same as `url` for sandbox top-ups."}},"required":["id","type","state","from","to","url","onchain_url"]}}}},"400":{"description":"Validation, currency, or non-sandbox-customer rejection"},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Live API key — sandbox-only endpoint"},"404":{"description":"Target wallet not found for this merchant"},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"postV1SandboxTopup","tags":["Sandbox"],"parameters":[],"summary":"Credit a sandbox wallet","description":"To use sandbox simulation, first create a sandbox workspace in Swipelux at https://swipelux.app. Then issue an API key from that workspace; sandbox keys are marked with `sbx`. Send that key in `X-API-Key`. Adds test funds to a custodial wallet in your sandbox workspace and returns a completed transfer record. Use it to prepare balances for payout demos, integration tests, and webhook checks. No real funds move. Live keys get 403.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"wallet":{"type":"string","pattern":"^wal_[a-zA-Z0-9]+$","description":"Target wallet ID (wal_xxx). Must belong to a sandbox customer of the caller's merchant."},"amount":{"type":"string","pattern":"^[+-]?(?:\\d*\\.)?\\d+$","description":"Amount of `currency` to credit. Decimal string."},"currency":{"type":"string","description":"Crypto currency symbol (e.g. USDC). Must be available on the target wallet's network."}},"required":["wallet","amount","currency"]}}}}}},"/v1/sandbox/payins/simulate":{"post":{"responses":{"200":{"description":"Sandbox pay-in simulation applied","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Pay-in transfer ID"},"type":{"description":"Always payin for this endpoint","enum":["payin"]},"state":{"enum":["completed","failed"],"description":"Simulated terminal state"},"amount":{"type":"string","description":"Received amount used for simulation"},"destination_amount":{"type":"string","description":"Destination amount credited to the wallet transfer"},"to":{"type":"object","properties":{"wallet":{"type":"string"},"identifier":{"type":"string"}},"required":["wallet","identifier"]},"onchain_url":{"type":"string","description":"Explorer-style URL returned for completed sandbox simulations."}},"required":["id","type","state","amount","to"]}}}},"400":{"description":"Validation, non-sandbox, or already-terminal rejection"},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Live API key — sandbox-only endpoint"},"404":{"description":"Pay-in not found for this merchant"},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"postV1SandboxPayinsSimulate","tags":["Sandbox"],"parameters":[],"summary":"Settle a sandbox pay-in order","description":"To use sandbox simulation, first create a sandbox workspace in Swipelux at https://swipelux.app. Then issue an API key from that workspace; sandbox keys are marked with `sbx`. Send that key in `X-API-Key`. Moves an existing sandbox pay-in to `completed` or `failed` after you create the pay-in through the normal API. A completed simulation credits the sandbox wallet and emits the same pay-in and transfer webhooks as a real settlement. A failed simulation emits the failure webhooks. No real funds move.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"payin":{"type":"string","pattern":"^tr_[a-zA-Z0-9]+$","description":"Pay-in transfer ID (tr_xxx) to settle."},"status":{"enum":["completed","failed"],"description":"Terminal status to synthesize for the sandbox pay-in."},"amount":{"type":"string","pattern":"^[+-]?(?:\\d*\\.)?\\d+$","description":"Optional received amount. Omit to settle the pay-in for its original amount."}},"required":["payin","status"]}}}}}},"/v1/sandbox/payouts/simulate":{"post":{"responses":{"200":{"description":"Sandbox payout simulation applied","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Payout transfer ID"},"type":{"description":"Always payout for this endpoint","enum":["payout"]},"state":{"enum":["completed","failed"],"description":"Simulated terminal state"},"amount":{"type":"string","description":"Source amount used for simulation"},"destination_amount":{"type":"string","description":"Destination amount for the payout"},"from":{"type":"object","properties":{"wallet":{"type":"string"},"identifier":{"type":"string"}},"required":["wallet","identifier"]},"onchain_url":{"type":"string","description":"Explorer-style URL returned for completed sandbox simulations."}},"required":["id","type","state","amount","from"]}}}},"400":{"description":"Validation, non-sandbox, or already-terminal rejection"},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Live API key — sandbox-only endpoint"},"404":{"description":"Payout not found for this merchant"},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"postV1SandboxPayoutsSimulate","tags":["Sandbox"],"parameters":[],"summary":"Settle a sandbox payout","description":"To use sandbox simulation, first create a sandbox workspace in Swipelux at https://swipelux.app. Then issue an API key from that workspace; sandbox keys are marked with `sbx`. Send that key in `X-API-Key`. Moves an existing sandbox payout to `completed` or `failed` after you create the payout through the normal API. The endpoint emits the same payout and transfer webhook families that production payouts use, while keeping the activity inside the sandbox workspace. No real funds move. Live keys get 403.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"payout":{"type":"string","pattern":"^tr_[a-zA-Z0-9]+$","description":"Payout transfer ID (tr_xxx) to settle."},"status":{"enum":["completed","failed"],"description":"Terminal status to synthesize for the sandbox payout."}},"required":["payout","status"]}}}}}},"/v2/customers/{customerId}/accounts/applications":{"get":{"responses":{"200":{"description":"Account applications returned","content":{"application/json":{"schema":{"type":"object","properties":{"customerId":{"type":"string"},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"customerId":{"type":"string"},"bank":{"enum":["align_ae","align_gb","align_us","banking_circle_denmark","citi","cfsb","hsbc","jpmorgan_chase","nvio_pagos","stark_bank","zen"]},"method":{"enum":["ach","fedwire","wire","rtp","pix","sepa","swift","spei","pse","transfers_3_0","uaefts","faster_payments","sepa_instant","ipp"]},"accountType":{"enum":["pooled","named"]},"rail":{"type":"string"},"status":{"enum":["pending_review","action_required","rejected","approved"]},"reason":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]},"requirements":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"status":{"enum":["missing"]},"message":{"type":"string"}},"required":["id","type","status","message"]}},"submittedAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","customerId","bank","method","accountType","rail","status","reason","requirements","submittedAt","updatedAt"]}}},"required":["customerId","data"]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Customer not found"},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"getV2CustomersByCustomerIdAccountsApplications","tags":["V2 Account Applications"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"customerId","required":true}],"summary":"List account applications","description":"Returns bank-scoped account applications for this customer. Applications are created by bank; supported methods and account types are discoverable from the customer bank endpoints."},"post":{"responses":{"200":{"description":"Account applications created or returned","content":{"application/json":{"schema":{"type":"object","properties":{"customerId":{"type":"string"},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"customerId":{"type":"string"},"bank":{"enum":["align_ae","align_gb","align_us","banking_circle_denmark","citi","cfsb","hsbc","jpmorgan_chase","nvio_pagos","stark_bank","zen"]},"method":{"enum":["ach","fedwire","wire","rtp","pix","sepa","swift","spei","pse","transfers_3_0","uaefts","faster_payments","sepa_instant","ipp"]},"accountType":{"enum":["pooled","named"]},"rail":{"type":"string"},"status":{"enum":["pending_review","action_required","rejected","approved"]},"reason":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]},"requirements":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"status":{"enum":["missing"]},"message":{"type":"string"}},"required":["id","type","status","message"]}},"submittedAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","customerId","bank","method","accountType","rail","status","reason","requirements","submittedAt","updatedAt"]}}},"required":["customerId","data"]}}}},"400":{"description":"Invalid bank"},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Customer not found"},"422":{"description":"Bank or customer verification blocker"},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"postV2CustomersByCustomerIdAccountsApplications","tags":["V2 Account Applications"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"customerId","required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{},"examples":{"bankOnly":{"summary":"Apply for a bank","value":{"bank":"jpmorgan_chase"}}}}}},"summary":"Create account applications for a bank","description":"Creates or advances account applications for every supported account method and account type behind the selected bank."}},"/v2/customers/{customerId}/accounts/applications/{applicationId}":{"get":{"responses":{"200":{"description":"Account application returned","content":{"application/json":{"schema":{"type":"object","properties":{"customerId":{"type":"string"},"data":{"type":"object","properties":{"id":{"type":"string"},"customerId":{"type":"string"},"bank":{"enum":["align_ae","align_gb","align_us","banking_circle_denmark","citi","cfsb","hsbc","jpmorgan_chase","nvio_pagos","stark_bank","zen"]},"method":{"enum":["ach","fedwire","wire","rtp","pix","sepa","swift","spei","pse","transfers_3_0","uaefts","faster_payments","sepa_instant","ipp"]},"accountType":{"enum":["pooled","named"]},"rail":{"type":"string"},"status":{"enum":["pending_review","action_required","rejected","approved"]},"reason":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]},"requirements":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"status":{"enum":["missing"]},"message":{"type":"string"}},"required":["id","type","status","message"]}},"submittedAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","customerId","bank","method","accountType","rail","status","reason","requirements","submittedAt","updatedAt"]}},"required":["customerId","data"]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Customer or account application not found"},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"getV2CustomersByCustomerIdAccountsApplicationsByApplicationId","tags":["V2 Account Applications"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"customerId","required":true},{"schema":{"type":"string"},"in":"path","name":"applicationId","required":true}],"summary":"Get account application"}},"/v2/customers/{customerId}/accounts/applications/{applicationId}/history":{"get":{"responses":{"200":{"description":"Account application history returned","content":{"application/json":{"schema":{"type":"object","properties":{"customerId":{"type":"string"},"applicationId":{"type":"string"},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number"},"applicationId":{"type":"string"},"status":{"enum":["pending_review","action_required","rejected","approved"]},"reason":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]},"source":{"type":"string"},"metadata":{},"createdAt":{"type":"string"}},"required":["id","applicationId","status","reason","source","metadata","createdAt"]}}},"required":["customerId","applicationId","data"]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Customer or account application not found"},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"getV2CustomersByCustomerIdAccountsApplicationsByApplicationIdHistory","tags":["V2 Account Applications"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"customerId","required":true},{"schema":{"type":"string"},"in":"path","name":"applicationId","required":true}],"summary":"Get account application history"}},"/v2/customers/{customerId}/accounts":{"get":{"responses":{"200":{"description":"Accounts retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"accounts":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","description":"Unique account identifier"},"customerId":{"type":"string","description":"Customer ID"},"method":{"description":"Payment method: SEPA for European wire transfers","enum":["sepa"]},"source":{"enum":["virtual","external"],"description":"Account source: 'virtual' for Swipelux-issued, 'external' for imported."},"status":{"description":"SEPA account operations are temporarily unavailable; bank details remain readable for compatibility.","enum":["temporarily_unsupported"]},"statusReason":{"type":"string","description":"Public reason for the account status"},"receivingAccountType":{"enum":["pooled","named","external"],"description":"Whether the receiving instructions are shared pooled details, provider-issued named details, or a customer-owned external account."},"bank":{"type":"object","properties":{"code":{"enum":["align_ae","align_gb","align_us","banking_circle_denmark","cfsb","choice_financial_group","citi","hsbc","jpmorgan_chase","nvio_pagos","stark_bank","unknown_bank","zen"],"description":"Stable Swipelux public bank code for UI mapping, branding, and analytics."},"name":{"type":"string","description":"Receiving bank name to show in payment instructions."},"address":{"type":"string","description":"Receiving bank address to show in payment instructions."},"routingCodes":{"type":"array","items":{"type":"object","properties":{"type":{"enum":["iban","bic","swift","routing_number","account_number"],"description":"Typed routing or account identifier used to route money to this account."},"value":{"type":"string","description":"Identifier value, such as an IBAN, BIC, SWIFT code, ABA routing number, or account number."}},"required":["type","value"]},"description":"Typed routing and account identifiers for these receiving instructions."}},"required":["code","name","routingCodes"]},"accountHolderName":{"type":"string","description":"Account holder name"},"label":{"type":"string","description":"Display label for the account"},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code"},"currency":{"type":"string","description":"ISO 4217 currency code"},"paymentReference":{"type":"string","description":"Wire memo/reference for issued accounts."},"targetWallet":{"type":"string","description":"Target wallet ID (wal_xxx)"},"createdAt":{"type":"string","description":"Account creation timestamp"},"updatedAt":{"type":"string","description":"Account last update timestamp"},"fees":{"anyOf":[{"type":"object","properties":{"developerFeePercent":{"type":"string","minLength":1,"description":"Simple developer fee percent for pay-ins to this account."}},"required":["developerFeePercent"],"additionalProperties":false},{"type":"object","properties":{"feeConfig":{"type":"object","properties":{"source":{"type":"object","properties":{"default":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"ach":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"fedwire":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"pix":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"sepa":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"swift":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false}},"required":[],"additionalProperties":false}},"required":["source"],"additionalProperties":false}},"required":["feeConfig"],"additionalProperties":false}]}},"required":["id","customerId","method","source","receivingAccountType","bank","accountHolderName","label","country","currency","createdAt","updatedAt"]},{"type":"object","properties":{"id":{"type":"string","description":"Unique account identifier"},"customerId":{"type":"string","description":"Customer ID"},"method":{"description":"Payment method: SWIFT for international wire transfers","enum":["swift"]},"source":{"enum":["virtual","external"],"description":"Account source: 'virtual' for Swipelux-issued, 'external' for imported."},"receivingAccountType":{"enum":["pooled","named","external"],"description":"Whether the receiving instructions are shared pooled details, provider-issued named details, or a customer-owned external account."},"bank":{"type":"object","properties":{"code":{"enum":["align_ae","align_gb","align_us","banking_circle_denmark","cfsb","choice_financial_group","citi","hsbc","jpmorgan_chase","nvio_pagos","stark_bank","unknown_bank","zen"],"description":"Stable Swipelux public bank code for UI mapping, branding, and analytics."},"name":{"type":"string","description":"Receiving bank name to show in payment instructions."},"address":{"type":"string","description":"Receiving bank address to show in payment instructions."},"routingCodes":{"type":"array","items":{"type":"object","properties":{"type":{"enum":["iban","bic","swift","routing_number","account_number"],"description":"Typed routing or account identifier used to route money to this account."},"value":{"type":"string","description":"Identifier value, such as an IBAN, BIC, SWIFT code, ABA routing number, or account number."}},"required":["type","value"]},"description":"Typed routing and account identifiers for these receiving instructions."}},"required":["code","name","routingCodes"]},"accountHolderName":{"type":"string","description":"Account holder name"},"intermediaryBank":{"type":"object","properties":{"code":{"enum":["align_ae","align_gb","align_us","banking_circle_denmark","cfsb","choice_financial_group","citi","hsbc","jpmorgan_chase","nvio_pagos","stark_bank","unknown_bank","zen"],"description":"Stable Swipelux public bank code for UI mapping, branding, and analytics."},"name":{"type":"string","description":"Receiving bank name to show in payment instructions."},"address":{"type":"string","description":"Receiving bank address to show in payment instructions."},"routingCodes":{"type":"array","items":{"type":"object","properties":{"type":{"enum":["iban","bic","swift","routing_number","account_number"],"description":"Typed routing or account identifier used to route money to this account."},"value":{"type":"string","description":"Identifier value, such as an IBAN, BIC, SWIFT code, ABA routing number, or account number."}},"required":["type","value"]},"description":"Typed routing and account identifiers for these receiving instructions."}},"required":["code","name","routingCodes"],"description":"Intermediary bank instructions when the wire route requires one."},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code"},"currency":{"type":"string","description":"ISO 4217 currency code"},"paymentReference":{"type":"string","description":"Wire memo/reference for issued accounts."},"targetWallet":{"type":"string","description":"Target wallet ID (wal_xxx)"},"label":{"type":"string","description":"Optional label for the account"},"createdAt":{"type":"string","description":"Account creation timestamp"},"updatedAt":{"type":"string","description":"Account last update timestamp"},"fees":{"anyOf":[{"type":"object","properties":{"developerFeePercent":{"type":"string","minLength":1,"description":"Simple developer fee percent for pay-ins to this account."}},"required":["developerFeePercent"],"additionalProperties":false},{"type":"object","properties":{"feeConfig":{"type":"object","properties":{"source":{"type":"object","properties":{"default":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"ach":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"fedwire":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"pix":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"sepa":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"swift":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false}},"required":[],"additionalProperties":false}},"required":["source"],"additionalProperties":false}},"required":["feeConfig"],"additionalProperties":false}]}},"required":["id","customerId","method","source","receivingAccountType","bank","accountHolderName","country","currency","createdAt","updatedAt"]},{"type":"object","properties":{"id":{"type":"string","description":"Unique account identifier"},"customerId":{"type":"string","description":"Customer ID"},"method":{"enum":["ach","fedwire","pix"],"description":"US payment method for the bank account"},"source":{"enum":["virtual","external"],"description":"Account source: 'virtual' for Swipelux-issued, 'external' for imported."},"receivingAccountType":{"enum":["pooled","named","external"],"description":"Whether the receiving instructions are shared pooled details, provider-issued named details, or a customer-owned external account."},"bank":{"type":"object","properties":{"code":{"enum":["align_ae","align_gb","align_us","banking_circle_denmark","cfsb","choice_financial_group","citi","hsbc","jpmorgan_chase","nvio_pagos","stark_bank","unknown_bank","zen"],"description":"Stable Swipelux public bank code for UI mapping, branding, and analytics."},"name":{"type":"string","description":"Receiving bank name to show in payment instructions."},"address":{"type":"string","description":"Receiving bank address to show in payment instructions."},"routingCodes":{"type":"array","items":{"type":"object","properties":{"type":{"enum":["iban","bic","swift","routing_number","account_number"],"description":"Typed routing or account identifier used to route money to this account."},"value":{"type":"string","description":"Identifier value, such as an IBAN, BIC, SWIFT code, ABA routing number, or account number."}},"required":["type","value"]},"description":"Typed routing and account identifiers for these receiving instructions."}},"required":["code","name","routingCodes"]},"accountHolderName":{"type":"string","description":"Account holder name"},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code"},"currency":{"type":"string","description":"ISO 4217 currency code"},"paymentReference":{"type":"string","description":"Wire memo/reference for issued accounts."},"targetWallet":{"type":"string","description":"Target wallet ID (wal_xxx)"},"label":{"type":"string","description":"Optional label for the account"},"createdAt":{"type":"string","description":"Account creation timestamp"},"updatedAt":{"type":"string","description":"Account last update timestamp"},"fees":{"anyOf":[{"type":"object","properties":{"developerFeePercent":{"type":"string","minLength":1,"description":"Simple developer fee percent for pay-ins to this account."}},"required":["developerFeePercent"],"additionalProperties":false},{"type":"object","properties":{"feeConfig":{"type":"object","properties":{"source":{"type":"object","properties":{"default":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"ach":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"fedwire":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"pix":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"sepa":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"swift":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false}},"required":[],"additionalProperties":false}},"required":["source"],"additionalProperties":false}},"required":["feeConfig"],"additionalProperties":false}]}},"required":["id","customerId","method","source","receivingAccountType","bank","accountHolderName","country","currency","createdAt","updatedAt"]},{"type":"object","properties":{"id":{"type":"string","description":"Pending account revision identifier"},"customerId":{"type":"string","description":"Customer ID"},"method":{"enum":["ach","fedwire","wire","rtp","pix","sepa","swift","spei","pse","transfers_3_0","uaefts","faster_payments","sepa_instant","ipp"],"description":"Public payment method for this bank account."},"source":{"description":"Pending account requests use the same virtual source value as v1.","enum":["virtual"]},"receivingAccountType":{"enum":["pooled","named","external"],"description":"Whether the receiving instructions are shared pooled details, provider-issued named details, or a customer-owned external account."},"currency":{"type":"string","description":"ISO 4217 currency code"},"status":{"type":"string","description":"Pending account provisioning status"},"targetWallet":{"type":"string","description":"Target wallet ID (wal_xxx)"},"createdAt":{"type":"string","description":"Account request creation timestamp"},"updatedAt":{"type":"string","description":"Account request last update timestamp"},"fees":{"anyOf":[{"type":"object","properties":{"developerFeePercent":{"type":"string","minLength":1,"description":"Simple developer fee percent for pay-ins to this account."}},"required":["developerFeePercent"],"additionalProperties":false},{"type":"object","properties":{"feeConfig":{"type":"object","properties":{"source":{"type":"object","properties":{"default":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"ach":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"fedwire":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"pix":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"sepa":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"swift":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false}},"required":[],"additionalProperties":false}},"required":["source"],"additionalProperties":false}},"required":["feeConfig"],"additionalProperties":false}]}},"required":["id","customerId","method","source","receivingAccountType","currency","status","targetWallet","createdAt","updatedAt"]}]}}},"required":["accounts"]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Requested resource not found","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"getV2CustomersByCustomerIdAccounts","tags":["Account"],"parameters":[{"in":"path","name":"customerId","schema":{"type":"string"},"required":true}],"summary":"List customer bank accounts (v2)","description":"Get all customer bank accounts with receiving bank instructions grouped under `bank` and `intermediaryBank` objects."},"post":{"responses":{"200":{"description":"Issued account request accepted or existing account returned","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","description":"Unique account identifier"},"customerId":{"type":"string","description":"Customer ID"},"method":{"description":"Payment method: SEPA for European wire transfers","enum":["sepa"]},"source":{"enum":["virtual","external"],"description":"Account source: 'virtual' for Swipelux-issued, 'external' for imported."},"status":{"description":"SEPA account operations are temporarily unavailable; bank details remain readable for compatibility.","enum":["temporarily_unsupported"]},"statusReason":{"type":"string","description":"Public reason for the account status"},"receivingAccountType":{"enum":["pooled","named","external"],"description":"Whether the receiving instructions are shared pooled details, provider-issued named details, or a customer-owned external account."},"bank":{"type":"object","properties":{"code":{"enum":["align_ae","align_gb","align_us","banking_circle_denmark","cfsb","choice_financial_group","citi","hsbc","jpmorgan_chase","nvio_pagos","stark_bank","unknown_bank","zen"],"description":"Stable Swipelux public bank code for UI mapping, branding, and analytics."},"name":{"type":"string","description":"Receiving bank name to show in payment instructions."},"address":{"type":"string","description":"Receiving bank address to show in payment instructions."},"routingCodes":{"type":"array","items":{"type":"object","properties":{"type":{"enum":["iban","bic","swift","routing_number","account_number"],"description":"Typed routing or account identifier used to route money to this account."},"value":{"type":"string","description":"Identifier value, such as an IBAN, BIC, SWIFT code, ABA routing number, or account number."}},"required":["type","value"]},"description":"Typed routing and account identifiers for these receiving instructions."}},"required":["code","name","routingCodes"]},"accountHolderName":{"type":"string","description":"Account holder name"},"label":{"type":"string","description":"Display label for the account"},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code"},"currency":{"type":"string","description":"ISO 4217 currency code"},"paymentReference":{"type":"string","description":"Wire memo/reference for issued accounts."},"targetWallet":{"type":"string","description":"Target wallet ID (wal_xxx)"},"createdAt":{"type":"string","description":"Account creation timestamp"},"updatedAt":{"type":"string","description":"Account last update timestamp"},"fees":{"anyOf":[{"type":"object","properties":{"developerFeePercent":{"type":"string","minLength":1,"description":"Simple developer fee percent for pay-ins to this account."}},"required":["developerFeePercent"],"additionalProperties":false},{"type":"object","properties":{"feeConfig":{"type":"object","properties":{"source":{"type":"object","properties":{"default":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"ach":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"fedwire":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"pix":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"sepa":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"swift":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false}},"required":[],"additionalProperties":false}},"required":["source"],"additionalProperties":false}},"required":["feeConfig"],"additionalProperties":false}]}},"required":["id","customerId","method","source","receivingAccountType","bank","accountHolderName","label","country","currency","createdAt","updatedAt"]},{"type":"object","properties":{"id":{"type":"string","description":"Unique account identifier"},"customerId":{"type":"string","description":"Customer ID"},"method":{"description":"Payment method: SWIFT for international wire transfers","enum":["swift"]},"source":{"enum":["virtual","external"],"description":"Account source: 'virtual' for Swipelux-issued, 'external' for imported."},"receivingAccountType":{"enum":["pooled","named","external"],"description":"Whether the receiving instructions are shared pooled details, provider-issued named details, or a customer-owned external account."},"bank":{"type":"object","properties":{"code":{"enum":["align_ae","align_gb","align_us","banking_circle_denmark","cfsb","choice_financial_group","citi","hsbc","jpmorgan_chase","nvio_pagos","stark_bank","unknown_bank","zen"],"description":"Stable Swipelux public bank code for UI mapping, branding, and analytics."},"name":{"type":"string","description":"Receiving bank name to show in payment instructions."},"address":{"type":"string","description":"Receiving bank address to show in payment instructions."},"routingCodes":{"type":"array","items":{"type":"object","properties":{"type":{"enum":["iban","bic","swift","routing_number","account_number"],"description":"Typed routing or account identifier used to route money to this account."},"value":{"type":"string","description":"Identifier value, such as an IBAN, BIC, SWIFT code, ABA routing number, or account number."}},"required":["type","value"]},"description":"Typed routing and account identifiers for these receiving instructions."}},"required":["code","name","routingCodes"]},"accountHolderName":{"type":"string","description":"Account holder name"},"intermediaryBank":{"type":"object","properties":{"code":{"enum":["align_ae","align_gb","align_us","banking_circle_denmark","cfsb","choice_financial_group","citi","hsbc","jpmorgan_chase","nvio_pagos","stark_bank","unknown_bank","zen"],"description":"Stable Swipelux public bank code for UI mapping, branding, and analytics."},"name":{"type":"string","description":"Receiving bank name to show in payment instructions."},"address":{"type":"string","description":"Receiving bank address to show in payment instructions."},"routingCodes":{"type":"array","items":{"type":"object","properties":{"type":{"enum":["iban","bic","swift","routing_number","account_number"],"description":"Typed routing or account identifier used to route money to this account."},"value":{"type":"string","description":"Identifier value, such as an IBAN, BIC, SWIFT code, ABA routing number, or account number."}},"required":["type","value"]},"description":"Typed routing and account identifiers for these receiving instructions."}},"required":["code","name","routingCodes"],"description":"Intermediary bank instructions when the wire route requires one."},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code"},"currency":{"type":"string","description":"ISO 4217 currency code"},"paymentReference":{"type":"string","description":"Wire memo/reference for issued accounts."},"targetWallet":{"type":"string","description":"Target wallet ID (wal_xxx)"},"label":{"type":"string","description":"Optional label for the account"},"createdAt":{"type":"string","description":"Account creation timestamp"},"updatedAt":{"type":"string","description":"Account last update timestamp"},"fees":{"anyOf":[{"type":"object","properties":{"developerFeePercent":{"type":"string","minLength":1,"description":"Simple developer fee percent for pay-ins to this account."}},"required":["developerFeePercent"],"additionalProperties":false},{"type":"object","properties":{"feeConfig":{"type":"object","properties":{"source":{"type":"object","properties":{"default":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"ach":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"fedwire":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"pix":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"sepa":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"swift":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false}},"required":[],"additionalProperties":false}},"required":["source"],"additionalProperties":false}},"required":["feeConfig"],"additionalProperties":false}]}},"required":["id","customerId","method","source","receivingAccountType","bank","accountHolderName","country","currency","createdAt","updatedAt"]},{"type":"object","properties":{"id":{"type":"string","description":"Unique account identifier"},"customerId":{"type":"string","description":"Customer ID"},"method":{"enum":["ach","fedwire","pix"],"description":"US payment method for the bank account"},"source":{"enum":["virtual","external"],"description":"Account source: 'virtual' for Swipelux-issued, 'external' for imported."},"receivingAccountType":{"enum":["pooled","named","external"],"description":"Whether the receiving instructions are shared pooled details, provider-issued named details, or a customer-owned external account."},"bank":{"type":"object","properties":{"code":{"enum":["align_ae","align_gb","align_us","banking_circle_denmark","cfsb","choice_financial_group","citi","hsbc","jpmorgan_chase","nvio_pagos","stark_bank","unknown_bank","zen"],"description":"Stable Swipelux public bank code for UI mapping, branding, and analytics."},"name":{"type":"string","description":"Receiving bank name to show in payment instructions."},"address":{"type":"string","description":"Receiving bank address to show in payment instructions."},"routingCodes":{"type":"array","items":{"type":"object","properties":{"type":{"enum":["iban","bic","swift","routing_number","account_number"],"description":"Typed routing or account identifier used to route money to this account."},"value":{"type":"string","description":"Identifier value, such as an IBAN, BIC, SWIFT code, ABA routing number, or account number."}},"required":["type","value"]},"description":"Typed routing and account identifiers for these receiving instructions."}},"required":["code","name","routingCodes"]},"accountHolderName":{"type":"string","description":"Account holder name"},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code"},"currency":{"type":"string","description":"ISO 4217 currency code"},"paymentReference":{"type":"string","description":"Wire memo/reference for issued accounts."},"targetWallet":{"type":"string","description":"Target wallet ID (wal_xxx)"},"label":{"type":"string","description":"Optional label for the account"},"createdAt":{"type":"string","description":"Account creation timestamp"},"updatedAt":{"type":"string","description":"Account last update timestamp"},"fees":{"anyOf":[{"type":"object","properties":{"developerFeePercent":{"type":"string","minLength":1,"description":"Simple developer fee percent for pay-ins to this account."}},"required":["developerFeePercent"],"additionalProperties":false},{"type":"object","properties":{"feeConfig":{"type":"object","properties":{"source":{"type":"object","properties":{"default":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"ach":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"fedwire":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"pix":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"sepa":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"swift":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false}},"required":[],"additionalProperties":false}},"required":["source"],"additionalProperties":false}},"required":["feeConfig"],"additionalProperties":false}]}},"required":["id","customerId","method","source","receivingAccountType","bank","accountHolderName","country","currency","createdAt","updatedAt"]},{"type":"object","properties":{"id":{"type":"string","description":"Pending account revision identifier"},"customerId":{"type":"string","description":"Customer ID"},"method":{"enum":["ach","fedwire","wire","rtp","pix","sepa","swift","spei","pse","transfers_3_0","uaefts","faster_payments","sepa_instant","ipp"],"description":"Public payment method for this bank account."},"source":{"description":"Pending account requests use the same virtual source value as v1.","enum":["virtual"]},"receivingAccountType":{"enum":["pooled","named","external"],"description":"Whether the receiving instructions are shared pooled details, provider-issued named details, or a customer-owned external account."},"currency":{"type":"string","description":"ISO 4217 currency code"},"status":{"type":"string","description":"Pending account provisioning status"},"targetWallet":{"type":"string","description":"Target wallet ID (wal_xxx)"},"createdAt":{"type":"string","description":"Account request creation timestamp"},"updatedAt":{"type":"string","description":"Account request last update timestamp"},"fees":{"anyOf":[{"type":"object","properties":{"developerFeePercent":{"type":"string","minLength":1,"description":"Simple developer fee percent for pay-ins to this account."}},"required":["developerFeePercent"],"additionalProperties":false},{"type":"object","properties":{"feeConfig":{"type":"object","properties":{"source":{"type":"object","properties":{"default":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"ach":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"fedwire":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"pix":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"sepa":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"swift":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false}},"required":[],"additionalProperties":false}},"required":["source"],"additionalProperties":false}},"required":["feeConfig"],"additionalProperties":false}]}},"required":["id","customerId","method","source","receivingAccountType","currency","status","targetWallet","createdAt","updatedAt"]}]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Requested resource not found","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"409":{"description":"Selected bank and method are not ready for this customer."},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"postV2CustomersByCustomerIdAccounts","tags":["Account"],"parameters":[{"in":"path","name":"customerId","schema":{"type":"string"},"required":true}],"summary":"Bank account creation","description":"Bank account creation for a Swipelux-issued account using public bank and method fields. Internal rails remain an implementation detail. For customizable pay-in fees, first request the bank method with `POST /v2/customers/{customerId}/banks`, then create the issued account with `fees` here or update them later through the Bank account fees operation in this Account section. Pass the returned `acc_*` as `account` in `POST /v2/quote` for deterministic fee resolution.","requestBody":{"required":true,"content":{"application/json":{"schema":{},"examples":{"citiAchSimpleDeveloperFee":{"summary":"Citi ACH issued account with percent fee","value":{"bank":"citi","method":"ach","accountType":"pooled","country":"US","currency":"USD","targetWallet":"wal_usdc_123","fees":{"developerFeePercent":"0.50"}}},"citiAchRichFeeConfig":{"summary":"Citi ACH issued account with fixed, percent, min, and max fees","value":{"bank":"citi","method":"ach","accountType":"pooled","country":"US","currency":"USD","targetWallet":"wal_usdc_123","fees":{"feeConfig":{"source":{"default":{"feePercent":"0.25"},"ach":{"feeFixed":"1.00","feePercent":"0.50","minimumFee":"1.00","maximumFee":"25.00"}}}}}}}}}}}},"/v2/customers/{customerId}/accounts/import":{"post":{"responses":{"200":{"description":"External account imported successfully","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","description":"Unique account identifier"},"customerId":{"type":"string","description":"Customer ID"},"method":{"description":"Payment method: SEPA for European wire transfers","enum":["sepa"]},"source":{"enum":["virtual","external"],"description":"Account source: 'virtual' for Swipelux-issued, 'external' for imported."},"status":{"description":"SEPA account operations are temporarily unavailable; bank details remain readable for compatibility.","enum":["temporarily_unsupported"]},"statusReason":{"type":"string","description":"Public reason for the account status"},"receivingAccountType":{"enum":["pooled","named","external"],"description":"Whether the receiving instructions are shared pooled details, provider-issued named details, or a customer-owned external account."},"bank":{"type":"object","properties":{"code":{"enum":["align_ae","align_gb","align_us","banking_circle_denmark","cfsb","choice_financial_group","citi","hsbc","jpmorgan_chase","nvio_pagos","stark_bank","unknown_bank","zen"],"description":"Stable Swipelux public bank code for UI mapping, branding, and analytics."},"name":{"type":"string","description":"Receiving bank name to show in payment instructions."},"address":{"type":"string","description":"Receiving bank address to show in payment instructions."},"routingCodes":{"type":"array","items":{"type":"object","properties":{"type":{"enum":["iban","bic","swift","routing_number","account_number"],"description":"Typed routing or account identifier used to route money to this account."},"value":{"type":"string","description":"Identifier value, such as an IBAN, BIC, SWIFT code, ABA routing number, or account number."}},"required":["type","value"]},"description":"Typed routing and account identifiers for these receiving instructions."}},"required":["code","name","routingCodes"]},"accountHolderName":{"type":"string","description":"Account holder name"},"label":{"type":"string","description":"Display label for the account"},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code"},"currency":{"type":"string","description":"ISO 4217 currency code"},"paymentReference":{"type":"string","description":"Wire memo/reference for issued accounts."},"targetWallet":{"type":"string","description":"Target wallet ID (wal_xxx)"},"createdAt":{"type":"string","description":"Account creation timestamp"},"updatedAt":{"type":"string","description":"Account last update timestamp"},"fees":{"anyOf":[{"type":"object","properties":{"developerFeePercent":{"type":"string","minLength":1,"description":"Simple developer fee percent for pay-ins to this account."}},"required":["developerFeePercent"],"additionalProperties":false},{"type":"object","properties":{"feeConfig":{"type":"object","properties":{"source":{"type":"object","properties":{"default":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"ach":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"fedwire":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"pix":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"sepa":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"swift":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false}},"required":[],"additionalProperties":false}},"required":["source"],"additionalProperties":false}},"required":["feeConfig"],"additionalProperties":false}]}},"required":["id","customerId","method","source","receivingAccountType","bank","accountHolderName","label","country","currency","createdAt","updatedAt"]},{"type":"object","properties":{"id":{"type":"string","description":"Unique account identifier"},"customerId":{"type":"string","description":"Customer ID"},"method":{"description":"Payment method: SWIFT for international wire transfers","enum":["swift"]},"source":{"enum":["virtual","external"],"description":"Account source: 'virtual' for Swipelux-issued, 'external' for imported."},"receivingAccountType":{"enum":["pooled","named","external"],"description":"Whether the receiving instructions are shared pooled details, provider-issued named details, or a customer-owned external account."},"bank":{"type":"object","properties":{"code":{"enum":["align_ae","align_gb","align_us","banking_circle_denmark","cfsb","choice_financial_group","citi","hsbc","jpmorgan_chase","nvio_pagos","stark_bank","unknown_bank","zen"],"description":"Stable Swipelux public bank code for UI mapping, branding, and analytics."},"name":{"type":"string","description":"Receiving bank name to show in payment instructions."},"address":{"type":"string","description":"Receiving bank address to show in payment instructions."},"routingCodes":{"type":"array","items":{"type":"object","properties":{"type":{"enum":["iban","bic","swift","routing_number","account_number"],"description":"Typed routing or account identifier used to route money to this account."},"value":{"type":"string","description":"Identifier value, such as an IBAN, BIC, SWIFT code, ABA routing number, or account number."}},"required":["type","value"]},"description":"Typed routing and account identifiers for these receiving instructions."}},"required":["code","name","routingCodes"]},"accountHolderName":{"type":"string","description":"Account holder name"},"intermediaryBank":{"type":"object","properties":{"code":{"enum":["align_ae","align_gb","align_us","banking_circle_denmark","cfsb","choice_financial_group","citi","hsbc","jpmorgan_chase","nvio_pagos","stark_bank","unknown_bank","zen"],"description":"Stable Swipelux public bank code for UI mapping, branding, and analytics."},"name":{"type":"string","description":"Receiving bank name to show in payment instructions."},"address":{"type":"string","description":"Receiving bank address to show in payment instructions."},"routingCodes":{"type":"array","items":{"type":"object","properties":{"type":{"enum":["iban","bic","swift","routing_number","account_number"],"description":"Typed routing or account identifier used to route money to this account."},"value":{"type":"string","description":"Identifier value, such as an IBAN, BIC, SWIFT code, ABA routing number, or account number."}},"required":["type","value"]},"description":"Typed routing and account identifiers for these receiving instructions."}},"required":["code","name","routingCodes"],"description":"Intermediary bank instructions when the wire route requires one."},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code"},"currency":{"type":"string","description":"ISO 4217 currency code"},"paymentReference":{"type":"string","description":"Wire memo/reference for issued accounts."},"targetWallet":{"type":"string","description":"Target wallet ID (wal_xxx)"},"label":{"type":"string","description":"Optional label for the account"},"createdAt":{"type":"string","description":"Account creation timestamp"},"updatedAt":{"type":"string","description":"Account last update timestamp"},"fees":{"anyOf":[{"type":"object","properties":{"developerFeePercent":{"type":"string","minLength":1,"description":"Simple developer fee percent for pay-ins to this account."}},"required":["developerFeePercent"],"additionalProperties":false},{"type":"object","properties":{"feeConfig":{"type":"object","properties":{"source":{"type":"object","properties":{"default":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"ach":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"fedwire":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"pix":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"sepa":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"swift":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false}},"required":[],"additionalProperties":false}},"required":["source"],"additionalProperties":false}},"required":["feeConfig"],"additionalProperties":false}]}},"required":["id","customerId","method","source","receivingAccountType","bank","accountHolderName","country","currency","createdAt","updatedAt"]},{"type":"object","properties":{"id":{"type":"string","description":"Unique account identifier"},"customerId":{"type":"string","description":"Customer ID"},"method":{"enum":["ach","fedwire","pix"],"description":"US payment method for the bank account"},"source":{"enum":["virtual","external"],"description":"Account source: 'virtual' for Swipelux-issued, 'external' for imported."},"receivingAccountType":{"enum":["pooled","named","external"],"description":"Whether the receiving instructions are shared pooled details, provider-issued named details, or a customer-owned external account."},"bank":{"type":"object","properties":{"code":{"enum":["align_ae","align_gb","align_us","banking_circle_denmark","cfsb","choice_financial_group","citi","hsbc","jpmorgan_chase","nvio_pagos","stark_bank","unknown_bank","zen"],"description":"Stable Swipelux public bank code for UI mapping, branding, and analytics."},"name":{"type":"string","description":"Receiving bank name to show in payment instructions."},"address":{"type":"string","description":"Receiving bank address to show in payment instructions."},"routingCodes":{"type":"array","items":{"type":"object","properties":{"type":{"enum":["iban","bic","swift","routing_number","account_number"],"description":"Typed routing or account identifier used to route money to this account."},"value":{"type":"string","description":"Identifier value, such as an IBAN, BIC, SWIFT code, ABA routing number, or account number."}},"required":["type","value"]},"description":"Typed routing and account identifiers for these receiving instructions."}},"required":["code","name","routingCodes"]},"accountHolderName":{"type":"string","description":"Account holder name"},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code"},"currency":{"type":"string","description":"ISO 4217 currency code"},"paymentReference":{"type":"string","description":"Wire memo/reference for issued accounts."},"targetWallet":{"type":"string","description":"Target wallet ID (wal_xxx)"},"label":{"type":"string","description":"Optional label for the account"},"createdAt":{"type":"string","description":"Account creation timestamp"},"updatedAt":{"type":"string","description":"Account last update timestamp"},"fees":{"anyOf":[{"type":"object","properties":{"developerFeePercent":{"type":"string","minLength":1,"description":"Simple developer fee percent for pay-ins to this account."}},"required":["developerFeePercent"],"additionalProperties":false},{"type":"object","properties":{"feeConfig":{"type":"object","properties":{"source":{"type":"object","properties":{"default":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"ach":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"fedwire":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"pix":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"sepa":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"swift":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false}},"required":[],"additionalProperties":false}},"required":["source"],"additionalProperties":false}},"required":["feeConfig"],"additionalProperties":false}]}},"required":["id","customerId","method","source","receivingAccountType","bank","accountHolderName","country","currency","createdAt","updatedAt"]},{"type":"object","properties":{"id":{"type":"string","description":"Pending account revision identifier"},"customerId":{"type":"string","description":"Customer ID"},"method":{"enum":["ach","fedwire","wire","rtp","pix","sepa","swift","spei","pse","transfers_3_0","uaefts","faster_payments","sepa_instant","ipp"],"description":"Public payment method for this bank account."},"source":{"description":"Pending account requests use the same virtual source value as v1.","enum":["virtual"]},"receivingAccountType":{"enum":["pooled","named","external"],"description":"Whether the receiving instructions are shared pooled details, provider-issued named details, or a customer-owned external account."},"currency":{"type":"string","description":"ISO 4217 currency code"},"status":{"type":"string","description":"Pending account provisioning status"},"targetWallet":{"type":"string","description":"Target wallet ID (wal_xxx)"},"createdAt":{"type":"string","description":"Account request creation timestamp"},"updatedAt":{"type":"string","description":"Account request last update timestamp"},"fees":{"anyOf":[{"type":"object","properties":{"developerFeePercent":{"type":"string","minLength":1,"description":"Simple developer fee percent for pay-ins to this account."}},"required":["developerFeePercent"],"additionalProperties":false},{"type":"object","properties":{"feeConfig":{"type":"object","properties":{"source":{"type":"object","properties":{"default":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"ach":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"fedwire":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"pix":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"sepa":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"swift":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false}},"required":[],"additionalProperties":false}},"required":["source"],"additionalProperties":false}},"required":["feeConfig"],"additionalProperties":false}]}},"required":["id","customerId","method","source","receivingAccountType","currency","status","targetWallet","createdAt","updatedAt"]}]}}}},"400":{"description":"Malformed bank-account details, including invalid SWIFT/BIC or ABA routing identifiers."},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Requested resource not found","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"409":{"description":"Selected bank and method are not ready for this customer."},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"postV2CustomersByCustomerIdAccountsImport","tags":["Account"],"parameters":[{"in":"path","name":"customerId","schema":{"type":"string"},"required":true}],"summary":"Import external bank account","description":"Import an external payout account using public bank and method fields. Method-specific bank details remain required. Malformed SWIFT/BIC and ABA routing identifiers return 400 before rail readiness is evaluated.","requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"bank":{"enum":["align_ae","align_gb","align_us","banking_circle_denmark","citi","cfsb","hsbc","jpmorgan_chase","nvio_pagos","stark_bank","zen"],"description":"Public bank code selected for this account request."},"method":{"enum":["sepa"]},"iban":{"type":"string","minLength":15,"maxLength":34},"bic":{"type":"string","minLength":8,"maxLength":11,"description":"Optional 8-11-character SWIFT/BIC identifying the bank that holds the destination SEPA account."},"bankName":{"type":"string","minLength":1,"maxLength":255},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"accountHolderName":{"type":"string","minLength":1,"maxLength":255,"description":"Legal name on the external bank account, exactly as the bank holds it. Required: must match the bank's records or the wire/ACH will be returned. May differ from the customer's registered name (officer, treasury entity, third party)."},"country":{"type":"string","minLength":2,"maxLength":2},"currency":{"type":"string","minLength":3,"maxLength":3}},"required":["bank","method","iban","accountHolderName","country","currency"],"additionalProperties":false},{"type":"object","properties":{"bank":{"enum":["align_ae","align_gb","align_us","banking_circle_denmark","citi","cfsb","hsbc","jpmorgan_chase","nvio_pagos","stark_bank","zen"],"description":"Public bank code selected for this account request."},"method":{"enum":["swift"]},"swiftCode":{"type":"string","minLength":8,"maxLength":11,"pattern":"^(?:\\s*[A-Za-z]){6}(?:\\s*[A-Za-z0-9]){2}(?:(?:\\s*[A-Za-z0-9]){3})?\\s*$","description":"8- or 11-character SWIFT/BIC identifying the beneficiary bank that holds the destination account."},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"bankName":{"type":"string","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","minLength":1,"maxLength":255,"description":"Legal name on the external bank account, exactly as the bank holds it. Required: must match the bank's records or the wire/ACH will be returned. May differ from the customer's registered name (officer, treasury entity, third party)."},"country":{"type":"string","minLength":2,"maxLength":2},"currency":{"type":"string","minLength":3,"maxLength":3},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"routingNumber":{"type":"string","minLength":9,"maxLength":9,"pattern":"^[0-9]{9}$","description":"Optional nine-digit ABA routing number for the beneficiary bank when the SWIFT payment uses U.S. domestic routing."},"intermediaryBankSwift":{"type":"string","minLength":8,"maxLength":11,"pattern":"^(?:\\s*[A-Za-z]){6}(?:\\s*[A-Za-z0-9]){2}(?:(?:\\s*[A-Za-z0-9]){3})?\\s*$","description":"8- or 11-character SWIFT/BIC identifying the intermediary bank used to route the payment to the beneficiary bank."},"intermediaryBankName":{"type":"string","minLength":1,"maxLength":255},"intermediaryBankAddress":{"type":"string","minLength":1,"maxLength":512},"label":{"type":"string","minLength":1,"maxLength":255}},"required":["bank","method","swiftCode","accountNumber","bankName","accountHolderName","country","currency"],"additionalProperties":false},{"type":"object","properties":{"bank":{"enum":["align_ae","align_gb","align_us","banking_circle_denmark","citi","cfsb","hsbc","jpmorgan_chase","nvio_pagos","stark_bank","zen"],"description":"Public bank code selected for this account request."},"method":{"enum":["ach"]},"routingNumber":{"type":"string","minLength":9,"maxLength":9,"pattern":"^[0-9]{9}$","description":"Nine-digit ABA routing number identifying the destination bank for ACH transfers."},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"accountType":{"enum":["checking","savings"],"description":"Account type, defaults to 'checking'","default":"checking"},"bankName":{"type":"string","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","minLength":1,"maxLength":255,"description":"Legal name on the external bank account, exactly as the bank holds it. Required: must match the bank's records or the wire/ACH will be returned. May differ from the customer's registered name (officer, treasury entity, third party)."},"country":{"type":"string","minLength":2,"maxLength":2},"currency":{"type":"string","minLength":3,"maxLength":3},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"label":{"type":"string","minLength":1,"maxLength":255}},"required":["bank","method","routingNumber","accountNumber","bankName","accountHolderName","country","currency"],"additionalProperties":false},{"type":"object","properties":{"bank":{"enum":["align_ae","align_gb","align_us","banking_circle_denmark","citi","cfsb","hsbc","jpmorgan_chase","nvio_pagos","stark_bank","zen"],"description":"Public bank code selected for this account request."},"method":{"enum":["fedwire"]},"routingNumber":{"type":"string","minLength":9,"maxLength":9,"pattern":"^[0-9]{9}$","description":"Nine-digit ABA routing number identifying the destination bank for Fedwire transfers."},"accountNumber":{"type":"string","minLength":1,"maxLength":34},"accountType":{"enum":["checking","savings"],"description":"Account type, defaults to 'checking'","default":"checking"},"bankName":{"type":"string","minLength":1,"maxLength":255},"accountHolderName":{"type":"string","minLength":1,"maxLength":255,"description":"Legal name on the external bank account, exactly as the bank holds it. Required: must match the bank's records or the wire/ACH will be returned. May differ from the customer's registered name (officer, treasury entity, third party)."},"country":{"type":"string","minLength":2,"maxLength":2},"currency":{"type":"string","minLength":3,"maxLength":3},"bankAddress":{"type":"string","minLength":1,"maxLength":512},"label":{"type":"string","minLength":1,"maxLength":255}},"required":["bank","method","routingNumber","accountNumber","bankName","accountHolderName","country","currency"],"additionalProperties":false}]}}}}}},"/v2/customers/{customerId}/accounts/{accountId}":{"get":{"responses":{"200":{"description":"Account retrieved successfully","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","description":"Unique account identifier"},"customerId":{"type":"string","description":"Customer ID"},"method":{"description":"Payment method: SEPA for European wire transfers","enum":["sepa"]},"source":{"enum":["virtual","external"],"description":"Account source: 'virtual' for Swipelux-issued, 'external' for imported."},"status":{"description":"SEPA account operations are temporarily unavailable; bank details remain readable for compatibility.","enum":["temporarily_unsupported"]},"statusReason":{"type":"string","description":"Public reason for the account status"},"receivingAccountType":{"enum":["pooled","named","external"],"description":"Whether the receiving instructions are shared pooled details, provider-issued named details, or a customer-owned external account."},"bank":{"type":"object","properties":{"code":{"enum":["align_ae","align_gb","align_us","banking_circle_denmark","cfsb","choice_financial_group","citi","hsbc","jpmorgan_chase","nvio_pagos","stark_bank","unknown_bank","zen"],"description":"Stable Swipelux public bank code for UI mapping, branding, and analytics."},"name":{"type":"string","description":"Receiving bank name to show in payment instructions."},"address":{"type":"string","description":"Receiving bank address to show in payment instructions."},"routingCodes":{"type":"array","items":{"type":"object","properties":{"type":{"enum":["iban","bic","swift","routing_number","account_number"],"description":"Typed routing or account identifier used to route money to this account."},"value":{"type":"string","description":"Identifier value, such as an IBAN, BIC, SWIFT code, ABA routing number, or account number."}},"required":["type","value"]},"description":"Typed routing and account identifiers for these receiving instructions."}},"required":["code","name","routingCodes"]},"accountHolderName":{"type":"string","description":"Account holder name"},"label":{"type":"string","description":"Display label for the account"},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code"},"currency":{"type":"string","description":"ISO 4217 currency code"},"paymentReference":{"type":"string","description":"Wire memo/reference for issued accounts."},"targetWallet":{"type":"string","description":"Target wallet ID (wal_xxx)"},"createdAt":{"type":"string","description":"Account creation timestamp"},"updatedAt":{"type":"string","description":"Account last update timestamp"},"fees":{"anyOf":[{"type":"object","properties":{"developerFeePercent":{"type":"string","minLength":1,"description":"Simple developer fee percent for pay-ins to this account."}},"required":["developerFeePercent"],"additionalProperties":false},{"type":"object","properties":{"feeConfig":{"type":"object","properties":{"source":{"type":"object","properties":{"default":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"ach":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"fedwire":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"pix":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"sepa":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"swift":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false}},"required":[],"additionalProperties":false}},"required":["source"],"additionalProperties":false}},"required":["feeConfig"],"additionalProperties":false}]}},"required":["id","customerId","method","source","receivingAccountType","bank","accountHolderName","label","country","currency","createdAt","updatedAt"]},{"type":"object","properties":{"id":{"type":"string","description":"Unique account identifier"},"customerId":{"type":"string","description":"Customer ID"},"method":{"description":"Payment method: SWIFT for international wire transfers","enum":["swift"]},"source":{"enum":["virtual","external"],"description":"Account source: 'virtual' for Swipelux-issued, 'external' for imported."},"receivingAccountType":{"enum":["pooled","named","external"],"description":"Whether the receiving instructions are shared pooled details, provider-issued named details, or a customer-owned external account."},"bank":{"type":"object","properties":{"code":{"enum":["align_ae","align_gb","align_us","banking_circle_denmark","cfsb","choice_financial_group","citi","hsbc","jpmorgan_chase","nvio_pagos","stark_bank","unknown_bank","zen"],"description":"Stable Swipelux public bank code for UI mapping, branding, and analytics."},"name":{"type":"string","description":"Receiving bank name to show in payment instructions."},"address":{"type":"string","description":"Receiving bank address to show in payment instructions."},"routingCodes":{"type":"array","items":{"type":"object","properties":{"type":{"enum":["iban","bic","swift","routing_number","account_number"],"description":"Typed routing or account identifier used to route money to this account."},"value":{"type":"string","description":"Identifier value, such as an IBAN, BIC, SWIFT code, ABA routing number, or account number."}},"required":["type","value"]},"description":"Typed routing and account identifiers for these receiving instructions."}},"required":["code","name","routingCodes"]},"accountHolderName":{"type":"string","description":"Account holder name"},"intermediaryBank":{"type":"object","properties":{"code":{"enum":["align_ae","align_gb","align_us","banking_circle_denmark","cfsb","choice_financial_group","citi","hsbc","jpmorgan_chase","nvio_pagos","stark_bank","unknown_bank","zen"],"description":"Stable Swipelux public bank code for UI mapping, branding, and analytics."},"name":{"type":"string","description":"Receiving bank name to show in payment instructions."},"address":{"type":"string","description":"Receiving bank address to show in payment instructions."},"routingCodes":{"type":"array","items":{"type":"object","properties":{"type":{"enum":["iban","bic","swift","routing_number","account_number"],"description":"Typed routing or account identifier used to route money to this account."},"value":{"type":"string","description":"Identifier value, such as an IBAN, BIC, SWIFT code, ABA routing number, or account number."}},"required":["type","value"]},"description":"Typed routing and account identifiers for these receiving instructions."}},"required":["code","name","routingCodes"],"description":"Intermediary bank instructions when the wire route requires one."},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code"},"currency":{"type":"string","description":"ISO 4217 currency code"},"paymentReference":{"type":"string","description":"Wire memo/reference for issued accounts."},"targetWallet":{"type":"string","description":"Target wallet ID (wal_xxx)"},"label":{"type":"string","description":"Optional label for the account"},"createdAt":{"type":"string","description":"Account creation timestamp"},"updatedAt":{"type":"string","description":"Account last update timestamp"},"fees":{"anyOf":[{"type":"object","properties":{"developerFeePercent":{"type":"string","minLength":1,"description":"Simple developer fee percent for pay-ins to this account."}},"required":["developerFeePercent"],"additionalProperties":false},{"type":"object","properties":{"feeConfig":{"type":"object","properties":{"source":{"type":"object","properties":{"default":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"ach":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"fedwire":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"pix":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"sepa":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"swift":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false}},"required":[],"additionalProperties":false}},"required":["source"],"additionalProperties":false}},"required":["feeConfig"],"additionalProperties":false}]}},"required":["id","customerId","method","source","receivingAccountType","bank","accountHolderName","country","currency","createdAt","updatedAt"]},{"type":"object","properties":{"id":{"type":"string","description":"Unique account identifier"},"customerId":{"type":"string","description":"Customer ID"},"method":{"enum":["ach","fedwire","pix"],"description":"US payment method for the bank account"},"source":{"enum":["virtual","external"],"description":"Account source: 'virtual' for Swipelux-issued, 'external' for imported."},"receivingAccountType":{"enum":["pooled","named","external"],"description":"Whether the receiving instructions are shared pooled details, provider-issued named details, or a customer-owned external account."},"bank":{"type":"object","properties":{"code":{"enum":["align_ae","align_gb","align_us","banking_circle_denmark","cfsb","choice_financial_group","citi","hsbc","jpmorgan_chase","nvio_pagos","stark_bank","unknown_bank","zen"],"description":"Stable Swipelux public bank code for UI mapping, branding, and analytics."},"name":{"type":"string","description":"Receiving bank name to show in payment instructions."},"address":{"type":"string","description":"Receiving bank address to show in payment instructions."},"routingCodes":{"type":"array","items":{"type":"object","properties":{"type":{"enum":["iban","bic","swift","routing_number","account_number"],"description":"Typed routing or account identifier used to route money to this account."},"value":{"type":"string","description":"Identifier value, such as an IBAN, BIC, SWIFT code, ABA routing number, or account number."}},"required":["type","value"]},"description":"Typed routing and account identifiers for these receiving instructions."}},"required":["code","name","routingCodes"]},"accountHolderName":{"type":"string","description":"Account holder name"},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code"},"currency":{"type":"string","description":"ISO 4217 currency code"},"paymentReference":{"type":"string","description":"Wire memo/reference for issued accounts."},"targetWallet":{"type":"string","description":"Target wallet ID (wal_xxx)"},"label":{"type":"string","description":"Optional label for the account"},"createdAt":{"type":"string","description":"Account creation timestamp"},"updatedAt":{"type":"string","description":"Account last update timestamp"},"fees":{"anyOf":[{"type":"object","properties":{"developerFeePercent":{"type":"string","minLength":1,"description":"Simple developer fee percent for pay-ins to this account."}},"required":["developerFeePercent"],"additionalProperties":false},{"type":"object","properties":{"feeConfig":{"type":"object","properties":{"source":{"type":"object","properties":{"default":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"ach":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"fedwire":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"pix":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"sepa":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"swift":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false}},"required":[],"additionalProperties":false}},"required":["source"],"additionalProperties":false}},"required":["feeConfig"],"additionalProperties":false}]}},"required":["id","customerId","method","source","receivingAccountType","bank","accountHolderName","country","currency","createdAt","updatedAt"]},{"type":"object","properties":{"id":{"type":"string","description":"Pending account revision identifier"},"customerId":{"type":"string","description":"Customer ID"},"method":{"enum":["ach","fedwire","wire","rtp","pix","sepa","swift","spei","pse","transfers_3_0","uaefts","faster_payments","sepa_instant","ipp"],"description":"Public payment method for this bank account."},"source":{"description":"Pending account requests use the same virtual source value as v1.","enum":["virtual"]},"receivingAccountType":{"enum":["pooled","named","external"],"description":"Whether the receiving instructions are shared pooled details, provider-issued named details, or a customer-owned external account."},"currency":{"type":"string","description":"ISO 4217 currency code"},"status":{"type":"string","description":"Pending account provisioning status"},"targetWallet":{"type":"string","description":"Target wallet ID (wal_xxx)"},"createdAt":{"type":"string","description":"Account request creation timestamp"},"updatedAt":{"type":"string","description":"Account request last update timestamp"},"fees":{"anyOf":[{"type":"object","properties":{"developerFeePercent":{"type":"string","minLength":1,"description":"Simple developer fee percent for pay-ins to this account."}},"required":["developerFeePercent"],"additionalProperties":false},{"type":"object","properties":{"feeConfig":{"type":"object","properties":{"source":{"type":"object","properties":{"default":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"ach":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"fedwire":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"pix":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"sepa":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"swift":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false}},"required":[],"additionalProperties":false}},"required":["source"],"additionalProperties":false}},"required":["feeConfig"],"additionalProperties":false}]}},"required":["id","customerId","method","source","receivingAccountType","currency","status","targetWallet","createdAt","updatedAt"]}]}}}},"400":{"description":"Invalid account ID. Passing a rail id (`cfr_*`) returns `code: \"invalid_account_id\"`."},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Requested resource not found","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"getV2CustomersByCustomerIdAccountsByAccountId","tags":["Account"],"parameters":[{"in":"path","name":"customerId","schema":{"type":"string"},"required":true},{"in":"path","name":"accountId","schema":{"type":"string"},"required":true}],"summary":"Get bank account by ID (v2)","description":"Retrieve a specific bank account with receiving bank instructions grouped under `bank` and `intermediaryBank` objects."}},"/v2/customers/{customerId}/accounts/{accountId}/fees":{"patch":{"responses":{"200":{"description":"Account fee config updated","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","description":"Unique account identifier"},"customerId":{"type":"string","description":"Customer ID"},"method":{"description":"Payment method: SEPA for European wire transfers","enum":["sepa"]},"source":{"enum":["virtual","external"],"description":"Account source: 'virtual' for Swipelux-issued, 'external' for imported."},"status":{"description":"SEPA account operations are temporarily unavailable; bank details remain readable for compatibility.","enum":["temporarily_unsupported"]},"statusReason":{"type":"string","description":"Public reason for the account status"},"receivingAccountType":{"enum":["pooled","named","external"],"description":"Whether the receiving instructions are shared pooled details, provider-issued named details, or a customer-owned external account."},"bank":{"type":"object","properties":{"code":{"enum":["align_ae","align_gb","align_us","banking_circle_denmark","cfsb","choice_financial_group","citi","hsbc","jpmorgan_chase","nvio_pagos","stark_bank","unknown_bank","zen"],"description":"Stable Swipelux public bank code for UI mapping, branding, and analytics."},"name":{"type":"string","description":"Receiving bank name to show in payment instructions."},"address":{"type":"string","description":"Receiving bank address to show in payment instructions."},"routingCodes":{"type":"array","items":{"type":"object","properties":{"type":{"enum":["iban","bic","swift","routing_number","account_number"],"description":"Typed routing or account identifier used to route money to this account."},"value":{"type":"string","description":"Identifier value, such as an IBAN, BIC, SWIFT code, ABA routing number, or account number."}},"required":["type","value"]},"description":"Typed routing and account identifiers for these receiving instructions."}},"required":["code","name","routingCodes"]},"accountHolderName":{"type":"string","description":"Account holder name"},"label":{"type":"string","description":"Display label for the account"},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code"},"currency":{"type":"string","description":"ISO 4217 currency code"},"paymentReference":{"type":"string","description":"Wire memo/reference for issued accounts."},"targetWallet":{"type":"string","description":"Target wallet ID (wal_xxx)"},"createdAt":{"type":"string","description":"Account creation timestamp"},"updatedAt":{"type":"string","description":"Account last update timestamp"},"fees":{"anyOf":[{"type":"object","properties":{"developerFeePercent":{"type":"string","minLength":1,"description":"Simple developer fee percent for pay-ins to this account."}},"required":["developerFeePercent"],"additionalProperties":false},{"type":"object","properties":{"feeConfig":{"type":"object","properties":{"source":{"type":"object","properties":{"default":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"ach":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"fedwire":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"pix":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"sepa":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"swift":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false}},"required":[],"additionalProperties":false}},"required":["source"],"additionalProperties":false}},"required":["feeConfig"],"additionalProperties":false}]}},"required":["id","customerId","method","source","receivingAccountType","bank","accountHolderName","label","country","currency","createdAt","updatedAt"]},{"type":"object","properties":{"id":{"type":"string","description":"Unique account identifier"},"customerId":{"type":"string","description":"Customer ID"},"method":{"description":"Payment method: SWIFT for international wire transfers","enum":["swift"]},"source":{"enum":["virtual","external"],"description":"Account source: 'virtual' for Swipelux-issued, 'external' for imported."},"receivingAccountType":{"enum":["pooled","named","external"],"description":"Whether the receiving instructions are shared pooled details, provider-issued named details, or a customer-owned external account."},"bank":{"type":"object","properties":{"code":{"enum":["align_ae","align_gb","align_us","banking_circle_denmark","cfsb","choice_financial_group","citi","hsbc","jpmorgan_chase","nvio_pagos","stark_bank","unknown_bank","zen"],"description":"Stable Swipelux public bank code for UI mapping, branding, and analytics."},"name":{"type":"string","description":"Receiving bank name to show in payment instructions."},"address":{"type":"string","description":"Receiving bank address to show in payment instructions."},"routingCodes":{"type":"array","items":{"type":"object","properties":{"type":{"enum":["iban","bic","swift","routing_number","account_number"],"description":"Typed routing or account identifier used to route money to this account."},"value":{"type":"string","description":"Identifier value, such as an IBAN, BIC, SWIFT code, ABA routing number, or account number."}},"required":["type","value"]},"description":"Typed routing and account identifiers for these receiving instructions."}},"required":["code","name","routingCodes"]},"accountHolderName":{"type":"string","description":"Account holder name"},"intermediaryBank":{"type":"object","properties":{"code":{"enum":["align_ae","align_gb","align_us","banking_circle_denmark","cfsb","choice_financial_group","citi","hsbc","jpmorgan_chase","nvio_pagos","stark_bank","unknown_bank","zen"],"description":"Stable Swipelux public bank code for UI mapping, branding, and analytics."},"name":{"type":"string","description":"Receiving bank name to show in payment instructions."},"address":{"type":"string","description":"Receiving bank address to show in payment instructions."},"routingCodes":{"type":"array","items":{"type":"object","properties":{"type":{"enum":["iban","bic","swift","routing_number","account_number"],"description":"Typed routing or account identifier used to route money to this account."},"value":{"type":"string","description":"Identifier value, such as an IBAN, BIC, SWIFT code, ABA routing number, or account number."}},"required":["type","value"]},"description":"Typed routing and account identifiers for these receiving instructions."}},"required":["code","name","routingCodes"],"description":"Intermediary bank instructions when the wire route requires one."},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code"},"currency":{"type":"string","description":"ISO 4217 currency code"},"paymentReference":{"type":"string","description":"Wire memo/reference for issued accounts."},"targetWallet":{"type":"string","description":"Target wallet ID (wal_xxx)"},"label":{"type":"string","description":"Optional label for the account"},"createdAt":{"type":"string","description":"Account creation timestamp"},"updatedAt":{"type":"string","description":"Account last update timestamp"},"fees":{"anyOf":[{"type":"object","properties":{"developerFeePercent":{"type":"string","minLength":1,"description":"Simple developer fee percent for pay-ins to this account."}},"required":["developerFeePercent"],"additionalProperties":false},{"type":"object","properties":{"feeConfig":{"type":"object","properties":{"source":{"type":"object","properties":{"default":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"ach":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"fedwire":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"pix":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"sepa":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"swift":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false}},"required":[],"additionalProperties":false}},"required":["source"],"additionalProperties":false}},"required":["feeConfig"],"additionalProperties":false}]}},"required":["id","customerId","method","source","receivingAccountType","bank","accountHolderName","country","currency","createdAt","updatedAt"]},{"type":"object","properties":{"id":{"type":"string","description":"Unique account identifier"},"customerId":{"type":"string","description":"Customer ID"},"method":{"enum":["ach","fedwire","pix"],"description":"US payment method for the bank account"},"source":{"enum":["virtual","external"],"description":"Account source: 'virtual' for Swipelux-issued, 'external' for imported."},"receivingAccountType":{"enum":["pooled","named","external"],"description":"Whether the receiving instructions are shared pooled details, provider-issued named details, or a customer-owned external account."},"bank":{"type":"object","properties":{"code":{"enum":["align_ae","align_gb","align_us","banking_circle_denmark","cfsb","choice_financial_group","citi","hsbc","jpmorgan_chase","nvio_pagos","stark_bank","unknown_bank","zen"],"description":"Stable Swipelux public bank code for UI mapping, branding, and analytics."},"name":{"type":"string","description":"Receiving bank name to show in payment instructions."},"address":{"type":"string","description":"Receiving bank address to show in payment instructions."},"routingCodes":{"type":"array","items":{"type":"object","properties":{"type":{"enum":["iban","bic","swift","routing_number","account_number"],"description":"Typed routing or account identifier used to route money to this account."},"value":{"type":"string","description":"Identifier value, such as an IBAN, BIC, SWIFT code, ABA routing number, or account number."}},"required":["type","value"]},"description":"Typed routing and account identifiers for these receiving instructions."}},"required":["code","name","routingCodes"]},"accountHolderName":{"type":"string","description":"Account holder name"},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code"},"currency":{"type":"string","description":"ISO 4217 currency code"},"paymentReference":{"type":"string","description":"Wire memo/reference for issued accounts."},"targetWallet":{"type":"string","description":"Target wallet ID (wal_xxx)"},"label":{"type":"string","description":"Optional label for the account"},"createdAt":{"type":"string","description":"Account creation timestamp"},"updatedAt":{"type":"string","description":"Account last update timestamp"},"fees":{"anyOf":[{"type":"object","properties":{"developerFeePercent":{"type":"string","minLength":1,"description":"Simple developer fee percent for pay-ins to this account."}},"required":["developerFeePercent"],"additionalProperties":false},{"type":"object","properties":{"feeConfig":{"type":"object","properties":{"source":{"type":"object","properties":{"default":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"ach":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"fedwire":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"pix":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"sepa":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"swift":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false}},"required":[],"additionalProperties":false}},"required":["source"],"additionalProperties":false}},"required":["feeConfig"],"additionalProperties":false}]}},"required":["id","customerId","method","source","receivingAccountType","bank","accountHolderName","country","currency","createdAt","updatedAt"]},{"type":"object","properties":{"id":{"type":"string","description":"Pending account revision identifier"},"customerId":{"type":"string","description":"Customer ID"},"method":{"enum":["ach","fedwire","wire","rtp","pix","sepa","swift","spei","pse","transfers_3_0","uaefts","faster_payments","sepa_instant","ipp"],"description":"Public payment method for this bank account."},"source":{"description":"Pending account requests use the same virtual source value as v1.","enum":["virtual"]},"receivingAccountType":{"enum":["pooled","named","external"],"description":"Whether the receiving instructions are shared pooled details, provider-issued named details, or a customer-owned external account."},"currency":{"type":"string","description":"ISO 4217 currency code"},"status":{"type":"string","description":"Pending account provisioning status"},"targetWallet":{"type":"string","description":"Target wallet ID (wal_xxx)"},"createdAt":{"type":"string","description":"Account request creation timestamp"},"updatedAt":{"type":"string","description":"Account request last update timestamp"},"fees":{"anyOf":[{"type":"object","properties":{"developerFeePercent":{"type":"string","minLength":1,"description":"Simple developer fee percent for pay-ins to this account."}},"required":["developerFeePercent"],"additionalProperties":false},{"type":"object","properties":{"feeConfig":{"type":"object","properties":{"source":{"type":"object","properties":{"default":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"ach":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"fedwire":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"pix":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"sepa":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false},"swift":{"type":"object","properties":{"feePercent":{"type":"string","minLength":1,"description":"Percentage fee applied after the fixed fee is deducted."},"feeFixed":{"type":"string","minLength":1,"description":"Fixed fee in the incoming fiat source currency."},"minimumFee":{"type":"string","minLength":1,"description":"Minimum total fee in the incoming fiat source currency."},"maximumFee":{"type":"string","minLength":1,"description":"Maximum total fee in the incoming fiat source currency."}},"required":[],"additionalProperties":false}},"required":[],"additionalProperties":false}},"required":["source"],"additionalProperties":false}},"required":["feeConfig"],"additionalProperties":false}]}},"required":["id","customerId","method","source","receivingAccountType","currency","status","targetWallet","createdAt","updatedAt"]}]}}}},"400":{"description":"Invalid account id, external account, or fee config."},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Requested resource not found","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"patchV2CustomersByCustomerIdAccountsByAccountIdFees","tags":["Account"],"parameters":[{"in":"path","name":"customerId","schema":{"type":"string"},"required":true},{"in":"path","name":"accountId","schema":{"type":"string"},"required":true}],"summary":"Bank account fees","description":"Bank account fees for one Swipelux-issued account. Replace or clear pay-in developer fees for this `acc_*` account; send `fees: null` to clear the config. The replacement applies only to this issued account and is used when a pay-in quote includes that account or the account is uniquely resolved for an unquoted deposit.","requestBody":{"required":true,"content":{"application/json":{"schema":{},"examples":{"replaceWithSimpleDeveloperFee":{"summary":"Replace with percent fee","value":{"fees":{"developerFeePercent":"0.75"}}},"replaceWithRichFeeConfig":{"summary":"Replace with ACH-specific rich config","value":{"fees":{"feeConfig":{"source":{"ach":{"feeFixed":"1.00","feePercent":"0.50","minimumFee":"1.00","maximumFee":"25.00"}}}}}},"clearDeveloperFees":{"summary":"Clear account developer fees","value":{"fees":null}}}}}}}},"/v1/documents":{"post":{"responses":{"201":{"description":"Document uploaded successfully","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"customerId":{"type":"string"},"subject":{"type":"object","properties":{"type":{"enum":["customer","shareholder"]},"id":{"type":"string"}},"required":["type","id"]},"type":{"type":"string"},"status":{"enum":["uploaded","pending","approved","rejected","requested"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["customerId","subject","type","status"]}}}},"400":{"description":"Type not allowed for this customer kind, missing required field, or file validation failed"},"401":{"description":"Missing or invalid API key"},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Customer not found"},"413":{"description":"Document exceeds the configured upload size limit"},"415":{"description":"Unsupported file type"},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"postV1Documents","tags":["Documents"],"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"customerId":{"type":"string","minLength":1,"description":"Customer ID (cus_*). The customer's kind decides which document types are accepted. Provide exactly one of customerId or shareholderId."},"shareholderId":{"type":"string","minLength":1,"description":"Business shareholder ID (bizsh_*) when uploading evidence for a business UBO. Provide exactly one of customerId or shareholderId."},"type":{"type":"string","minLength":1,"description":"Document type. Individual, business, and shareholder document types are accepted according to the target entity."},"base64":{"type":"string","minLength":1,"description":"Base64-encoded file content (JPEG, PNG, PDF, WebP, HEIF). Max 25MB."},"issuingCountry":{"type":"string","pattern":"^[A-Z]{3}$","description":"ISO 3166-1 alpha-3 country code. Required for individual customer documents."}},"required":["type","base64"]}}}},"summary":"Upload document","description":"Canonical document upload route. Provide exactly one target: `customerId` for individual or business customer documents, or `shareholderId` for business shareholder evidence. The response is normalized document state."},"get":{"responses":{"200":{"description":"Document state retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"documents":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"customerId":{"type":"string"},"subject":{"type":"object","properties":{"type":{"enum":["customer","shareholder"]},"id":{"type":"string"}},"required":["type","id"]},"type":{"type":"string"},"status":{"enum":["uploaded","pending","approved","rejected","requested"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["customerId","subject","type","status"]}}},"required":["documents"]}}}},"400":{"description":"Invalid customer or shareholder scope"},"401":{"description":"Missing or invalid API key"},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Customer, business customer, or shareholder not found"},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"getV1Documents","tags":["Documents"],"parameters":[{"in":"query","name":"customerId","schema":{"type":"string","minLength":1,"description":"Customer ID whose document state should be listed. Provide exactly one of customerId or shareholderId."},"required":false},{"in":"query","name":"shareholderId","schema":{"type":"string","minLength":1,"description":"Business shareholder ID whose document state should be listed. Provide exactly one of customerId or shareholderId."},"required":false}],"summary":"List document state","description":"List normalized document state for exactly one target. Pass `customerId` for customer documents or `shareholderId` for business shareholder evidence. Business customer lists include requested-but-missing KYB document placeholders."}},"/v1/documents/{documentId}":{"delete":{"responses":{"200":{"description":"Document deleted successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"}},"required":["success","message"]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Missing or invalid API key"},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Document not found"},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"deleteV1DocumentsByDocumentId","tags":["Documents"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"documentId","required":true}],"summary":"Delete document","description":"Soft-deletes a document by id. The file is retained for compliance, but document reads, lists, updates, and KYB packaging stop treating it as active."}},"/v1/meta/kyb/documents":{"get":{"responses":{"200":{"description":"KYB document requirements by jurisdiction","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"object","properties":{"requested_types":{"type":"array","items":{"type":"string"}}},"required":["requested_types"]}}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Requested resource not found","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"getV1MetaKybDocuments","tags":["Spec"],"parameters":[],"summary":"Get KYB document requirements","description":"Returns the required document types for KYB verification by jurisdiction. This is a public endpoint that does not require authentication."}},"/v1/meta/accounts/relationships":{"get":{"responses":{"200":{"description":"List of valid account relationship types","content":{"application/json":{"schema":{"type":"object","properties":{"relationships":{"type":"array","items":{"type":"string"}}},"required":["relationships"]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Requested resource not found","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"getV1MetaAccountsRelationships","tags":["Spec"],"parameters":[],"summary":"Get account relationship types","description":"Returns the list of valid relationship types for bank account creation. This is a public endpoint that does not require authentication."}},"/v1/meta/accounts/banks":{"get":{"responses":{"200":{"description":"List of public bank codes","content":{"application/json":{"schema":{"type":"object","properties":{"banks":{"type":"array","items":{"type":"object","properties":{"code":{"enum":["align_ae","align_gb","align_us","banking_circle_denmark","cfsb","choice_financial_group","citi","hsbc","jpmorgan_chase","nvio_pagos","stark_bank","unknown_bank","zen"],"description":"Stable public bank code returned in v2 account bank.code"},"name":{"type":"string","description":"Default human-readable bank name for display"}},"required":["code","name"]}}},"required":["banks"]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Requested resource not found","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"getV1MetaAccountsBanks","tags":["Spec"],"parameters":[],"summary":"Get account bank codes","description":"Returns the closed public bank code catalog used in v2 account `bank.code` and `intermediaryBank.code` fields, including `unknown_bank` for uncataloged banks. This is a public endpoint that does not require authentication."}},"/v1/meta/rails":{"get":{"responses":{"200":{"description":"List of supported payment rails","content":{"application/json":{"schema":{"type":"object","properties":{"rails":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"enum":["fiat","crypto"]},"subtype":{"type":"string"}},"required":["name","type","subtype"]}}},"required":["rails"]}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Requested resource not found","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}}},"operationId":"getV1MetaRails","tags":["Spec"],"parameters":[],"summary":"Get supported payment rails","description":"Returns the list of all supported payment rails with their type and subtype. This is a public endpoint that does not require authentication."}},"/v1/rate/{baseCurrency}/{quoteCurrency}":{"get":{"responses":{"200":{"description":"The exchange rate was retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"base_currency":{"type":"string","description":"Base currency code (e.g. EUR)"},"quote_currency":{"type":"string","description":"Quote currency code (e.g. USD)"},"rate":{"type":"string","description":"Exchange rate as a decimal string"},"date":{"type":"string","description":"Rate date in ISO 8601 format"}},"required":["base_currency","quote_currency","rate","date"]}}}},"400":{"description":"Unsupported currency"},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"404":{"description":"Requested resource not found","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"500":{"description":"Internal server error occurred","content":{"application/json":{"schema":{"type":"object","required":["error","message","path"],"properties":{"error":{"type":"boolean","description":"Whether the request resulted in an error"},"message":{"type":"string","description":"Human readable error message"},"path":{"type":"string","description":"Request path where error occurred"},"correlationId":{"type":"string","description":"Unique error tracking ID for correlating with server logs"}}}}}},"502":{"description":"FX rate provider is unavailable"}},"operationId":"getV1RateByBaseCurrencyByQuoteCurrency","tags":["Rates"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"baseCurrency","required":true},{"schema":{"type":"string"},"in":"path","name":"quoteCurrency","required":true}],"summary":"Get FX rate","description":"Returns the latest exchange rate between two fiat currencies. Supported currencies: EUR, GBP, CHF, PLN, CZK, SEK, DKK, NOK, HUF, RON, USD."}},"/kyc/redirect/{customerId}/{taskId}/{verificationSessionId}":{"get":{"responses":{"204":{"description":"The exact verification session already completed successfully; no provider redirect is required.","headers":{"Cache-Control":{"description":"Prevents storage of the verification redirect response.","schema":{"type":"string","enum":["no-store"]}},"Referrer-Policy":{"description":"Prevents the verification URL from leaking in referrers.","schema":{"type":"string","enum":["no-referrer"]}},"X-Request-Id":{"description":"Request correlation identifier.","schema":{"type":"string"}}}},"302":{"description":"Redirect to a short-lived provider-hosted verification URL.","headers":{"Cache-Control":{"description":"Prevents storage of the verification redirect response.","schema":{"type":"string","enum":["no-store"]}},"Referrer-Policy":{"description":"Prevents the verification URL from leaking in referrers.","schema":{"type":"string","enum":["no-referrer"]}},"X-Request-Id":{"description":"Request correlation identifier.","schema":{"type":"string"}},"Location":{"description":"Short-lived HTTPS provider URL.","schema":{"type":"string","format":"uri"}}}},"404":{"description":"Resource not found.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId","retryable"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","enum":[404]},"code":{"type":"string","enum":["not_found"]},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","enum":[false]},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}},"headers":{"Cache-Control":{"description":"Prevents storage of the verification redirect response.","schema":{"type":"string","enum":["no-store"]}},"Referrer-Policy":{"description":"Prevents the verification URL from leaking in referrers.","schema":{"type":"string","enum":["no-referrer"]}},"X-Request-Id":{"description":"Request correlation identifier.","schema":{"type":"string"}}}},"409":{"description":"Request conflict.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId","retryable"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","enum":[409]},"code":{"type":"string","enum":["kyc_process_conflict"]},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","enum":[true]},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}},"headers":{"Cache-Control":{"description":"Prevents storage of the verification redirect response.","schema":{"type":"string","enum":["no-store"]}},"Referrer-Policy":{"description":"Prevents the verification URL from leaking in referrers.","schema":{"type":"string","enum":["no-referrer"]}},"X-Request-Id":{"description":"Request correlation identifier.","schema":{"type":"string"}}}},"410":{"description":"Request failed.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId","retryable"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","enum":[410]},"code":{"type":"string","enum":["kyc_session_terminal"]},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","enum":[false]},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}},"headers":{"Cache-Control":{"description":"Prevents storage of the verification redirect response.","schema":{"type":"string","enum":["no-store"]}},"Referrer-Policy":{"description":"Prevents the verification URL from leaking in referrers.","schema":{"type":"string","enum":["no-referrer"]}},"X-Request-Id":{"description":"Request correlation identifier.","schema":{"type":"string"}}}},"500":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId","retryable"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","enum":[500]},"code":{"type":"string","enum":["internal_error"]},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","enum":[true]},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}},"headers":{"Cache-Control":{"description":"Prevents storage of the verification redirect response.","schema":{"type":"string","enum":["no-store"]}},"Referrer-Policy":{"description":"Prevents the verification URL from leaking in referrers.","schema":{"type":"string","enum":["no-referrer"]}},"X-Request-Id":{"description":"Request correlation identifier.","schema":{"type":"string"}}}},"502":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId","retryable"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","enum":[502]},"code":{"type":"string","enum":["kyc_provider_unavailable"]},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","enum":[true]},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}},"headers":{"Cache-Control":{"description":"Prevents storage of the verification redirect response.","schema":{"type":"string","enum":["no-store"]}},"Referrer-Policy":{"description":"Prevents the verification URL from leaking in referrers.","schema":{"type":"string","enum":["no-referrer"]}},"X-Request-Id":{"description":"Request correlation identifier.","schema":{"type":"string"}}}},"503":{"description":"Internal server error.","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail","correlationId","retryable"],"properties":{"type":{"type":"string","format":"uri","description":"Documentation URL for this stable problem code."},"title":{"type":"string","description":"Short human-readable problem title."},"status":{"type":"integer","enum":[503]},"code":{"type":"string","enum":["verification_collection_mapping_invalid","kyc_configuration_unavailable","kyc_level_configuration_invalid"]},"detail":{"type":"string","description":"Actionable problem detail for legitimate callers."},"correlationId":{"type":"string","description":"Request correlation id. Mirrors `X-Request-Id`."},"transferId":{"type":"string","description":"Existing transfer that consumed the quote. Present on `quote_already_executed`."},"retryable":{"type":"boolean","enum":[false]},"errors":{"type":"array","description":"Field-level validation errors.","items":{"type":"object","additionalProperties":false,"required":["pointer","code","message"],"properties":{"pointer":{"type":"string","description":"JSON Pointer into the request body."},"code":{"type":"string","description":"Machine-readable field error code."},"message":{"type":"string","description":"Human-readable field error message."}}}},"statusReason":{"type":"object","description":"Structured reason for a state conflict when the failed operation depends on the resource's current status.","required":["code","message","actor","retryable"],"properties":{"code":{"type":"string","description":"Stable snake_case reason code from the documented catalog.","example":"sanctions_screening_failed"},"message":{"type":"string","description":"Human-readable explanation of the current status."},"actor":{"type":"string","enum":["customer","developer","provider","network","swipelux"],"description":"Party whose action moves the resource forward: the end customer, the developer integrating the API, the underlying provider, payment network or rail, or Swipelux. Closed enum — exhaustive; additions would be a breaking change."},"retryable":{"type":"boolean","description":"Whether retrying the blocked operation without changing its inputs or state may succeed."}}},"reviewAnswer":{"type":"string","nullable":true,"description":"Verification review answer when supplied by the verifier."},"capabilities":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Capability ids that satisfy the failed operation."},"blockingResources":{"type":"array","minItems":1,"description":"Customer resources that must be resolved before the requested operation can proceed, sorted by type and id.","items":{"type":"object","additionalProperties":false,"required":["type","id","requiredAction"],"properties":{"type":{"type":"string","enum":["account","transfer"]},"id":{"type":"string","description":"Public id of the blocking resource."},"requiredAction":{"type":"string","enum":["archive_account","cancel_transfer","wait_for_transfer","resolve_transfer"],"description":"Next action required before retrying the operation."}}}}}}}},"headers":{"Cache-Control":{"description":"Prevents storage of the verification redirect response.","schema":{"type":"string","enum":["no-store"]}},"Referrer-Policy":{"description":"Prevents the verification URL from leaking in referrers.","schema":{"type":"string","enum":["no-referrer"]}},"X-Request-Id":{"description":"Request correlation identifier.","schema":{"type":"string"}}}}},"operationId":"startKycVerificationSession","tags":["Tasks"],"parameters":[{"name":"customerId","in":"path","required":true,"description":"Owning customer identifier.","schema":{"type":"string","pattern":"^cus_[0-9A-Za-z]{18}$"}},{"name":"taskId","in":"path","required":true,"description":"Lifecycle-owned task identifier.","schema":{"type":"string","pattern":"^tsk_[0-9A-Za-z]{18}$"}},{"name":"verificationSessionId","in":"path","required":true,"description":"Exact hosted verification-session identifier.","schema":{"type":"string","pattern":"^vfy_[0-9A-Za-z]{18}$"}}],"summary":"Open a lifecycle KYC verification session","description":"Opens one exact customer/task/session first-party link. The service validates lifecycle ownership and creates or refreshes a short-lived provider link without persisting or returning that provider URL in task JSON. An exact session that already completed successfully returns 204 No Content.","security":[]}}}}