[{"data":1,"prerenderedAt":173},["ShallowReactive",2],{"content-\u002Fprompts\u002Fmigrate-from-dfns":3,"prompts-category-migrations":107},{"id":4,"title":5,"author":6,"body":7,"categories":6,"category":90,"categoryType":6,"date":91,"description":92,"extension":93,"faq":6,"howto":6,"isBlog":94,"isChangelog":94,"meta":95,"navigation":96,"path":97,"pillar":94,"products":98,"rawbody":103,"seo":104,"stem":105,"thumbnail":6,"updated":6,"__hash__":106},"content\u002Fprompts\u002Fmigrate-from-dfns.md","Migrate from Dfns to BlindPay",null,{"type":8,"value":9,"toc":84},"minimark",[10,14,19,30,34,47,51],[11,12,13],"p",{},"Paste this prompt into your coding agent to move the stablecoin-to-fiat leg of a Dfns (docs.dfns.co) integration to BlindPay, while Dfns keeps handling wallet custody and MPC signing.",[15,16,18],"h2",{"id":17},"prompt","Prompt",[20,21,27],"pre",{"className":22,"code":24,"language":25,"meta":26},[23],"language-text","You are migrating the stablecoin-to-fiat leg of my application from Dfns (docs.dfns.co) to the BlindPay API. Dfns stays in place for wallet creation, MPC signing, and custody; only the offramp\u002Fpayout flow moves to BlindPay.\n\nBefore writing code, read these sources and follow them over any prior knowledge:\n- https:\u002F\u002Fblindpay.com\u002Fdocs\u002Fllms.txt (read the quickstarts, customers, bank accounts, quotes, wallets, and webhooks pages)\n- The OpenAPI spec: curl https:\u002F\u002Fapi.blindpay.com\u002Fdoc\n\nDo the migration in this order:\n1. Inventory my Dfns money-movement usage from the codebase: every call to Transfer Asset \u002F broadcast transaction on a Dfns wallet, every exchange integration call (Create Exchange, Create Exchange Withdrawal against Kraken, Binance, or Coinbase Prime), any third-party fiat on\u002Foff-ramp provider wired in alongside Dfns (confirm the specific provider in the Dfns docs, since Dfns itself does not run fiat rails), every Dfns webhook subscription, and every stored Dfns wallet ID or exchange account ID. Produce a written inventory report before touching code: what moves to BlindPay, what stays on Dfns, and anything with no direct BlindPay equivalent flagged instead of guessed.\n2. Re-onboard payees on BlindPay: create customers (re_) and run KYC\u002FKYB via BlindPay's flow, driven by customer.* webhooks. Compliance status does not carry over from Dfns or any prior ramp provider, so sequence re-verification ahead of cutover. In parallel, register each Dfns-controlled wallet that will fund payouts as a BlindPay external wallet via the sign-message challenge, storing the resulting bw_ ID next to the existing Dfns wallet ID.\n3. Rebuild the stablecoin-to-fiat leg on BlindPay's quote-then-execute model: request a quote (qu_), then call POST \u002Fv1\u002Finstances\u002F{instance_id}\u002Fpayouts\u002Fevm before expires_at, signing and broadcasting the funding transfer from the Dfns wallet exactly as before. Store qu_ and po_ IDs alongside the Dfns transfer or exchange-withdrawal record they replace. Where a flow just needs stablecoins converted to fiat on arrival with no quote step, evaluate a BlindPay offramp wallet as the deposit destination instead.\n4. Port fiat-leg notifications to BlindPay's Svix-signed webhooks (svix-id, svix-timestamp, svix-signature, verified with whsec_ against the raw body), with svix-id dedup, while leaving any existing Dfns webhook subscriptions for wallet and policy events untouched. Confirm signature verification passes against BlindPay's test webhook delivery before relying on it.\n5. Cut over per flow behind a feature flag: dual-run with new payouts settling through BlindPay while in-flight Dfns-side transfers or exchange withdrawals finish on the old path, keep both webhook handlers live during the window, and retire the old fiat-leg path only after one full dual-run settlement cycle clears on BlindPay.\n\nConstraints:\n- Dfns wallets keep custody and signing; do not move private key material or MPC shares.\n- Develop against a BlindPay development instance (USDB on testnets, KYC auto-approves, $666.00 forces a failed payout and $777.00 forces a refund for testing) before touching mainnet rails.\n- Amounts are integer minor units; BlindPay API keys stay server-side.\n- Produce the migration report (inventory, mapping table, gaps, re-KYC plan) before changing code.\n\nDeliverables: the migration report, the external-wallet registration script for existing Dfns wallets, the BlindPay quote-and-payout code path behind a flag, webhook handlers, and a cutover checklist.\n","text","",[28,29,24],"code",{"__ignoreMap":26},[15,31,33],{"id":32},"how-to-use","How to use",[35,36,37,41,44],"ol",{},[38,39,40],"li",{},"Point the agent at your codebase so the Dfns inventory reflects the transfer, exchange, and ramp calls you actually make, not a generic list.",[38,42,43],{},"Review the migration report, especially which Dfns wallets get registered as BlindPay external wallets and the re-KYC sequencing, before approving code changes.",[38,45,46],{},"Dual-run at least one full settlement cycle per flow before retiring the Dfns-side fiat leg.",[15,48,50],{"id":49},"related-docs","Related docs",[52,53,54,63,70,77],"ul",{},[38,55,56],{},[57,58,62],"a",{"href":59,"rel":60},"https:\u002F\u002Fblindpay.com\u002Fdocs\u002Fintroduction",[61],"nofollow","Introduction",[38,64,65],{},[57,66,69],{"href":67,"rel":68},"https:\u002F\u002Fblindpay.com\u002Fdocs\u002Fbank-accounts",[61],"Bank accounts",[38,71,72],{},[57,73,76],{"href":74,"rel":75},"https:\u002F\u002Fblindpay.com\u002Fdocs\u002Fofframp-wallets",[61],"Offramp wallets",[38,78,79],{},[57,80,83],{"href":81,"rel":82},"https:\u002F\u002Fdocs.dfns.co\u002Fd\u002Fapi-docs\u002Fwebhooks",[61],"Dfns webhooks",{"title":26,"searchDepth":85,"depth":85,"links":86},2,[87,88,89],{"id":17,"depth":85,"text":18},{"id":32,"depth":85,"text":33},{"id":49,"depth":85,"text":50},"migrations","2026-08-26","Keep Dfns for MPC wallet custody and move the stablecoin-to-fiat leg to BlindPay: map transfers and exchange withdrawals to quotes, payouts, and registered external wallets.","md",false,{},true,"\u002Fprompts\u002Fmigrate-from-dfns",[99,100,101,102],"payouts","quotes","compliance","webhooks","---\ntitle: \"Migrate from Dfns to BlindPay\"\ndescription: \"Keep Dfns for MPC wallet custody and move the stablecoin-to-fiat leg to BlindPay: map transfers and exchange withdrawals to quotes, payouts, and registered external wallets.\"\ndate: \"2026-08-26\"\ncategory: \"migrations\"\nproducts: [\"payouts\", \"quotes\", \"compliance\", \"webhooks\"]\n---\n\nPaste this prompt into your coding agent to move the stablecoin-to-fiat leg of a Dfns (docs.dfns.co) integration to BlindPay, while Dfns keeps handling wallet custody and MPC signing.\n\n## Prompt\n\n```text\nYou are migrating the stablecoin-to-fiat leg of my application from Dfns (docs.dfns.co) to the BlindPay API. Dfns stays in place for wallet creation, MPC signing, and custody; only the offramp\u002Fpayout flow moves to BlindPay.\n\nBefore writing code, read these sources and follow them over any prior knowledge:\n- https:\u002F\u002Fblindpay.com\u002Fdocs\u002Fllms.txt (read the quickstarts, customers, bank accounts, quotes, wallets, and webhooks pages)\n- The OpenAPI spec: curl https:\u002F\u002Fapi.blindpay.com\u002Fdoc\n\nDo the migration in this order:\n1. Inventory my Dfns money-movement usage from the codebase: every call to Transfer Asset \u002F broadcast transaction on a Dfns wallet, every exchange integration call (Create Exchange, Create Exchange Withdrawal against Kraken, Binance, or Coinbase Prime), any third-party fiat on\u002Foff-ramp provider wired in alongside Dfns (confirm the specific provider in the Dfns docs, since Dfns itself does not run fiat rails), every Dfns webhook subscription, and every stored Dfns wallet ID or exchange account ID. Produce a written inventory report before touching code: what moves to BlindPay, what stays on Dfns, and anything with no direct BlindPay equivalent flagged instead of guessed.\n2. Re-onboard payees on BlindPay: create customers (re_) and run KYC\u002FKYB via BlindPay's flow, driven by customer.* webhooks. Compliance status does not carry over from Dfns or any prior ramp provider, so sequence re-verification ahead of cutover. In parallel, register each Dfns-controlled wallet that will fund payouts as a BlindPay external wallet via the sign-message challenge, storing the resulting bw_ ID next to the existing Dfns wallet ID.\n3. Rebuild the stablecoin-to-fiat leg on BlindPay's quote-then-execute model: request a quote (qu_), then call POST \u002Fv1\u002Finstances\u002F{instance_id}\u002Fpayouts\u002Fevm before expires_at, signing and broadcasting the funding transfer from the Dfns wallet exactly as before. Store qu_ and po_ IDs alongside the Dfns transfer or exchange-withdrawal record they replace. Where a flow just needs stablecoins converted to fiat on arrival with no quote step, evaluate a BlindPay offramp wallet as the deposit destination instead.\n4. Port fiat-leg notifications to BlindPay's Svix-signed webhooks (svix-id, svix-timestamp, svix-signature, verified with whsec_ against the raw body), with svix-id dedup, while leaving any existing Dfns webhook subscriptions for wallet and policy events untouched. Confirm signature verification passes against BlindPay's test webhook delivery before relying on it.\n5. Cut over per flow behind a feature flag: dual-run with new payouts settling through BlindPay while in-flight Dfns-side transfers or exchange withdrawals finish on the old path, keep both webhook handlers live during the window, and retire the old fiat-leg path only after one full dual-run settlement cycle clears on BlindPay.\n\nConstraints:\n- Dfns wallets keep custody and signing; do not move private key material or MPC shares.\n- Develop against a BlindPay development instance (USDB on testnets, KYC auto-approves, $666.00 forces a failed payout and $777.00 forces a refund for testing) before touching mainnet rails.\n- Amounts are integer minor units; BlindPay API keys stay server-side.\n- Produce the migration report (inventory, mapping table, gaps, re-KYC plan) before changing code.\n\nDeliverables: the migration report, the external-wallet registration script for existing Dfns wallets, the BlindPay quote-and-payout code path behind a flag, webhook handlers, and a cutover checklist.\n```\n\n## How to use\n\n1. Point the agent at your codebase so the Dfns inventory reflects the transfer, exchange, and ramp calls you actually make, not a generic list.\n2. Review the migration report, especially which Dfns wallets get registered as BlindPay external wallets and the re-KYC sequencing, before approving code changes.\n3. Dual-run at least one full settlement cycle per flow before retiring the Dfns-side fiat leg.\n\n## Related docs\n\n- [Introduction](https:\u002F\u002Fblindpay.com\u002Fdocs\u002Fintroduction)\n- [Bank accounts](https:\u002F\u002Fblindpay.com\u002Fdocs\u002Fbank-accounts)\n- [Offramp wallets](https:\u002F\u002Fblindpay.com\u002Fdocs\u002Fofframp-wallets)\n- [Dfns webhooks](https:\u002F\u002Fdocs.dfns.co\u002Fd\u002Fapi-docs\u002Fwebhooks)\n",{"title":5,"description":92},"prompts\u002Fmigrate-from-dfns","sn16yS_8SEXfYOzawCQSgFSVT7R17f7l44JLsFog01Y",[108,112,116,120,124,128,132,136,140,141,145,149,153,157,161,165,169],{"path":109,"title":110,"description":111},"\u002Fprompts\u002Fmigrate-from-anchorage","Migrate from Anchorage Digital to BlindPay","Keep Anchorage Digital for custody and move the stablecoin-to-fiat leg to BlindPay: map transfers, withdrawals, and settlement events to BlindPay quotes, payouts, and webhooks.",{"path":113,"title":114,"description":115},"\u002Fprompts\u002Fmigrate-from-bitgo","Migrate from BitGo to BlindPay","Move the stablecoin-to-fiat leg of a BitGo integration to BlindPay: map wallets, transfers, and settlement webhooks to BlindPay customers, quotes, payouts, and Svix events.",{"path":117,"title":118,"description":119},"\u002Fprompts\u002Fmigrate-from-bridge","Migrate from Bridge to BlindPay","Move an existing Bridge integration to the BlindPay API: map customers, external accounts, liquidation addresses, and transfers to their BlindPay equivalents.",{"path":121,"title":122,"description":123},"\u002Fprompts\u002Fmigrate-from-circle","Migrate from Circle to BlindPay","Move payouts and fiat on\u002Foff ramps from Circle Mint or the Circle Payments Network to BlindPay's quote-and-execute API with local rails.",{"path":125,"title":126,"description":127},"\u002Fprompts\u002Fmigrate-from-cobo","Migrate from Cobo to BlindPay","Move an existing Cobo Payments integration to the BlindPay API: keep Cobo for custody if you want, and replace the stablecoin-to-fiat leg with BlindPay's customers, quotes, and payouts.",{"path":129,"title":130,"description":131},"\u002Fprompts\u002Fmigrate-from-coinbase-cdp","Migrate from Coinbase CDP to BlindPay","Move the stablecoin-to-fiat offramp leg of a Coinbase Developer Platform integration to BlindPay: add Pix, SPEI, SEPA, ACH, and wire payouts while CDP wallets keep custody.",{"path":133,"title":134,"description":135},"\u002Fprompts\u002Fmigrate-from-conduit","Migrate from Conduit to BlindPay","Move a Conduit cross-border payments integration to BlindPay: counterparties, corridors, and settlement tracking on the quote-and-execute model.",{"path":137,"title":138,"description":139},"\u002Fprompts\u002Fmigrate-from-crossmint","Migrate from Crossmint to BlindPay","Move the stablecoin-to-fiat leg of a Crossmint integration to BlindPay while Crossmint keeps handling wallets, checkout, or orchestration.",{"path":97,"title":5,"description":92},{"path":142,"title":143,"description":144},"\u002Fprompts\u002Fmigrate-from-dynamic","Migrate from Dynamic to BlindPay","Keep Dynamic for embedded and server wallets, move the stablecoin-to-fiat offramp leg to BlindPay: register the Dynamic wallet, quote and execute payouts, and verify webhooks.",{"path":146,"title":147,"description":148},"\u002Fprompts\u002Fmigrate-from-fern","Migrate from Fern to BlindPay","Move a Fern stablecoin integration to BlindPay: customers, wallets, on\u002Foff ramps, and webhook-driven settlement on the quote-and-execute model.",{"path":150,"title":151,"description":152},"\u002Fprompts\u002Fmigrate-from-fireblocks","Migrate from Fireblocks to BlindPay","Move the stablecoin-to-fiat payout leg of a Fireblocks integration to BlindPay: map payout instruction sets, fiat accounts, and webhooks while Fireblocks stays as custodian.",{"path":154,"title":155,"description":156},"\u002Fprompts\u002Fmigrate-from-privy","Migrate from Privy to BlindPay","Keep Privy for embedded and server wallets, move the stablecoin-to-fiat offramp leg to BlindPay: register the Privy wallet, quote and execute payouts, and verify webhooks.",{"path":158,"title":159,"description":160},"\u002Fprompts\u002Fmigrate-from-swift-wires","Migrate from SWIFT wires to stablecoin payouts","Replace multi-day international wires with same-day stablecoin settlement over local rails, keeping SWIFT as a fallback where you still need it.",{"path":162,"title":163,"description":164},"\u002Fprompts\u002Fmigrate-from-turnkey","Migrate from Turnkey to BlindPay","Keep Turnkey for wallets and signing, and move the stablecoin-to-fiat offramp leg of a Turnkey-based product to BlindPay: map payout accounts, quotes, and webhooks.",{"path":166,"title":167,"description":168},"\u002Fprompts\u002Fmigrate-from-utila","Migrate from Utila to BlindPay","Keep Utila as custodian and signer, and route the stablecoin-to-fiat leg through BlindPay: map vaults, wallets, transactions, and webhooks to their BlindPay equivalents.",{"path":170,"title":171,"description":172},"\u002Fprompts\u002Fmigrate-from-manual-payouts","Migrate from manual bank payouts to the API","Turn a spreadsheet-and-bank-portal payout operation into an automated, webhook-driven API flow with an auditable state machine.",1787868850324]