- パート 1、コンセプト。 まずこちらをお読みください。v3 はリネームではなくリモデルです。古いエンドポイントを 1 対 1 でマッピングしようとすると API と衝突します。ここで 10 分費やせば、後日数日を節約できます。
- パート 2、API。 エンドポイントごとのマッピング、リクエスト例、状態機械、そして移行チェックリスト。
api.deprecation webhook イベントを購読してください。
目次。 パート 1: 1.1 v3 が存在する理由、1.2 オブジェクトモデル、1.3 capability ごとの準備状態、1.4 task ループ、1.5 資金移動、1.6 状態機械、1.7 規約、1.8 ゴールデンパス。パート 2: 2.1 customer、2.2 capability、2.3 task と submission、2.4 account、2.5 recipient と destination、2.6 quote と transfer、2.7 webhook、2.8 サンドボックス、2.9 レガシーエンドポイント、2.10 移行順序、2.11 落とし穴チェックリスト。
パート 1、コンセプト
1.1 v3 が存在する理由
v1 と v2 では、顧客を支払い可能な状態にするための重複した手段が 4 通り育ってしまいました。/rails、/banks、/accounts/applications、そしてビジネス向けの rail-applications サーフェスで、それぞれ独自のステータス語彙を持っていました。書類収集 (/documents、KYC インポート、検証 SDK トークン) は、実際にブロックを解除する対象と切り離されていました。v3 では、これらすべてを 6 つのリソースに集約します。顧客と、顧客が所有する 5 つのものです。
1.2 オブジェクトモデル
内在化すべき構造上のルールが 2 つあります。- Capability がすべてを制御します。 account は
readyの capability の下でプロビジョニングされ、quote は capability に対して価格設定されます。オンボーディングとは、必要な capability をreadyにすることです。 - Task はどこにでも付随します。 capability、account、実行中の transfer はいずれも
openTaskIdsを保持できます。どこで見つけても、ループは同じです。task を読み、回答を送信し、レビューを待ち、親を再読み込みします。
1.3 準備状態は顧客単位ではなく capability 単位
v1 では/rails の準備状態が顧客全体の KYC ゲートと絡み合っていました。v3 には顧客ステータスがありません。sepa capability にまだオープンな task が残っている状態でも、stablecoin_transfers では顧客が完全に利用可能ということもあり得ます。プール型 account の capability は、名前付きのものより一般的に早く ready に到達するため、すべてを待つのではなく、ready になったものから取引を開始してください。
v1 または v2 のコードが顧客の検証ステータスに基づいて UI バッジを表示している場合は、次のように書き換えてください。
- 「X で取引できるか?」は、capability X の
status == "ready"となります。 - 「顧客側で何か対応が必要か?」は、ステータス
action_requiredの task が存在するかどうか (通常、capability はrestrictedかつstatusReason.resolution: "complete_tasks"を示します) となります。 - 「Swipelux 側の対応待ちか?」は、task が
in_review、capability がpendingとなります。
1.4 Task ループ
旧書類および KYC サーフェスが行っていたことは、すべて次の 1 つのループになります。 主要な性質:- task は
requirements[]を保持し、それぞれが個別の依頼です。各要件には task 内でのrequirementId、依頼内容を示す安定的なkey(例えば住所証明。UI ではこれで重複排除してください)、および期待される入力を正確に記述した型付きのrequest(テキスト、日付、選択、書類、宣誓など) があります。 - 送信は レビューによって制御されます。送信自体は capability や account の状態を直接変更することはなく、受理された時点で変更されます。1 つ例外として、
profileの回答は送信時に顧客プロフィールへ書き込まれます (2.3)。送信後は、task または親リソースをポーリングしてください。 taskRevision(task のrevisionのエコー) は並行制御のガードです。読み取り後に task が変更されていた場合は、再読み込みして回答を再構築してください。absenceは 1 級の回答 (「これを持っていない理由は…」) です。要件を未回答のまま残さず、これを使用してください。
1.5 資金移動
payin、payout、およびステーブルコイン移動のためのフローは 1 つです。方向を指定する入力はありません。payin か payout かを宣言することは決してありません。入出力の通貨の形状から、quote と transfer に読み取り専用のdirection が導出されます。fiat_to_stablecoin (payin)、stablecoin_to_fiat (payout)、または stablecoin_move です。
1.6 リソースごとに 1 つの状態機械
ステータスを持つすべてのリソースには独自の列挙型があり、正常でないすべてのステータスには構造化された理由が付随します。Account、application、および transfer は{ code, message, actor, retryable } の形状を共有します。account と application はこれを statusReason として、transfer は stateDetail として公開します。actor は誰が対応しなければならないかを示し (customer、developer、provider、network、swipelux)、retryable は再試行が有効かどうかを示します。Capability は { code, resolution, message } を使用し、resolution (complete_tasks、wait、contact_support、none) は capability を先に進めるものを示します。code の値はオープンで追記のみのカタログです。resolution (または actor と retryable) で分岐し、見たことのないコードにも耐えられるようにしてください。
このガイドでは扱わない状態 (
rejected、suspended、disabled、failed、canceled) は終端状態またはサポート主導のものです。リソースごとの定義は仕様に記載されています。
Transfer を詳しく図示すると:
1.7 規約
コードを書く前に内在化すべき冪等性のルール:
- 異なる ボディでキーを再利用すると、キーが保持されている間 (少なくとも 7 日間) は
409 idempotency_conflictとなるため、キーの再利用を計画しないでください。論理的な操作ごとに新しい UUID を生成し、ジョブと共に永続化してください。 - リプレイはエラーもカバーします。元のリクエストが終端の 4xx で終わった場合、同じキーとボディは同じ問題レスポンスを再度返します。
- 同じキーでの並行 2 リクエスト: 一方が勝ち、他方は
409を受け取ります。勝者が確定した後に敗者を再試行してください。リプレイは元のレスポンスを返します。
1.8 ゴールデンパス
パート 2、API
2.1 Customer
作成、
type で判別 (フィールド名は仕様に基づく、値は例示):
- 作成は段階的です。
{ "type": "individual" }だけでも有効な作成です。事実が欠けていても customer が無効になることはなく、それらは後で、必要とする capability 上の intake task として表面化します。 - ビジネスは
businessと登録データを保持します。v1 の株主 CRUD は related parties にマッピングされ、取締役、役員、所有者を含むように拡張されました。customer 作成時にインラインで作成する (それぞれ安定したrp_id が付与されます) か、専用の related-parties エンドポイントで管理します。 - customer に
statusフィールドはありません (1.3 を参照)。 - 既存の customer は引き継がれます。v1 または v2 で作成された customer は v3 エンドポイントでも同じ id でアドレス指定できます。v3 の読み取りは サニタイズされたビュー で、v3 のバリデーションで失敗するレガシー値は返されません。最初の v3 書き込み後、そのビューは永続化されます。欠けている値はひとりでには戻りません。したがって早めにデータを充実させ、v3 読み取りに頼る前に、独自レコードから完全なプロフィールを
PATCHする 1 回限りのパスを予定してください。v1 のmetadataは別の名前空間であり、引き継がれません。v3 で再設定してください。 externalIdは 1 級であり、v3 では環境ごとに customer 間で一意 です (409 duplicate_external_id)。customer をアーカイブしてもexternalIdは解放されません。再利用したい場合は、DELETE の前に PATCH でクリアしてください。DELETEは アーカイブのカスケード です (復元不可、id は決して再利用されません)。アーカイブされていない account や実行中の transfer が存在する間は、409 customer_has_active_resourcesとblockingResources[]でブロックされます。- PATCH マージのルール: 明示的な
nullは nullable フィールドをクリア、配列は完全に置き換え (インラインの related parties は例外で、id により upsert)、metadataのキーはマージされます。完全なスキーマと一覧フィルタは OpenAPI 仕様にあります。
2.2 /rails、/banks、application は Capability になる
- capability は、
method(ach、wire、rtp、pix、sepa、swift、spei、pse、transfers_3_0、faster_payments、sepa_instant、uaefts、card、stablecoin_transfersなど)、accountType(pooledまたはnamed、非バンクメソッドの場合はnull)、directions(payinまたはpayout) の組み合わせです。公開のcapabilityIdは修飾ペア (sepa_pooled、ach_named) またはcardおよびstablecoin_transfersの場合は素の method です。 - 各 capability 要求は application を生成します。これは
.../capabilities/{capabilityId}/applications(加えて/{applicationId}/history) の下にある試行ごとのレコードで、独自のステータス (1.6) とstatusReasonを持ちます。これはリクエストの監査証跡です。日常的には capability 自体をポーリングしてください。 capabilities/supportedは可用性 (available、beta、またはdisabled)、適格性、および提供されている institution を返します。バンクの選択は要求時にオプションのinstitutions配列で行い、別の/banksリソースはありません。省略 (または[]を送信) すると、すべてのデフォルト institution が選択されます。isDefault: trueは customer と capability に固有のフラグであり、グローバルなものではありません。空でないリストはデフォルトを上書きし、適用可能なデフォルトを持たないバンクバックの capability は422 capability_institutions_requiredを返します。Institution の id は不透明です。新しいものにも耐えられるようにしてください。stablecoin_transfersは customer 作成時に自動付与 され、readyの状態で生まれます (そのため要求されず、キャンセルもできません)。cardは個人のみです。- capability の
openTaskIdsは「次に何をすべきか」を示すポインタです。open はaction_requiredまたはin_reviewを意味し、ロールアップにはアクティブな依存関係を通じて到達する共有の customer レベルの task も含まれます。 cancelはpendingまたはrestrictedからのみ、かつ ブロッキングリソースがない場合にのみ機能します。それ以外の場合は409 capability_not_cancelableとなり、その問題ボディにblockingResourcesが一覧されます。キャンセル後の再要求は、新しい冪等性キーによる新規作成です。- GET をポーリングしてください。 capability の状態は読み取り時に更新されます。
GET .../capabilities/{capabilityId}をポーリングするか、capability.status_changedを購読してください。キャッシュしないでください。 - 1 つの method を要求すると、関連する method が一度に利用可能になることがあります。capability を追跡する単一の行ではなく、再読み込みするセットとして扱ってください。
tasks-previewを使用して、要求にコミットする 前に オンボーディングの依頼内容を表示してください。- 検証は 1 回限りではありません。すでに
readyの capability にも新しい task が現れる可能性があります (定期的またはイベント駆動の再検証)。オンボーディング時だけでなく、customer のライフタイム全体を通じて task ループを配線しておいてください。
2.3 Documents と KYC は Task と Submission に
命名に関する注記。 これらのエンドポイントは一時的に
requirements と fulfillments として公開されていました。2026-08-02 以降、公開名は tasks と submissions です。この改名はリソースおよびエンドポイントパスのみに適用され、task 内の requirements[] 配列とその requirementId はこの名称のまま維持されます。GET /v3/customers/{customerId}/tasks で読み取り、POST .../tasks/{taskId}/submissions で回答します。
そのループの周辺:
- 生ファイルストレージ:
POST/GET/DELETE /v3/customers/{customerId}/documents(加えて/{documentId})。API キーで一度アップロードし、submission の回答で document id を参照してください。これによりすべての upload-token および direct-upload の取り込みが置き換えられます。 - 新規の読み取り:
GET /v3/tasks(加盟店全体のインボックス)、GET /v3/transfers/{transferId}/tasks、GET .../tasks/{taskId}/history、GET .../tasks/{taskId}/submissions(加えて/{submissionId})。
- 回答タイプ:
profile、text、date、single_select、multi_select、boolean、attestation、document、resource_reference、absence。各要件のrequestオブジェクトが期待するタイプを示します。 - submission は現在のラウンドの すべての実施可能な要件 に、読み取ったとおりの
taskRevisionで回答しなければなりません。部分的な submission は拒否されます。 profileの回答は 書き込みを通します。通常のバリデーションパスを介して customer プロフィールを更新し、同じ intake 作業を参照するすべての capability を直ちに再評価します。すべての要件が満たされた兄弟の intake task は自動的にクローズします。- 要件は代替グループ (
alternativeKey) を形成できます。グループのうち 1 つだけを送信してください。 changes_requestedはremediationRoundをインクリメントし、reviewFeedbackを保持します。task を再読み込みし、新しい冪等性キー で再送信してください。- ホスト型検証 URL は、customer スコープの task 詳細 (
GET /v3/customers/{customerId}/tasks/{taskId}) にのみ、かつセッションが実施可能な間だけ表示されます。一覧およびGET /v3/tasks/{taskId}は意図的に URL を含みません。 - 利用規約も task の 1 つです。
openTaskIdsにはcategory: "terms_of_service"の task が含まれることがあり、そのホスト型同意ページも同じ方法でリンクされます (customer スコープの詳細のみ)。汎用的な submission では規約に同意できず、KYC の承認は規約の受諾を意味することはありません。 - task は capability ごとにスコープされているため、「同じ」依頼 (例: 住所証明) が capability ごとに 1 回ずつ現れることがあります。要件の
keyで UI 上で重複排除してください。 - 翻訳レイヤーはありません。
/v1/documentsに POST しても v3 の capability のブロックは解除されません。customer が v3 に乗ったら、すべての依頼を task を通じて駆動してください。
2.4 Account とウォレット
作成、
origin と type で判別。発行済みのバンクアカウントは単一の method を取り、外部バンクアカウントは代わりに methods 配列を取ります (そこに method を送信すると拒否されます):
- 発行済みのバンクアカウントでは
countryはオプションです (method ごとにデフォルト設定されます)。外部の バンク アカウントでは明示的に指定してください。ウォレットアカウントには country はまったくありません。 - 発行済みのバンクアカウントでは
settlement.accountIdが必須です。バンクアカウントへの入金から決済された資金を受け取る発行済みウォレットアカウントを指定します。 - 発行済みのアカウントは
details(IBAN またはルーティングとアカウントもしくはアドレス)、バージョン管理されたrouting(入金座標はローテーションする可能性があるため、常に最新の読み取りをレンダリングしてください)、fees、balancesを公開します。 - ネットワーク:
polygon、ethereum、base、arbitrum、optimism、bsc、avalanche。 - capability のゲートは 発行済み アカウントにのみ適用されます。ready でない capability に対して作成すると、capability コード付きエラーで失敗します。まず capability を要求してください (2.2)。外部アカウントには capability は必要なく (customer の承認も不要)、リクエストスキーマおよびバンク詳細のバリデーションのみ受けます。
- 発行済みのバンクアカウントは
provisioning、details: nullで生まれます。readyになるまで、アカウントをポーリングするかaccount.status_changedを監視してください。 DELETEはアーカイブであり、ハード削除ではありません。実行中の transfer から参照されているアカウントは409 account_has_active_transfersを返します。それらの transfer が終端状態に達した後、再試行してください。- v3 での新規機能: Rules、発行済みウォレットアカウント上の常設指示 (
POST/GET /v3/customers/{customerId}/rules、GET/PATCH/DELETE .../rules/{ruleId}) で、入金を別のアカウントまたはウォレット destination に自動スイープします。v1 または v2 に対応するものはありません。
2.5 Recipient と destination
v2 には recipient の概念がありませんでした。v2 を利用していて第三者に支払っている場合、これは新しいサーフェスであり、リネームではありません。
- Recipient は誰か:
individual(姓名) またはbusiness(会社名) で、必須のrelationship(employee、contractor、vendor、subsidiary、merchant、customer、landlord、family、other) を持ちます。recipient と destination は第三者用のみです。第一者への payout では recipient はまったく使用しません。customer 自身のacc_アカウントの 1 つを quote のdestinationIdとしてターゲットにしてください (2.6)。 - Destination はどこか: method ごとに型付けされます。
sepa(iban、bic はオプション)、achまたはwire(routing とアカウント)、swift(完全な座標と中間銀行はオプション)、spei(clabe)、pse、transfers_3_0(cbu) など、加えてウォレット destination です。各 destination には独自のステータスがあります。destination.status_changedを監視してください。 - 法定通貨の destination には、作成 前 に recipient の完全な
address(通り、市、郵便番号、国) が必要です。欠けている部分があると422 recipient_address_requiredで失敗します。ウォレット destination では address はスキップしますが、トップレベルのownership(self_custodied、またはcustodialの場合はカストディアン名) が必要です。 - 受取人名の正確さは重要です。受取銀行はアカウントの 法的な 名前を照合します。表示用のニックネームではなく、正確な法的姓名または会社名を送信してください。
- method ごとの destination フィールドスキーマは OpenAPI 仕様にあります。
2.6 Quote と transfer
destinationIdはacc_(customer 所有のアカウント) またはdst_(recipient の destination) の id を取ります。法定通貨で資金供給される quote (payin) はacc_アカウントをターゲットにする必要があります。dst_のターゲットは常に payout を意味します (そうでなければ422 quote_direction_invalid)。- quote と transfer の
externalIdは非一意の相関参照です (読み取り時にエコーされ、一覧でフィルタ可能)。環境ごとの一意性ルール (2.1) は customer のexternalIdにのみ適用されます。 - quote は 1 回だけ、
expiresAt前に実行してください。期限切れの quote は409 quote_expiredで失敗し、2 回目の実行は409 quote_already_executedで失敗します (問題ボディには既存のtransferIdが含まれます)。 - transfer のキャンセルはまだサポートされていません。
POST .../cancelはすべての状態で409 transfer_not_cancelableを返します。現在のcanceledtransfer は、未資金供給の payin で資金供給ウィンドウが期限切れになったことによるもので、このエンドポイントによるものではありません。 - payin は
awaiting_fundsで開始します。支払者にGET .../instructionsをレンダリングしてください。法定通貨の場合はバンク座標と 参照またはメモコード、暗号通貨の場合は入金アドレスです。参照コードは入金がマッチされる方法です。常に表示してください。 - 機械可読なサブステート用に
stateとstateDetailがあります。action_requiredはコンプライアンス task が付随していることを意味し (openTaskIds、GET .../tasks)、submission で回答してください。 - 発行済みアカウントで検出された入金は、
origin: "inbound_deposit"(vs"quoted") の transfer として現れます。 - 支払ネットワークの参照は
referencesの下に統合されています:transactionHash、traceNumber、imad、uetr、explorerUrl、returnedTransferId。
移行に関する 2 つの警告:
- transfer はバージョンを跨ぎません。 v1 または v2 で作成された transfer は v3 から読み取れません。一覧では省略され、
GET /v3/transfers/{transferId}は 404 になります。まず 作成 を切り替えてください。それらの transfer が終端状態に達するまで v1 の読み取りパスを維持し、それから廃止してください。 - トークンスワップはありません。
stablecoin_moveでは入力と出力で同じ通貨が必要です。USDC から USDT は422 recipient_destination_invalidで失敗し、currency_mismatchフィールドエラーを伴います。両側で同じネットワーク、ブリッジなし、ウォレット間の移動は現在、手数料ゼロの配送のみをサポートしています。プラットフォームまたはデベロッパー手数料がゼロでない quote は422 amount_not_deliverableで失敗します。
2.7 Webhook
イベントカタログ:
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は、配信ログ、再試行、手動リプレイのためのホスト型管理ポータル URL を返します。transfer.createdは現在、レガシー v1 のペイロード形状で配信されます (v1 の webhook が廃止されると v3 のエンベロープが有効になります)。これは純粋にヒントとして扱い、transfer を GET してください。そのボディに対して構築しないでください。- イベントはヒントです。受信時にはリソースを GET し、読み取りに基づいて動作してください。イベントペイロードや順序に基づいて状態を構築しないでください。配信は少なくとも 1 回であり、遅延または並べ替えの可能性があります。イベント id で重複排除し、各一覧の inclusive な
updatedAfterフィルタで見逃したイベントを回復してください。 - バージョン廃止のマシンチャンネルである
api.deprecationを購読してください。 - 現時点で
task.*イベントはありません。送信後は task またはその親をポーリングしてください。
2.8 サンドボックス
同じベース URL。環境はサンドボックスの API キーによって選択されます。
v3 のサンドボックスはレビューのループをエンドツーエンドでシミュレートします。task を作成し、それに対して送信し、
accepted または rejected に review を行い、capability がブロック解除されるのを確認します。本番環境の前にリメディエーション UX をリハーサルしてください。サンドボックスで作成された task と、要求した capability に現れる通常の intake task の両方がこの方法でレビュー可能です。本番と同様、task の webhook は発火しません。ポーリングしてください (2.7)。
2.9 v3 に代替のないレガシーエンドポイント
これらには v3 の代替がありません。ほとんどは v1 のまま変更されずに残ります (既存の呼び出しを維持してください)。2 つは完全に廃止されます (処置を参照):
その他のすべての公開 v1 または v2 エンドポイントは、上のマッピング表に記載されています。
2.10 推奨移行順序
各ステップは独立して出荷できます。v1 または v2 と v3 は同じ customer ベースに対して並行して稼働します。本番で繰り返す前に、サンドボックスキーで各ステップをリハーサルしてください (2.8)。1
配管
すべての作用のあるリクエスト (POST、PATCH、PUT、DELETE。サンドボックスエンドポイントは免除) で
Idempotency-Key、金額は文字列で、カーソルページネーションのヘルパー。2
Webhook
イベントごとに v3 エンドポイントを登録してください。
api.deprecation を含みます。v1 の単一エンドポイント設定は別のサーフェスであり、そのままにしておいてください。両者はステップ 9 のドレインまで並行して稼働します。3
プロフィールの充実化
保持している完全なプロフィールで
PATCH /v3/customers/{id} を実行し (v1 の収集内容は v3 の公開内容より少ない)、metadata を再設定します。これを customer ごとに 最初の v3 書き込み として意図的に行ってください。サニタイズされたビューが永続化される前に、それを埋めます (2.1)。4
読み取り
customer、capability、および account の読み取りを v3 に向けます。customer ステータスのロジックは 1.3 に従って書き換えます。ステップ 3 の後にのみ、充実化されていない読み取りは legacy-invalid フィールドが欠けた状態で返されます。
5
オンボーディングの書き込み
POST /v3/customers で作成し、/rails、/banks、または application の代わりに capability を要求し、task ループを構築します (最大の新規 UI 作業、tasks-preview が依頼内容を事前に表示するのに役立ちます)。この時点から、v3 主導の customer に対して /v1/documents の POST を停止してください。それらは capability のブロックを解除しません (2.3)。6
Account
v3 経由で発行し、インポートを
origin: external に移行してください。7
Payout
Recipient と destination、次に quote と transfer。
8
Payin
Quote、transfer、instructions。参照コードのレンダリングは継続してください。
9
ドレイン
transfer はバージョンを跨ぎません (2.6)。そこで作成された transfer のために v1 または v2 の読み取りパスと v1 webhook エンドポイントを維持し、それらが終端状態に達するまでデュアルリードし、その後古いクライアントと v1 webhook 設定を廃止してください。
2.11 落とし穴チェックリスト
- 論理的な操作 ごとに新しい UUID を生成し、ジョブと共に永続化して再試行時に再利用します。ボディを変えたキーは決して再利用しないでください (
409 idempotency_conflict)。サンドボックスエンドポイントはヘッダーから免除されます。 - 他の v3 書き込みの前に、既存の customer を充実化してください (完全なプロフィールを
PATCHし、metadataを再設定します。引き継がれません)。最初の v3 書き込みでサニタイズされたビューが永続化されます。 -
externalIdは環境ごとに一意であり、アーカイブでは解放されません。再利用予定ならDELETEの前にPATCHでクリアしてください。 - customer の
statusフィールドは存在しません。準備状態は capability ごとに導出してください。 -
action_requiredとin_reviewはどちらもオープンな task を意味します。 - submission はレビューによって制御され (送信はブロック解除と同じではない)、正確な
taskRevisionで すべての 実施可能な要件に回答しなければなりません。不一致の場合は再読み込みして再構築してください。 -
task.*webhook は存在しません。送信のたびに task (またはその親) をポーリングしてください。 -
changes_requestedの再試行は、task を再読み込みし、新しい回答で、新しい冪等性キー で行うことを意味します。 -
/v1/documentsへの POST は v3 の capability のブロックを解除することはありません。customer が task に乗ったら、すべての依頼を task を通じて駆動してください。 - すでに
readyの capability にも新しい task が現れる可能性があります。オンボーディング時だけでなく、その後も task ループを配線しておいてください。 - capability の
cancelは、pendingまたはrestrictedから、かつブロッキングリソースがない場合にのみ機能します (409 capability_not_cancelable)。キャンセル後の再要求は、新しい冪等性キーによる新規作成です。 - account の発行や quote 実行の前に、capability が
readyである必要があります。 - quote は片側だけに金額を指定します。direction フィールドはありません。
expiresAt前に 1 回だけ実行してください (409 quote_expiredまたは409 quote_already_executed)。 - ステーブルコイン移動は同じ通貨、同じネットワークのみです (USDC から USDT は
422で失敗)。ウォレット間は手数料ゼロの配送のみをサポートします。 -
DELETEはアーカイブであり、ハード削除ではありません。account 削除は実行中の transfer によりブロックされます (409 account_has_active_transfers)。customer 削除はさらに、アーカイブされていない account によりブロックされます (409 customer_has_active_resources、blockingResources[]にそれらが名前付けされます)。 - v1 または v2 の transfer は v3 の読み取りから不可視です (一覧では省略、GET は 404)。ドレインされるまでデュアルリードし、その後古いパスを廃止してください。
- 入金の
routingおよび instructions はローテーションする可能性があります。常に最新の GET をレンダリングし、参照コードを常に表示してください。 - webhook はヒントです。真実は GET であり、イベント id で重複排除し、
updatedAfterで見逃したイベントを回復してください。