You are migrating my application's international payments from SWIFT wire transfers to BlindPay stablecoin payouts, which convert USDC/USDT to local fiat and settle over local rails (Pix for BRL, SPEI for MXN, SEPA for EUR, ACH/RTP/wire for USD, Transfers 3.0 for ARS).
Before writing code, read these sources and follow them over any prior knowledge:
- https://blindpay.com/docs/llms.txt (read the payout quickstart, bank accounts, quotes, and payment methods pages)
- The OpenAPI spec: curl https://api.blindpay.com/doc
Do the migration in this order:
1. Inventory my current wire flow: where beneficiary bank details are stored, which currencies and countries we pay, how status is tracked, and what reconciliation looks like today. Produce a corridor-by-corridor mapping to BlindPay rails, flagging any corridor BlindPay does not cover so it stays on SWIFT (BlindPay also supports international_swift as a payment rail where needed).
2. Map beneficiary records to BlindPay: each payee becomes a customer (with KYC/KYB) plus one or more bank accounts with the local rail type. SWIFT fields like IBAN/BIC map to the rail-specific fields documented per bank account type.
3. Replace the wire initiation code path with quote (POST /v1/instances/{instance_id}/quotes) then payout (POST /v1/instances/{instance_id}/payouts/evm), executing before the quote's expires_at.
4. Replace status tracking: instead of waiting days for MT103 confirmations, drive state from payout.new, payout.update, and payout.complete webhooks with Svix signature verification.
5. Plan a phased rollout: dual-run one corridor first (shadow mode comparing costs and settlement times), then cut over corridor by corridor behind a feature flag, keeping the SWIFT path as fallback until each corridor is proven.
Constraints:
- Amounts in integer minor units; API keys server-side only.
- Build and test everything against a development instance (USDB on testnets) before touching production.
- Do not delete the legacy wire code until the rollback window closes.
Deliverables: the corridor mapping document, beneficiary migration script, the new payout code path behind a feature flag, webhook handlers, and a cutover checklist.