[{"data":1,"prerenderedAt":173},["ShallowReactive",2],{"content-\u002Fprompts\u002Fmigrate-from-anchorage":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-anchorage.md","Migrate from Anchorage Digital 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 add BlindPay as the fiat offramp for an application that uses Anchorage Digital (Atlas, API custody, Porto self-custody) for stablecoin custody.",[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 adding BlindPay as the fiat offramp for my application. Anchorage Digital stays the custodian and signer for stablecoin balances (Atlas settlement, API custody operations, or Porto self-custody wallets). BlindPay only handles converting those stablecoins to fiat and paying out to a bank account.\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, payouts, and webhooks pages)\n- The OpenAPI spec: curl https:\u002F\u002Fapi.blindpay.com\u002Fdoc\n- https:\u002F\u002Fdocs.anchorage.com\u002Fknowledge-base\u002Fapi-reference\u002Fintroduction for how our existing Anchorage integration authenticates and what it calls\n\nDo the migration in this order:\n1. Inventory my Anchorage usage from the codebase: every Anchorage transfer, withdrawal, Atlas settlement, or webhook call, plus every stored Anchorage ID (vault ID, wallet ID, transfer ID, settlement ID). Note which Anchorage flows stay as-is (custody, signing, on-chain settlement) and which ones today end in an offramp to fiat, since only the latter move to BlindPay. Confirm exact endpoint names and payloads in the Anchorage docs rather than assuming, and flag anything with no direct BlindPay equivalent. Produce a written inventory report before touching code.\n2. Onboard the receiving parties as BlindPay customers: create a customer (re_) per payee with KYC or KYB data, add their payout bank account (ba_) for the correct rail (Pix, SPEI, SEPA, ACH, or wire), and store the resulting re_ and ba_ IDs against the same record that holds the Anchorage vault or wallet ID today.\n3. If stablecoins are staying in an Anchorage Porto or vault wallet until payout time, register that wallet with BlindPay as an external wallet using the sign-message challenge flow and store the resulting bw_ ID, so BlindPay can recognize funds sent from it without taking custody itself.\n4. Rebuild the offramp leg on BlindPay's two-step model: request a quote (qu_) for the payout amount and rail, then call POST \u002Fv1\u002Finstances\u002F{instance_id}\u002Fpayouts\u002Fevm to execute it as a payout (po_) before the quote's expires_at (about 5 minutes out). Replace whatever Anchorage transfer or withdrawal call currently ends a payout flow with this quote-then-execute pair, and confirm a payout reaches a terminal state end to end against a BlindPay development instance (USDB on testnets, KYC auto-approves) before moving on.\n5. Add BlindPay webhook handling alongside whatever Anchorage webhook or polling logic exists today: verify the Svix signature (svix-id, svix-timestamp, svix-signature) against the raw request body with your whsec_ signing secret, dedupe on svix-id, and update payout status from the payout events. Use the $666.00 and $777.00 sentinel amounts in the development instance to confirm the forced-failed and forced-refunded paths are both handled.\n6. Cut over per payout flow behind a feature flag: dual-run Anchorage's existing offramp path and the new BlindPay path side by side, compare outcomes on real payouts, and only remove the old offramp code once a full dual-run cycle settles cleanly on BlindPay and Anchorage still reconciles as the custody source of truth.\n\nConstraints:\n- Anchorage keeps custody and signing for anything not explicitly moved to BlindPay; do not build a second custody path.\n- API keys for both providers stay server-side only.\n- Amounts are integer minor units on both sides; no floating point money math anywhere in the payout path.\n- Develop and test the new path against a BlindPay development instance before touching production keys.\n\nDeliverables: the Anchorage usage inventory report, the customer and bank account onboarding script, the external wallet registration flow (if funds stay in Anchorage until payout), the quote-then-payout code path, webhook handlers with signature verification, and a cutover checklist per payout flow.\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",{},"Run the prompt against a branch with both an active Anchorage integration and a BlindPay development instance key on hand, and review the inventory report before letting the agent touch any onboarding or payout code.",[38,42,43],{},"Provision BlindPay bank accounts and, if wallets stay on Anchorage, complete external wallet registration for a small set of test payees first, then confirm the dual-run cycle settles before onboarding the rest.",[38,45,46],{},"Once one payout flow has run clean on BlindPay for a full settlement cycle, flip its feature flag and repeat the cutover checklist for the next flow rather than switching everything at once.",[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\u002Fquickstart-payout",[61],"nofollow","Payout quickstart",[38,64,65],{},[57,66,69],{"href":67,"rel":68},"https:\u002F\u002Fblindpay.com\u002Fdocs\u002Fblockchain-wallets",[61],"Blockchain wallets",[38,71,72],{},[57,73,76],{"href":74,"rel":75},"https:\u002F\u002Fblindpay.com\u002Fdocs\u002Flearn\u002Fwebhooks",[61],"Webhooks",[38,78,79],{},[57,80,83],{"href":81,"rel":82},"https:\u002F\u002Fdocs.anchorage.com\u002Fknowledge-base\u002Fapi-reference\u002Fintroduction",[61],"Anchorage API reference introduction",{"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 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.","md",false,{},true,"\u002Fprompts\u002Fmigrate-from-anchorage",[99,100,101,102],"payouts","quotes","compliance","webhooks","---\ntitle: \"Migrate from Anchorage Digital to BlindPay\"\ndescription: \"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.\"\ndate: \"2026-08-26\"\ncategory: \"migrations\"\nproducts: [\"payouts\", \"quotes\", \"compliance\", \"webhooks\"]\n---\n\nPaste this prompt into your coding agent to add BlindPay as the fiat offramp for an application that uses Anchorage Digital (Atlas, API custody, Porto self-custody) for stablecoin custody.\n\n## Prompt\n\n```text\nYou are adding BlindPay as the fiat offramp for my application. Anchorage Digital stays the custodian and signer for stablecoin balances (Atlas settlement, API custody operations, or Porto self-custody wallets). BlindPay only handles converting those stablecoins to fiat and paying out to a bank account.\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, payouts, and webhooks pages)\n- The OpenAPI spec: curl https:\u002F\u002Fapi.blindpay.com\u002Fdoc\n- https:\u002F\u002Fdocs.anchorage.com\u002Fknowledge-base\u002Fapi-reference\u002Fintroduction for how our existing Anchorage integration authenticates and what it calls\n\nDo the migration in this order:\n1. Inventory my Anchorage usage from the codebase: every Anchorage transfer, withdrawal, Atlas settlement, or webhook call, plus every stored Anchorage ID (vault ID, wallet ID, transfer ID, settlement ID). Note which Anchorage flows stay as-is (custody, signing, on-chain settlement) and which ones today end in an offramp to fiat, since only the latter move to BlindPay. Confirm exact endpoint names and payloads in the Anchorage docs rather than assuming, and flag anything with no direct BlindPay equivalent. Produce a written inventory report before touching code.\n2. Onboard the receiving parties as BlindPay customers: create a customer (re_) per payee with KYC or KYB data, add their payout bank account (ba_) for the correct rail (Pix, SPEI, SEPA, ACH, or wire), and store the resulting re_ and ba_ IDs against the same record that holds the Anchorage vault or wallet ID today.\n3. If stablecoins are staying in an Anchorage Porto or vault wallet until payout time, register that wallet with BlindPay as an external wallet using the sign-message challenge flow and store the resulting bw_ ID, so BlindPay can recognize funds sent from it without taking custody itself.\n4. Rebuild the offramp leg on BlindPay's two-step model: request a quote (qu_) for the payout amount and rail, then call POST \u002Fv1\u002Finstances\u002F{instance_id}\u002Fpayouts\u002Fevm to execute it as a payout (po_) before the quote's expires_at (about 5 minutes out). Replace whatever Anchorage transfer or withdrawal call currently ends a payout flow with this quote-then-execute pair, and confirm a payout reaches a terminal state end to end against a BlindPay development instance (USDB on testnets, KYC auto-approves) before moving on.\n5. Add BlindPay webhook handling alongside whatever Anchorage webhook or polling logic exists today: verify the Svix signature (svix-id, svix-timestamp, svix-signature) against the raw request body with your whsec_ signing secret, dedupe on svix-id, and update payout status from the payout events. Use the $666.00 and $777.00 sentinel amounts in the development instance to confirm the forced-failed and forced-refunded paths are both handled.\n6. Cut over per payout flow behind a feature flag: dual-run Anchorage's existing offramp path and the new BlindPay path side by side, compare outcomes on real payouts, and only remove the old offramp code once a full dual-run cycle settles cleanly on BlindPay and Anchorage still reconciles as the custody source of truth.\n\nConstraints:\n- Anchorage keeps custody and signing for anything not explicitly moved to BlindPay; do not build a second custody path.\n- API keys for both providers stay server-side only.\n- Amounts are integer minor units on both sides; no floating point money math anywhere in the payout path.\n- Develop and test the new path against a BlindPay development instance before touching production keys.\n\nDeliverables: the Anchorage usage inventory report, the customer and bank account onboarding script, the external wallet registration flow (if funds stay in Anchorage until payout), the quote-then-payout code path, webhook handlers with signature verification, and a cutover checklist per payout flow.\n```\n\n## How to use\n\n1. Run the prompt against a branch with both an active Anchorage integration and a BlindPay development instance key on hand, and review the inventory report before letting the agent touch any onboarding or payout code.\n2. Provision BlindPay bank accounts and, if wallets stay on Anchorage, complete external wallet registration for a small set of test payees first, then confirm the dual-run cycle settles before onboarding the rest.\n3. Once one payout flow has run clean on BlindPay for a full settlement cycle, flip its feature flag and repeat the cutover checklist for the next flow rather than switching everything at once.\n\n## Related docs\n\n- [Payout quickstart](https:\u002F\u002Fblindpay.com\u002Fdocs\u002Fquickstart-payout)\n- [Blockchain wallets](https:\u002F\u002Fblindpay.com\u002Fdocs\u002Fblockchain-wallets)\n- [Webhooks](https:\u002F\u002Fblindpay.com\u002Fdocs\u002Flearn\u002Fwebhooks)\n- [Anchorage API reference introduction](https:\u002F\u002Fdocs.anchorage.com\u002Fknowledge-base\u002Fapi-reference\u002Fintroduction)\n",{"title":5,"description":92},"prompts\u002Fmigrate-from-anchorage","EaeDo9dWmTRltnsa3i0sy0yvlDmE_WoGtvBxTL0Ne_A",[108,109,113,117,121,125,129,133,137,141,145,149,153,157,161,165,169],{"path":97,"title":5,"description":92},{"path":110,"title":111,"description":112},"\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":114,"title":115,"description":116},"\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":118,"title":119,"description":120},"\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":122,"title":123,"description":124},"\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":126,"title":127,"description":128},"\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":130,"title":131,"description":132},"\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":134,"title":135,"description":136},"\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":138,"title":139,"description":140},"\u002Fprompts\u002Fmigrate-from-dfns","Migrate from Dfns to BlindPay","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.",{"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.",1787868849700]