Skip to main content
Migrujte svou integraci z API v1 a v2 na v3 ve dvou fázích:
  • Část 1, koncept. Přečtěte si nejprve. v3 je přepracování, nikoli přejmenování: pokud budete staré endpointy mapovat jeden ku jednomu, budete s API bojovat. Deset minut zde vám ušetří dny později.
  • Část 2, API. Mapování endpoint po endpointu, ukázky požadavků, stavové automaty a kontrolní seznam migrace.
Založeno na produkční OpenAPI specifikaci (platform.swipelux.com/openapi.json). v1 a v2 zůstávají v provozu a zatím nejsou zastaralé; všechny nové funkce capability, recipient, task a quoting jsou dodávány pouze ve v3. Přihlaste se k odběru webhook události api.deprecation pro oznámení o ukončení podpory.
Obsah. Část 1: 1.1 proč existuje v3, 1.2 objektový model, 1.3 připravenost per capability, 1.4 task smyčka, 1.5 pohyb peněz, 1.6 stavové automaty, 1.7 konvence, 1.8 zlatá cesta. Část 2: 2.1 customers, 2.2 capabilities, 2.3 tasks a submissions, 2.4 accounts, 2.5 recipients a destinations, 2.6 quotes a transfers, 2.7 webhooks, 2.8 sandbox, 2.9 legacy endpointy, 2.10 pořadí migrace, 2.11 checklist záludností.

Část 1, koncept

1.1 Proč existuje v3

v1 a v2 vyvinuly čtyři překrývající se způsoby, jak připravit customera na platby: /rails, /banks, /accounts/applications a rozhraní business rail-applications, každé s vlastní stavovou terminologií. Sběr dokumentů (/documents, KYC importy, tokeny verifikačního SDK) byl odpojen od toho, co ve skutečnosti odblokovával. v3 to vše sbaluje do šesti zdrojů, tedy customera plus pěti věcí, které vlastní:

1.2 Objektový model

Dvě strukturální pravidla, která je třeba si zvnitřnit:
  1. Capabilities řídí vše. Accounts se poskytují pod ready capability; quotes se cení proti capability. Onboarding se rovná získání capabilities, které potřebujete, do stavu ready.
  2. Tasks se připojují kdekoli. Capability, account nebo probíhající transfer mohou nést openTaskIds. Kdekoli je uvidíte, smyčka je stejná: přečíst task, odeslat odpovědi, počkat na kontrolu, znovu přečíst rodiče.

1.3 Připravenost je per capability, ne per customer

v1 zapletla připravenost /rails s KYC branou napříč celým customerem. Ve v3 neexistuje stav customera: customer může být plně použitelný na stablecoin_transfers, zatímco jeho capability sepa má stále otevřené tasks. Capabilities typu pooled-account se obecně dostávají do stavu ready rychleji než named, začněte tedy transakce provádět na tom, co je ready, místo abyste čekali na vše. Pokud váš kód v1 nebo v2 řídí UI odznaky podle stavu verifikace customera, přepište jej:
  • „Mohou obchodovat na X?” se stává capability X status == "ready".
  • „Musí něco udělat?” se stává jakýkoli task se stavem action_required (capability typicky ukazuje restricted s statusReason.resolution: "complete_tasks").
  • „Čekáme na Swipelux?” se stává tasks in_review, capability pending.

1.4 Task smyčka

Vše, co dělalo staré document a KYC rozhraní, je nyní tato jediná smyčka: Klíčové vlastnosti:
  • Task nese requirements[], jednotlivé požadavky. Každý má requirementId v rámci tasku, stabilní key pojmenovávající požadavek (například doklad o adrese, deduplikujte podle něj své UI) a typované request popisující přesně, jaký vstup se očekává (text, date, select, document, attestation atd.).
  • Odesílání je řízené kontrolou: nikdy přímo nemění stav capability ani accountu, to dělá až akceptace. Jedna výjimka: odpovědi typu profile se při odeslání propisují do profilu customera (2.3). Po odeslání polluj task nebo rodičovský zdroj.
  • taskRevision (ozvěna hodnoty revision u tasku) je ochrana konkurence: pokud se task od doby, co jste jej četli, změnil, přečtěte jej znovu a znovu sestavte své odpovědi.
  • absence je plnohodnotná odpověď („Toto nemám, protože…”), použijte ji místo ponechávání požadavků nevyřešených.

1.5 Pohyb peněz

Jeden tok pro payins, payouts a stablecoin pohyby. Neexistuje vstup směru, nikdy nedeklarujete payin vs payout. Tvar vstupní a výstupní měny odvozuje na quote a transfer read-only direction: fiat_to_stablecoin (payin), stablecoin_to_fiat (payout) nebo stablecoin_move.

1.6 Jeden stavový automat na zdroj

Každý zdroj se stavem má vlastní enum a každý ne-šťastný stav nese strukturovaný důvod. Accounts, applications a transfers sdílí tvar { code, message, actor, retryable }: accounts a applications jej vystavují jako statusReason, transfers jako stateDetail. actor říká, kdo musí jednat (customer, developer, provider, network, swipelux), retryable říká, zda opakování může pomoci. Capabilities používají { code, resolution, message }, kde resolution (complete_tasks, wait, contact_support, none) říká, co posouvá capability vpřed. Hodnoty code jsou otevřený, pouze rozšiřovaný katalog: větvte podle resolution (nebo actor plus retryable) a tolerujte kódy, které jste nikdy neviděli. Stavy, kterými se tato příručka nezabývá (rejected, suspended, disabled, failed, canceled), jsou terminální nebo řízené podporou; definice per zdroj jsou ve specifikaci. Transfer, podrobně:

1.7 Konvence

Pravidla idempotence, která si stojí za to zvnitřnit před psaním kódu:
  • Použití klíče s jiným body je 409 idempotency_conflict, dokud je klíč uchováván (nejméně 7 dní), takže nikdy neplánujte znovu použití klíče. Generujte čerstvý UUID na logickou operaci a uchovávejte jej se svou úlohou.
  • Přehrání pokrývá i chyby: pokud původní požadavek skončil terminálním 4xx, stejný klíč plus body vrátí znovu stejnou problem odpověď.
  • Dva souběžné požadavky se stejným klíčem: jeden vyhraje, druhý dostane 409. Poražený zkuste znovu po tom, co se vítěz usadí; přehrání vrátí původní odpověď.

1.8 Zlatá cesta


Část 2, API

2.1 Customers

Vytvoření, rozlišené podle type (ilustrativní hodnoty, názvy polí dle specifikace):
  • Vytváření je progresivní: samotné { "type": "individual" } je platné vytvoření. Chybějící fakta customera nikdy neznehodnotí, později se objeví jako intake tasks na capabilities, které je potřebují.
  • Podniky nesou business plus registrační data. CRUD nad shareholdery ve v1 se mapuje na related parties, rozšířeno tak, aby pokrývalo directors, officers a owners: vytvořte je inline při vytváření customera (každý dostane stabilní rp_ id) nebo je spravujte přes dedikované related-parties endpointy.
  • Neexistuje pole status na customerovi, viz 1.3.
  • Stávající customers přecházejí: customers vytvoření na v1 nebo v2 jsou adresovatelní stejným id na v3 endpointech. v3 čtení je sanitizovaný pohled, legacy hodnoty, které selžou validací v3, přijdou nazpět chybějící. Po vašem prvním v3 zápisu se ten pohled stane trvalým: chybějící hodnoty se samy nevrátí. Proto obohaťte data brzy, naplánujte jednorázový průchod, který PATCHne plný profil ze svých vlastních záznamů předtím, než se začnete spoléhat na v3 čtení. metadata z v1 je oddělený namespace a není přeneseno, znovu jej nastavte ve v3.
  • externalId je prvotřídní pole a unikátní napříč vašimi customers na v3, per prostředí (409 duplicate_external_id). Archivace customera neuvolní jeho externalId, vymažte jej pomocí PATCH před DELETE, pokud jej hodláte znovu použít.
  • DELETE je archivační kaskáda (žádné obnovení; id se nikdy nepoužijí znovu). Blokuje se s 409 customer_has_active_resources plus blockingResources[], dokud existuje jakýkoli nearchivovaný account nebo probíhající transfer.
  • Pravidla slučování PATCH: explicitní null vymaže nullable pole, pole se nahrazují celá (kromě inline related parties, které se upsertují podle id), klíče metadata se slučují. Kompletní schémata a filtry seznamů jsou v OpenAPI specifikaci.

2.2 Z /rails, /banks, applications se stanou Capabilities

  • Capability se rovná method (ach, wire, rtp, pix, sepa, swift, spei, pse, transfers_3_0, faster_payments, sepa_instant, uaefts, card, stablecoin_transfers atd.) plus accountType (pooled nebo named, null pro nebankovní metody) plus directions (payin nebo payout). Veřejné capabilityId je kvalifikovaná dvojice (sepa_pooled, ach_named) nebo prostá metoda pro card a stablecoin_transfers.
  • Každý požadavek na capability zplodí application, záznam za pokus pod .../capabilities/{capabilityId}/applications (plus /{applicationId}/history), s vlastními stavy (1.6) a statusReason. Je to audit trail požadavku; každodenně polluj samotnou capability.
  • capabilities/supported vrací dostupnost (available, beta nebo disabled), způsobilost a nabízené instituce. Výběr banky probíhá při žádosti prostřednictvím volitelného pole institutions, neexistuje samostatný zdroj /banks. Vynechání (nebo poslání []) vybere všechny výchozí instituce; isDefault: true je příznak specifický pro customera a capability, nikoli globální. Neprázdný seznam přepíše výchozí a bankovní capability bez použitelné výchozí instituce vrátí 422 capability_institutions_required. Id institucí jsou neprůhledná, tolerujte nová.
  • stablecoin_transfers je automaticky udělena při vytvoření customera a rodí se ready (proto se o ni nikdy nežádá a nelze ji zrušit). card je jen pro individual.
  • openTaskIds na capability je váš ukazatel „co dělat dál”. Otevřený se rovná action_required nebo in_review, a souhrn zahrnuje sdílené tasky na úrovni customera dosažené přes aktivní závislosti.
  • cancel funguje pouze z pending nebo restricted a bez blokujících zdrojů, jinak 409 capability_not_cancelable, jehož problem body uvádí blockingResources. Nové vyžádání po zrušení je čerstvé vytvoření s novým idempotency klíčem.
  • Polluj GET. Stav capability se obnovuje při čtení; polluj GET .../capabilities/{capabilityId} nebo se přihlaste k odběru capability.status_changed, neukládejte do cache.
  • Vyžádání jedné metody může naráz zpřístupnit související metody, ke capabilities přistupujte jako k množině, kterou znovu čtete, nikoli k jednomu řádku, který sledujete.
  • Použijte tasks-preview, abyste ukázali onboarding požadavky před podáním žádosti.
  • Verifikace není jednorázová: nové tasky se mohou objevit na už ready capability (periodická nebo událostmi řízená reverifikace). Držte task smyčku zapojenou po celou dobu života customera, ne jen během onboardingu.

2.3 Z Documents a KYC se stanou Tasks a Submissions

Poznámka k pojmenování. Tyto endpointy krátce vycházely jako requirements a fulfillments. Od 2026-08-02 jsou veřejné názvy tasks a submissions. Přejmenování se týkalo pouze zdrojů a cest endpointů, pole requirements[] uvnitř tasku a jeho requirementId si tyto názvy ponechávají.
Každé legacy document rozhraní se mapuje na tutéž náhradu: čtěte GET /v3/customers/{customerId}/tasks, odpovídejte pomocí POST .../tasks/{taskId}/submissions. Kolem té smyčky:
  • Úložiště surových souborů: POST/GET/DELETE /v3/customers/{customerId}/documents (plus /{documentId}), nahrajte jednou se svým API klíčem, poté odkazujte na document ids v odpovědích submission. Toto nahrazuje každý upload-token a direct-upload intake.
  • Zcela nová čtení: GET /v3/tasks (merchant-wide schránka), GET /v3/transfers/{transferId}/tasks, GET .../tasks/{taskId}/history, GET .../tasks/{taskId}/submissions (plus /{submissionId}).
Submission (ilustrativní):
  • Typy odpovědí: profile, text, date, single_select, multi_select, boolean, attestation, document, resource_reference, absence. Objekt request každého požadavku vám řekne, jaký typ očekává.
  • Submission musí odpovědět na každý akční požadavek v aktuálním kole, s přesnou hodnotou taskRevision, kterou jste přečetli. Částečná submissiona jsou odmítána.
  • Odpovědi typu profile propisují: aktualizují profil customera přes běžnou validační cestu a okamžitě přehodnotí každou capability odkazující na stejnou intake práci. Sourozenecké intake tasky, jejichž požadavky jsou všechny splněny, se automaticky uzavírají.
  • Požadavky mohou tvořit alternativní skupiny (alternativeKey): odešlete přesně jeden ze skupiny.
  • changes_requested inkrementuje remediationRound a nese reviewFeedback. Přečtěte task znovu, znovu odešlete s čerstvým idempotency klíčem.
  • URL hostované verifikace se objevují jen v detailu tasku scoped na customera (GET /v3/customers/{customerId}/tasks/{taskId}) a jen dokud je session akční; seznamy a GET /v3/tasks/{taskId} jsou záměrně bez URL.
  • Podmínky služby jsou také task: openTaskIds může obsahovat task s category: "terms_of_service", jehož hostovaná stránka akceptace je odkazována stejně (jen v detailu scoped na customera). Obecná submissiona nemohou akceptovat podmínky a schválení KYC nikdy neimplikuje akceptaci podmínek.
  • Tasks jsou scoped per capability, takže „stejný” požadavek (například doklad o adrese) se může objevit jednou per capability. Deduplikujte ve svém UI podle key požadavku.
  • Žádná vrstva překladu: postování na /v1/documents neodblokuje v3 capabilities. Jakmile je customer na v3, veškeré požadavky žeňte přes tasky.

2.4 Accounts a wallets

Vytvoření, rozlišené podle origin plus type. Issued bankovní účty berou jednu method; external bankovní účty berou místo toho pole methods (odeslání method je tam odmítnuto):
  • country u issued bankovních účtů je volitelné (výchozí per metoda); u external bankovních účtů jej uveďte explicitně. Wallet účty nemají zemi vůbec.
  • settlement.accountId je povinné u issued bankovních účtů: pojmenovává issued wallet účet, který přijímá vypořádané prostředky z vkladů na bankovní účet.
  • Issued účty vystavují details (IBAN nebo routing plus account nebo address), verzované routing (souřadnice pro vklad se mohou rotovat, vždy vykreslete nejnovější čtení), fees, balances.
  • Sítě: polygon, ethereum, base, arbitrum, optimism, bsc, avalanche.
  • Brána capability platí jen pro issued účty: vytvořit jeden proti neready capability selže s chybou kódovanou capability, nejprve požádejte o capability (2.2). External účty capability nepotřebují (a ani schválení customera); dostanou jen validaci request-schema a bankovních detailů.
  • Issued bankovní účty se rodí provisioning s details: null. Polluj účet nebo sleduj account.status_changed, dokud nebude ready.
  • DELETE archivuje, nikdy nemaže natvrdo. Účty odkazované probíhajícími transfery vrátí 409 account_has_active_transfers. Opakujte po tom, co ty transfery dosáhnou terminálního stavu.
  • Zcela nové ve v3: Rules, trvalé pokyny na issued wallet účtu (POST/GET /v3/customers/{customerId}/rules, GET/PATCH/DELETE .../rules/{ruleId}), které automaticky přesouvají příchozí prostředky na jiný účet nebo wallet destination. Bez ekvivalentu ve v1 nebo v2.

2.5 Recipients a destinations

v2 neměla koncept recipient. Pokud jste na v2 a vyplácíte třetím stranám, je to nové rozhraní, nikoli přejmenování.
  • Recipient se rovná kdo: individual (křestní a příjmení) nebo business (název společnosti), s povinným relationship (employee, contractor, vendor, subsidiary, merchant, customer, landlord, family, other). Recipients a destinations jsou jen pro třetí strany. First-party payout recipienta vůbec nepoužívá: cíluj jeden z customerových vlastních acc_ účtů jako destinationId u quote (2.6).
  • Destination se rovná kam: typované per metoda, sepa (iban, bic volitelně), ach nebo wire (routing plus account), swift (plné souřadnice plus volitelně intermediary), spei (clabe), pse, transfers_3_0 (cbu) atd., plus wallet destinations. Každá destination má vlastní stav. Sledujte destination.status_changed.
  • Fiat destinations vyžadují úplnou address recipienta (street, city, postal code, country) před vytvořením. Chybějící části selžou s 422 recipient_address_required. Wallet destinations vynechávají adresu, ale vyžadují top-level ownership (self_custodied nebo custodial se jménem custodiana).
  • Přesnost jména beneficienta má význam: přijímající banky porovnávají právní jméno účtu. Posílejte přesné právní jméno a příjmení nebo název společnosti, nikoli zobrazovací přezdívku.
  • Schémata polí destination per metoda jsou v OpenAPI specifikaci.

2.6 Quotes a transfers

  • destinationId bere acc_ (customer-owned account) nebo dst_ (recipient destination) id. Fiat-funded quotes (payins) musí cílit acc_ účet, dst_ cíl vždy znamená payout (jinak 422 quote_direction_invalid).
  • externalId na quotes a transfers je neunikátní korelační reference (vrácená při čtení, filtrovatelná v seznamech). Pravidlo unikátnosti per prostředí (2.1) platí jen pro customer externalId.
  • Quote proveďte přesně jednou, před expiresAt. Vypršelý quote selže s 409 quote_expired, druhé provedení s 409 quote_already_executed (problem nese stávající transferId).
  • Zrušení transferu zatím není podporováno: POST .../cancel vrací 409 transfer_not_cancelable v každém stavu. Dnešní canceled transfery přicházejí z vypršení funding okna u nefinancovaného payin, ne z tohoto endpointu.
  • Payins začínají awaiting_funds: vykreslete GET .../instructions plátci, souřadnice banky plus referenční nebo memo kód pro fiat, deposit adresa pro krypto. Referenční kód je způsob, jak se vklad páruje. Vždy jej zobrazte.
  • state plus stateDetail pro strojově čitelné podstavy; action_required znamená, že je připojen compliance task (openTaskIds, GET .../tasks), odpovídejte přes submissions.
  • Příchozí vklady detekované na issued účtech se objevují jako transfery s origin: "inbound_deposit" (oproti "quoted").
  • Reference platebních sítí jsou konsolidované pod references: transactionHash, traceNumber, imad, uetr, explorerUrl, returnedTransferId.
Překlad stavů v1: Dvě migrační varování:
  • Transfery nepřecházejí mezi verzemi. Transfery vytvořené na v1 nebo v2 nejsou čitelné z v3. Seznam je vynechá a GET /v3/transfers/{transferId} vrátí 404. Přenechte nejprve vytváření, ponechte v1 čtecí cestu, dokud tyto transfery nedosáhnou terminálních stavů, a pak ji zahoďte.
  • Žádné swapy tokenů. stablecoin_move vyžaduje stejnou měnu in a out: USDC na USDT selže s 422 recipient_destination_invalid nesoucí chybu pole currency_mismatch. Stejná síť na obou stranách, žádný bridging, a wallet-to-wallet přesuny aktuálně podporují jen doručení bez poplatku: quote s nenulovým platform nebo developer fee selže s 422 amount_not_deliverable.

2.7 Webhooks

Katalog událostí: 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, transfer.created, transfer.state_changed, api.deprecation.
  • GET /v3/webhooks/portal vrací URL hostovaného management portálu pro delivery logy, opakování a manuální přehrání.
  • transfer.created se aktuálně doručuje s legacy tvarem payloadu z v1 (v3 obálka se aktivuje, až v1 webhooks skončí). Berte to čistě jako náznak a GET si transfer; nestavějte proti jeho body.
  • Události jsou náznaky: po přijetí GETněte zdroj a jednejte podle čtení. Nikdy nestavějte stav podle payloadu události nebo pořadí. Doručení je at-least-once a může být opožděné nebo přeuspořádané. Deduplikujte podle event id a chybějící události zotavujte pomocí inkluzivního filtru updatedAfter každého seznamu.
  • Přihlaste se k odběru api.deprecation, strojového kanálu pro ukončení podpory verzí.
  • Dnes žádná událost task.*: po odeslání polluj task nebo jeho rodiče.

2.8 Sandbox

Stejná base URL; sandbox API klíč vybírá prostředí. v3 sandbox simuluje celou smyčku kontroly od začátku do konce: vytvořte task, odešlete proti němu, review jej na accepted nebo rejected, sledujte, jak se capability odblokuje. Nazkoušejte si UX pro nápravu před produkcí. Sandboxem vytvořené tasky i běžné intake tasky, které se objevují na vyžádaných capabilities, jsou tímto způsobem přezkoumatelné; stejně jako v produkci se nespouštějí žádné task webhooks, polluj (2.7).

2.9 Legacy endpointy bez náhrady ve v3

Tyto nemají v3 náhradu. Většina zůstává na v1 beze změny (ponechte svá stávající volání); dvě jsou zcela vyřazeny (viz Dispozice): Každý další veřejný endpoint v1 nebo v2 se objevuje v mapovací tabulce výše.

2.10 Doporučené pořadí migrace

Každý krok jde nasadit nezávisle; v1 nebo v2 a v3 běží vedle sebe proti stejné customer bázi. Nazkoušejte každý krok proti svému sandbox klíči (2.8) předtím, než jej zopakujete v produkci.
1

Instalatérské práce

Idempotency-Key na všech požadavcích s efektem (POST, PATCH, PUT, DELETE; sandbox endpointy vyňaty); peníze jako řetězce; pomocníci pro cursor pagination.
2

Webhooks

Zaregistrujte v3 endpointy per událost, včetně api.deprecation. Konfigurace jednoho endpointu ve v1 je samostatné rozhraní, nechte ji být; oba běží vedle sebe až do vypuštění v kroku 9.
3

Obohacení profilu

PATCH /v3/customers/{id} s celým profilem, který máte (v1 sbírala méně, než v3 vystavuje) a znovu nastavte metadata. Udělejte z toho záměrně první v3 zápis per customer: naplní sanitizovaný pohled dřív, než se ten pohled stane trvalým (2.1).
4

Čtení

Nasměrujte čtení customer, capability a account na v3; přepište logiku stavu customera dle 1.3. Až po kroku 3 se neobohacená čtení vracejí s chybějícími legacy-invalidními poli.
5

Onboarding zápisy

Vytvářejte přes POST /v3/customers; požadujte capabilities místo /rails, /banks nebo applications; postavte task smyčku (největší zcela nová UI práce, tasks-preview pomáhá ukazovat požadavky předem). Od tohoto bodu přestaňte postovat /v1/documents u customerů řízených v3, neodblokují capabilities (2.3).
6

Accounts

Vydávejte přes v3; přesuňte importy na origin: external.
7

Payouts

Recipients plus destinations, poté quote a transfer.
8

Payins

Quote, transfer, instructions; nadále vykreslujte referenční kód.
9

Vypuštění

Transfery nepřecházejí mezi verzemi (2.6). Ponechte čtecí cestu v1 nebo v2 a v1 webhook endpoint pro transfery tam vytvořené, čtěte duálně, dokud nedosáhnou terminálních stavů, poté vyhoďte starého klienta a v1 webhook konfiguraci.

2.11 Checklist záludností

  • Čerstvý UUID per logická operace, uchovávaný s vaší úlohou a použitý znovu při opakování; nikdy nepoužívejte klíč znovu se změněným body (409 idempotency_conflict). Sandbox endpointy jsou z hlavičky vyňaty.
  • Obohaťte stávající customery (PATCH celý profil, znovu nastavte metadata, nepřenáší se) před jakýmkoli dalším v3 zápisem, první v3 zápis učiní sanitizovaný pohled trvalým.
  • externalId je unikátní per prostředí a archivací se neuvolní, vymažte jej přes PATCH před DELETE, pokud jej plánujete znovu použít.
  • Neexistuje pole status u customera, připravenost odvozujte per capability.
  • action_required i in_review obojí znamenají otevřený task.
  • Submissions jsou řízené kontrolou (odeslání není totéž co odblokování) a musí odpovědět na každý akční požadavek s přesným taskRevision. Při neshodě přečtěte znovu a přebudujte.
  • Neexistuje webhook task.*, po každém odeslání polluj task (nebo jeho rodiče).
  • Opakování při changes_requested se rovná přečtení tasku znovu, čerstvé odpovědi, čerstvý idempotency klíč.
  • Postování na /v1/documents nikdy neodblokuje v3 capability, jakmile je customer na tascích, veďte všechny požadavky přes tasky.
  • Nové tasky se mohou objevit na už ready capability, držte task smyčku zapojenou i po onboardingu, ne jen během něj.
  • cancel capability funguje jen z pending nebo restricted bez blokujících zdrojů (409 capability_not_cancelable); nové vyžádání po zrušení je čerstvé vytvoření s čerstvým idempotency klíčem.
  • Capability musí být ready předtím, než pod ní vydáváte účty nebo proti ní quotujete.
  • Quote má částku přesně na jedné straně; žádné pole směru; proveďte přesně jednou před expiresAt (409 quote_expired nebo 409 quote_already_executed).
  • Stablecoin přesuny jsou pouze same-currency, same-network (USDC na USDT selže 422); wallet-to-wallet podporuje jen doručení bez poplatku.
  • DELETE archivuje, nikdy nemaže natvrdo. Smazání účtu je blokováno probíhajícími transfery (409 account_has_active_transfers); smazání customera navíc jakýmkoli nearchivovaným účtem (409 customer_has_active_resources, blockingResources[] je jmenuje).
  • Transfery v1 nebo v2 jsou pro čtení z v3 neviditelné (seznam vynechá, GET 404), čtěte duálně, dokud se nevypustí, poté zahoďte staré cesty.
  • Deposit routing a instrukce se mohou měnit, vždy vykreslete nejnovější GET a vždy zobrazte referenční kód.
  • Webhooks jsou náznaky; GET je pravda, deduplikujte podle event id, chybějící události zotavte pomocí updatedAfter.

Další krok

Začněte krokem 1 pořadí migrace (2.10), idempotency klíče, peníze jako řetězce, cursor pagination, a nazkoušejte každý krok proti svému sandbox klíči (2.8), než jej zopakujete v produkci.