Skip to main content
Migrer integrasjonen din fra API v1 og v2 til v3 i to omganger:
  • Del 1, konseptet. Les dette først. v3 er en omforming, ikke en omdøping: hvis du mapper gamle endepunkter én-til-én, kjemper du mot API-et. Ti minutter her sparer deg for dager senere.
  • Del 2, API-et. Endepunkt-for-endepunkt-mapping, forespørselseksempler, tilstandsmaskiner og en migreringssjekkliste.
Basert på produksjons-OpenAPI-spesifikasjonen (platform.swipelux.com/openapi.json). v1 og v2 er fortsatt aktive og ennå ikke merket som utdaterte; alle nye capability-, mottaker-, task- og quoting-funksjoner leveres kun i v3. Abonner på webhook-hendelsen api.deprecation for utfasingsvarsler.
Innhold. Del 1: 1.1 hvorfor v3 finnes, 1.2 objektmodell, 1.3 klarhet per capability, 1.4 task-løkken, 1.5 pengeflytting, 1.6 tilstandsmaskiner, 1.7 konvensjoner, 1.8 den gyldne veien. Del 2: 2.1 kunder, 2.2 capabilities, 2.3 tasks og submissions, 2.4 kontoer, 2.5 mottakere og destinations, 2.6 quotes og transfers, 2.7 webhooks, 2.8 sandbox, 2.9 eldre endepunkter, 2.10 migreringsrekkefølge, 2.11 fallgruvesjekkliste.

Del 1, konseptet

1.1 Hvorfor v3 finnes

v1 og v2 lot fire overlappende måter vokse frem for å gjøre en kunde klar for betaling: /rails, /banks, /accounts/applications og forretnings-rail-applications-overflaten, hver med sitt eget statusvokabular. Dokumentinnsamling (/documents, KYC-import, verifikasjons-SDK-tokens) var frakoblet fra det den faktisk skulle låse opp. v3 samler alt dette i seks ressurser, kunden pluss fem ting den eier:

1.2 Objektmodellen

To strukturelle regler å internalisere:
  1. Capabilities styrer alt. Kontoer opprettes under en ready capability; quotes prises mot en capability. Onboarding betyr å få de nødvendige capabilities til ready.
  2. Tasks kan henge hvor som helst. En capability, en konto eller en pågående transfer kan bære openTaskIds. Uansett hvor du ser dem, er løkken den samme: les task, send inn svar, vent på gjennomgang, les foreldreobjektet på nytt.

1.3 Klarhet er per capability, ikke per kunde

v1 blandet /rails-klarhet med en kundeomfattende KYC-port. I v3 finnes det ingen kundestatus: en kunde kan være fullt brukbar på stablecoin_transfers mens sepa-capabilityen fortsatt har åpne tasks. Capabilities med sammenslåtte kontoer når ready som regel raskere enn navngitte, så begynn å transactere på det som er ready i stedet for å vente på alt. Hvis v1- eller v2-koden din baserer UI-merker på kundens verifikasjonsstatus, må du skrive den om:
  • “Kan de transactere på X?” blir capability X status == "ready".
  • “Må de gjøre noe?” blir en task med status action_required (capabilityen viser typisk restricted med statusReason.resolution: "complete_tasks").
  • “Venter vi på Swipelux?” blir tasks i in_review, capability pending.

1.4 Task-løkken

Alt det gamle dokument- og KYC-overflaten gjorde, er nå denne ene løkken: Sentrale egenskaper:
  • En task bærer requirements[], de enkelte forespørslene. Hver har en task-spesifikk requirementId, en stabil key som navngir forespørselen (for eksempel adressebekreftelse, dedupliser UI-en din på denne) og et typet request som beskriver nøyaktig hva slags inndata som kreves (tekst, dato, valg, dokument, attestasjon og så videre).
  • Innsending er gjennomgangs-styrt: den endrer aldri capability- eller kontostatus direkte, det gjør aksept. Ett unntak: profile-svar skrives direkte inn i kundeprofilen ved innsending (2.3). Etter innsending poller du tasken eller foreldreressursen.
  • taskRevision (ekko av taskens revision) er en samtidighetsvakt: har tasken endret seg siden du leste, må du lese på nytt og bygge svarene på nytt.
  • absence er et fullverdig svar (“Jeg har ikke dette fordi …”), bruk det i stedet for å la krav henge.

1.5 Pengeflytting

Én flyt for payins, payouts og stablecoin-flyttinger. Det finnes ingen retningsinndata, du deklarerer aldri payin kontra payout. Formene på inn- og utvalutaen avleder en skrivebeskyttet direction på quoten og transferen: fiat_to_stablecoin (payin), stablecoin_to_fiat (payout) eller stablecoin_move.

1.6 Én tilstandsmaskin per ressurs

Hver statusbærende ressurs har sin egen enum, og hver ikke-lykkelig status bærer en strukturert årsak. Kontoer, applications og transfers deler formen { code, message, actor, retryable }: kontoer og applications viser den som statusReason, transfers som stateDetail. actor sier hvem som må handle (customer, developer, provider, network, swipelux), retryable sier om det hjelper å prøve på nytt. Capabilities bruker { code, resolution, message }, der resolution (complete_tasks, wait, contact_support, none) sier hva som fører capabilityen videre. code-verdier er en åpen, kun-utvidbar katalog: forgren på resolution (eller actor pluss retryable), og tolerer koder du aldri har sett før. Tilstander denne guiden ikke går gjennom (rejected, suspended, disabled, failed, canceled) er terminale eller support-drevne; definisjoner per ressurs finnes i spesifikasjonen. Transfer, tegnet ut:

1.7 Konvensjoner

Idempotensregler verdt å internalisere før du skriver kode:
  • Å gjenbruke en nøkkel med en annerledes body gir 409 idempotency_conflict så lenge nøkkelen oppbevares (minst 7 dager), så planlegg aldri å gjenbruke en nøkkel. Generer en ny UUID per logisk operasjon og lagre den sammen med jobben din.
  • Replay dekker også feil: hvis den opprinnelige forespørselen endte i en terminal 4xx, gir samme nøkkel pluss body samme problemsvar igjen.
  • To samtidige forespørsler med samme nøkkel: én vinner, den andre får 409. Prøv taperen på nytt etter at vinneren er ferdig; replayen returnerer det opprinnelige svaret.

1.8 Den gyldne veien


Del 2, API-et

2.1 Kunder

Opprette, skilt på type (illustrative verdier, feltnavn per spesifikasjon):
  • Opprettelse er progressiv: { "type": "individual" } alene er en gyldig opprettelse. Manglende opplysninger gjør aldri kunden ugyldig, de dukker opp senere som intake-tasks på capabilities-ene som trenger dem.
  • Virksomheter bærer business pluss registreringsdata. v1s shareholder-CRUD mappes til related parties, utvidet til å dekke direktører, ledere og eiere: opprett dem inline ved kundeopprettelse (hver får en stabil rp_-id) eller administrer dem via de dedikerte related-parties-endepunktene.
  • Ingen kunde-status-felt, se 1.3.
  • Eksisterende kunder overføres: kunder opprettet på v1 eller v2 er adresserbare med samme id på v3-endepunktene. v3-lesningen er en renset visning, eldre verdier som ikke består v3-validering kommer tilbake som fraværende. Etter din første v3-write blir visningen permanent: fraværende verdier kommer ikke tilbake av seg selv. Berik derfor tidlig, sett av en engangs-runde som PATCH-er den fulle profilen fra dine egne poster før du stoler på v3-lesninger. v1-metadata er et separat navneområde og overføres ikke, sett det på nytt på v3.
  • externalId er førsteklasses og unik på tvers av alle kundene dine i v3, per miljø (409 duplicate_external_id). Arkivering av en kunde frigjør ikke externalId, tøm den via PATCH før DELETE hvis du vil gjenbruke den.
  • DELETE er en arkiveringskaskade (ingen gjenoppretting; ids gjenbrukes aldri). Den blokkeres med 409 customer_has_active_resources pluss blockingResources[] så lenge det finnes en ikke-arkivert konto eller pågående transfer.
  • PATCH-mergeregler: eksplisitt null tømmer et nullbart felt, arrayer erstattes fullstendig (unntatt inline related parties, som upsertes etter id), metadata-nøkler slås sammen. Fulle skjemaer og listefiltre finnes i OpenAPI-spesifikasjonen.

2.2 /rails, /banks, applications blir Capabilities

  • En capability er method (ach, wire, rtp, pix, sepa, swift, spei, pse, transfers_3_0, faster_payments, sepa_instant, uaefts, card, stablecoin_transfers og så videre) pluss accountType (pooled eller named, null for ikke-bankmetoder) pluss directions (payin eller payout). Den offentlige capabilityId er det kvalifiserte paret (sepa_pooled, ach_named) eller kun metoden for card og stablecoin_transfers.
  • Hver capability-forespørsel genererer en application, posten per forsøk under .../capabilities/{capabilityId}/applications (pluss /{applicationId}/history), med egne statuser (1.6) og statusReason. Den er revisjonsloggen for en forespørsel; i det daglige poller du selve capabilityen.
  • capabilities/supported returnerer tilgjengelighet (available, beta eller disabled), kvalifisering og institusjoner som tilbys. Bankvalg skjer ved forespørselstidspunktet via det valgfrie institutions-arrayet, det finnes ingen separat /banks-ressurs. Utelatelse (eller å sende []) velger alle standardinstitusjoner; isDefault: true er et kunde- og capability-spesifikt flagg, ikke et globalt. En ikke-tom liste overstyrer standardene, og en bankstøttet capability uten anvendbar standard returnerer 422 capability_institutions_required. Institusjons-ids er ugjennomsiktige, tolerer nye.
  • stablecoin_transfers tildeles automatisk ved kundeopprettelse og fødes som ready (bes altså aldri om og kan ikke kanselleres). card er kun for individer.
  • openTaskIds på capabilityen er “hva gjør jeg neste”-pekeren. Åpen betyr action_required eller in_review, og oppsummeringen inkluderer delte tasks på kundenivå som nås gjennom aktive avhengigheter.
  • cancel fungerer kun fra pending eller restricted og uten blokkerende ressurser, ellers 409 capability_not_cancelable, hvis problem-body lister blockingResources. Å be på nytt etter kansellering er en fersk opprettelse med en ny idempotency-nøkkel.
  • Poll GET-en. Capability-status oppdateres når du leser; poll GET .../capabilities/{capabilityId} eller abonner på capability.status_changed, ikke cache.
  • Å be om én metode kan gjøre relaterte metoder tilgjengelige med en gang, behandle capabilities som et sett du leser på nytt, ikke som én rad du sporer.
  • Bruk tasks-preview for å vise onboarding-forespørsler før du forplikter deg til en forespørsel.
  • Verifikasjon er ikke engangs: nye tasks kan dukke opp på en allerede ready capability (periodisk eller hendelsesdrevet re-verifikasjon). Hold task-løkken koblet gjennom hele kundens levetid, ikke bare ved onboarding.

2.3 Dokumenter og KYC blir Tasks og Submissions

Merknad om navn. Disse endepunktene ble en kort periode levert som requirements og fulfillments. Fra 02.08.2026 er de offentlige navnene tasks og submissions. Omdøpingen omfattet kun ressursene og endepunkt-stiene, requirements[]-arrayet inne i en task og dens requirementId beholder disse navnene.
Hvert eldre dokumentoverflate mappes til samme erstatning: les GET /v3/customers/{customerId}/tasks, svar med POST .../tasks/{taskId}/submissions. Rundt den løkken:
  • Rå fillagring: POST/GET/DELETE /v3/customers/{customerId}/documents (pluss /{documentId}), last opp én gang med API-nøkkelen din, og referer så til dokument-id-er i submission-svar. Dette erstatter alle upload-token- og direct-upload-inntak.
  • Helt nye lesninger: GET /v3/tasks (merchant-omfattende innboks), GET /v3/transfers/{transferId}/tasks, GET .../tasks/{taskId}/history, GET .../tasks/{taskId}/submissions (pluss /{submissionId}).
Submission (illustrativ):
  • Svartyper: profile, text, date, single_select, multi_select, boolean, attestation, document, resource_reference, absence. Hvert requirements request-objekt sier hvilken type det forventer.
  • En submission må besvare hvert handlingskrevende requirement i gjeldende runde, med nøyaktig den taskRevision du leste. Delvise submissions avvises.
  • profile-svar skriver gjennom: de oppdaterer kundeprofilen via den vanlige valideringsveien og re-evaluerer umiddelbart hver capability som refererer til det samme intake-arbeidet. Søskenlagerte intake-tasks der alle requirements er oppfylt, lukkes automatisk.
  • Requirements kan danne alternative grupper (alternativeKey): send inn nøyaktig én av gruppen.
  • changes_requested øker remediationRound og bærer reviewFeedback. Les tasken på nytt og send inn på nytt med en ny idempotency-nøkkel.
  • Hostede verifikasjons-URLer vises kun på kundeavgrenset task-detalj (GET /v3/customers/{customerId}/tasks/{taskId}) og bare mens sesjonen er handlingskrevende; lister og GET /v3/tasks/{taskId} er bevisst URL-frie.
  • Tjenestevilkår er også en task: openTaskIds kan inkludere en task med category: "terms_of_service" hvis hostede aksepteringside er lenket på samme måte (kun kundeavgrenset detalj). Generiske submissions kan ikke godta vilkår, og KYC-godkjenning innebærer aldri aksept av vilkår.
  • Tasks er avgrenset per capability, så det “samme” kravet (for eksempel adressebekreftelse) kan dukke opp én gang per capability. Dedupliser i UI-en på requirement key.
  • Ingen oversettelseslag: å poste til /v1/documents låser ikke opp v3-capabilities. Når en kunde først er på v3, driv alle forespørsler gjennom tasks.

2.4 Kontoer og wallets

Opprette, skilt på origin pluss type. Utstedte bankkontoer tar én method; eksterne bankkontoer tar i stedet et methods-array (å sende method der avvises):
  • country på utstedte bankkontoer er valgfritt (standard per metode); på eksterne bankkontoer oppgir du det eksplisitt. Wallet-kontoer bærer ikke land i det hele tatt.
  • settlement.accountId er påkrevd på utstedte bankkontoer: den navngir den utstedte wallet-kontoen som mottar oppgjorte midler fra innskudd til bankkontoen.
  • Utstedte kontoer eksponerer details (IBAN eller routing pluss konto eller adresse), versjonert routing (innskuddskoordinater kan roteres, gjengi alltid den nyeste lesningen), fees, balances.
  • Nettverk: polygon, ethereum, base, arbitrum, optimism, bsc, avalanche.
  • Capability-porten gjelder kun utstedte kontoer: å opprette en mot en ikke-klar capability feiler med en capability-kodet feil, be om capabilityen først (2.2). Eksterne kontoer trenger ingen capability (og ingen kundegodkjenning); de får kun validering av forespørselsskjema og bankdetaljer.
  • Utstedte bankkontoer fødes som provisioning med details: null. Poll kontoen eller se på account.status_changed til ready.
  • DELETE arkiverer, sletter aldri hardt. Kontoer som refereres av pågående transfers returnerer 409 account_has_active_transfers. Prøv på nytt etter at disse transferene når en terminal tilstand.
  • Nytt i v3: Rules, stående instruksjoner på en utstedt wallet-konto (POST/GET /v3/customers/{customerId}/rules, GET/PATCH/DELETE .../rules/{ruleId}) som automatisk feier innkommende midler til en annen konto eller en wallet-destination. Ingen v1- eller v2-ekvivalent.

2.5 Mottakere og destinations

v2 hadde ikke noe mottakerkonsept. Hvis du er på v2 og betaler ut til tredjeparter, er dette en ny overflate, ikke et navnebytte.
  • Recipient er hvem: individual (fornavn og etternavn) eller business (firmanavn), med påkrevd relationship (employee, contractor, vendor, subsidiary, merchant, customer, landlord, family, other). Recipients og destinations er kun for tredjeparter. En utbetaling til deg selv bruker ikke recipient i det hele tatt: sikt på en av kundens egne acc_-kontoer som quotens destinationId (2.6).
  • Destination er hvor: typet per metode, sepa (iban, bic valgfritt), ach eller wire (routing pluss konto), swift (fulle koordinater pluss valgfri mellombank), spei (clabe), pse, transfers_3_0 (cbu) og så videre, samt wallet-destinations. Hver destination har sin egen status. Følg med på destination.status_changed.
  • Fiat-destinations krever mottakerens fullstendige address (gate, by, postnummer, land) før opprettelse. Manglende deler feiler med 422 recipient_address_required. Wallet-destinations hopper over adressen, men krever ownership på toppnivå (self_custodied, eller custodial med et custodian-navn).
  • Nøyaktighet i mottakernavnet er viktig: mottakerbanker matcher kontoens juridiske navn. Send eksakt juridisk fornavn pluss etternavn eller firmanavn, ikke et visnings-kallenavn.
  • Feltskjemaer per metode for destinations finnes i OpenAPI-spesifikasjonen.

2.6 Quotes og transfers

  • destinationId tar en acc_-id (kundeeid konto) eller en dst_-id (mottakerdestination). Fiat-finansierte quotes (payins) må sikte mot en acc_-konto, et dst_-mål betyr alltid en utbetaling (ellers 422 quote_direction_invalid).
  • externalId på quotes og transfers er en ikke-unik korrelasjonsreferanse (gjentas i lesninger, filtrerbar på lister). Regelen om unikhet per miljø (2.1) gjelder kun for kundens externalId.
  • Utfør en quote nøyaktig én gang, før expiresAt. En utløpt quote feiler med 409 quote_expired, en andre utførelse med 409 quote_already_executed (problemet inneholder eksisterende transferId).
  • Kansellering av transfer støttes ennå ikke: POST .../cancel returnerer 409 transfer_not_cancelable i alle tilstander. Dagens canceled-transfers kommer fra at finansieringsvinduet utløper på en ufinansiert payin, ikke fra dette endepunktet.
  • Payins starter i awaiting_funds: gjengi GET .../instructions for betaleren, bankkoordinater pluss referanse- eller memokode for fiat, innskuddsadresse for krypto. Referansekoden er slik innskuddet matches. Vis den alltid.
  • state pluss stateDetail for maskinlesbare subtilstander; action_required betyr at en compliance-task er vedlagt (openTaskIds, GET .../tasks), svar via submissions.
  • Innkommende innskudd oppdaget på utstedte kontoer vises som transfers med origin: "inbound_deposit" (i stedet for "quoted").
  • Referanser til betalingsnettverk er samlet under references: transactionHash, traceNumber, imad, uetr, explorerUrl, returnedTransferId.
Oversettelse av v1-status: To migrasjonsadvarsler:
  • Transfers krysser ikke versjoner. Transfers opprettet på v1 eller v2 er ikke lesbare fra v3. Listen utelater dem og GET /v3/transfers/{transferId} gir 404. Bytt over oppretting først, behold v1-leseveien til disse transferene når terminale tilstander, og fjern den så.
  • Ingen tokenbytter. stablecoin_move krever samme valuta inn og ut: USDC til USDT feiler med 422 recipient_destination_invalid med en currency_mismatch-feltfeil. Samme nettverk på begge sider, ingen bridging, og wallet-til-wallet-flyttinger støtter for øyeblikket kun gebyrfri levering: en quote hvis plattform- eller utviklergebyr er ulik null feiler med 422 amount_not_deliverable.

2.7 Webhooks

Hendelseskatalog: 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 returnerer en hostet administrasjonsportal-URL for leveringslogger, retries og manuell replay.
  • transfer.created leveres for øyeblikket i eldre v1-payloadform (v3-konvolutten aktiveres når v1-webhooks utfases). Behandle den kun som et hint og hent transferen via GET; ikke bygg mot bodyen dens.
  • Hendelser er hint: ved mottak hent ressursen og handle på lesningen. Bygg aldri tilstand basert på hendelses-payload eller rekkefølge. Levering er minst-én-gang og kan være forsinket eller omordnet. Dedupliser på hendelses-id, og gjenopprett tapte hendelser med hver listes inklusive updatedAfter-filter.
  • Abonner på api.deprecation, maskinkanalen for versjonsutfasinger.
  • Ingen task.*-hendelse i dag: etter innsending poller du tasken eller foreldreobjektet.

2.8 Sandbox

Samme base-URL; sandbox-API-nøkkelen velger miljøet. v3-sandboxen simulerer gjennomgangsløkken fra ende til ende: opprett en task, send inn mot den, review den til accepted eller rejected, og se capabilityen låses opp. Øv på herstellings-UX-en din før produksjon. Både tasks opprettet i sandboxen og de vanlige intake-taskene som dukker opp på forespurte capabilities kan gjennomgås på denne måten; som i produksjon fyres ingen task-webhooks, poll (2.7).

2.9 Eldre endepunkter uten v3-erstatning

Disse har ingen v3-erstatning. De fleste forblir uendret på v1 (behold de eksisterende kallene dine); to trekkes tilbake helt (se Disposisjon): Hvert annet offentlig v1- eller v2-endepunkt dukker opp i en mappingtabell ovenfor.

2.10 Foreslått migreringsrekkefølge

Hvert trinn leveres uavhengig; v1 eller v2 og v3 kjører side om side mot samme kundebase. Øv på hvert trinn mot sandbox-nøkkelen din (2.8) før du gjentar det i produksjon.
1

Rørleggerarbeid

Idempotency-Key på alle effektfulle forespørsler (POST, PATCH, PUT, DELETE; sandbox-endepunkter unntatt); penger som strenger; hjelpere for cursor-paginering.
2

Webhooks

Registrer v3-endepunkter per hendelse, inkludert api.deprecation. v1-konfigurasjonen med ett endepunkt er en separat overflate, la den stå; begge kjører side om side frem til draineringen i trinn 9.
3

Profilberikelse

PATCH /v3/customers/{id} med den fulle profilen du har (v1 samlet mindre enn det v3 eksponerer), og sett metadata på nytt. Gjør dette bevisst til den første v3-writen per kunde: det fyller den rensede visningen før den visningen blir permanent (2.1).
4

Lesninger

Rett kunde-, capability- og kontolesninger mot v3; skriv om kundestatus-logikken per 1.3. Først etter trinn 3, uberikte lesninger kommer tilbake med eldre-ugyldige felter som fraværende.
5

Onboarding-writes

Opprett via POST /v3/customers; be om capabilities i stedet for /rails, /banks eller applications; bygg task-løkken (det største nye UI-arbeidet, tasks-preview hjelper med å vise forespørsler på forhånd). Herfra slutter du å poste /v1/documents for v3-drevne kunder, de låser ikke opp capabilities (2.3).
6

Kontoer

Utsted via v3; flytt import til origin: external.
7

Utbetalinger

Recipients pluss destinations, deretter quote og transfer.
8

Innbetalinger

Quote, transfer, instructions; fortsett å gjengi referansekoden.
9

Drainering

Transfers krysser ikke versjoner (2.6). Behold v1- eller v2-leseveien og v1-webhookendepunktet for transfers opprettet der, dobbeltles til de når terminale tilstander, og fjern så den gamle klienten og v1-webhookkonfigurasjonen.

2.11 Fallgruvesjekkliste

  • Ny UUID per logisk operasjon, lagret med jobben din og gjenbrukt ved retry; gjenbruk aldri en nøkkel med endret body (409 idempotency_conflict). Sandbox-endepunkter er unntatt fra headeren.
  • Berik eksisterende kunder (PATCH den fulle profilen, sett metadata på nytt, den overføres ikke) før enhver annen v3-write, den første v3-writen gjør den rensede visningen permanent.
  • externalId er unik per miljø og frigjøres ikke ved arkivering, tøm den via PATCH før DELETE hvis du planlegger å gjenbruke den.
  • Det finnes ikke noe kunde-status-felt, avled klarhet per capability.
  • action_required og in_review betyr begge en åpen task.
  • Submissions er gjennomgangs-styrt (innsending er ikke det samme som opplåst) og må besvare hvert handlingskrevende requirement med nøyaktig taskRevision. Ved uoverensstemmelse må du lese på nytt og bygge på nytt.
  • Det finnes ingen task.*-webhook, poll tasken (eller foreldreobjektet) etter hver innsending.
  • Retry ved changes_requested betyr å lese tasken på nytt, nye svar, ny idempotency-nøkkel.
  • Å poste til /v1/documents låser aldri opp en v3-capability, når en kunde er på tasks, driv hver forespørsel gjennom tasks.
  • Nye tasks kan dukke opp på en allerede ready capability, hold task-løkken koblet etter onboarding, ikke bare under.
  • Capability cancel fungerer kun fra pending eller restricted uten blokkerende ressurser (409 capability_not_cancelable); å be på nytt etter kansellering er en fersk opprettelse med en ny idempotency-nøkkel.
  • Capability må være ready før du utsteder kontoer under den eller quoter mot den.
  • Quote har beløp på nøyaktig én side; ingen retningsfelt; utfør nøyaktig én gang før expiresAt (409 quote_expired eller 409 quote_already_executed).
  • Stablecoin-flyttinger er kun samme-valuta og samme-nettverk (USDC til USDT feiler 422); wallet-til-wallet støtter kun gebyrfri levering.
  • DELETE arkiverer, sletter aldri hardt. Kontosletting blokkeres av pågående transfers (409 account_has_active_transfers); kundesletting blokkeres i tillegg av enhver ikke-arkivert konto (409 customer_has_active_resources, blockingResources[] navngir dem).
  • v1- eller v2-transfers er usynlige for v3-lesninger (listen utelater dem, GET gir 404), dobbeltles til drainert, og fjern så de gamle veiene.
  • Innskudds-routing og instructions kan roteres, gjengi alltid den nyeste GET-en, og vis alltid referansekoden.
  • Webhooks er hint; GET er sannheten, dedupliser på hendelses-id, gjenopprett tapte hendelser med updatedAfter.

Neste steg

Start på trinn 1 i migreringsrekkefølgen (2.10), idempotency-nøkler, penger som strenger, cursor-paginering, og øv på hvert trinn mot sandbox-nøkkelen din (2.8) før du gjentar det i produksjon.