[{"data":1,"prerenderedAt":165},["ShallowReactive",2],{"content-\u002Fprompts\u002Fmigrate-from-manual-payouts":3,"prompts-category-migrations":99},{"id":4,"title":5,"author":6,"body":7,"categories":6,"category":83,"categoryType":6,"date":84,"description":85,"extension":86,"faq":6,"howto":6,"isBlog":87,"isChangelog":87,"meta":88,"navigation":89,"path":90,"pillar":87,"products":91,"rawbody":95,"seo":96,"stem":97,"thumbnail":6,"updated":6,"__hash__":98},"content\u002Fprompts\u002Fmigrate-from-manual-payouts.md","Migrate from manual bank payouts to the API",null,{"type":8,"value":9,"toc":77},"minimark",[10,14,19,30,34,47,51],[11,12,13],"p",{},"Paste this prompt into your coding agent to replace CSV uploads and bank portals with programmatic payouts.",[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 my payout operation from a manual process (spreadsheets, bank portal uploads, ops people confirming transfers) to automated BlindPay stablecoin payouts.\n\nBefore writing code, read these sources and follow them over any prior knowledge:\n- https:\u002F\u002Fblindpay.com\u002Fdocs\u002Fllms.txt (read the payout quickstart, customers, bank accounts, quotes, and webhooks pages)\n- The OpenAPI spec: curl https:\u002F\u002Fapi.blindpay.com\u002Fdoc\n\nDo the migration in this order:\n1. Inventory the current process: where payee data lives (spreadsheet columns, database tables), which currencies and rails we pay, who approves what, and how completion is confirmed today. Produce a field-by-field mapping to BlindPay customers and bank accounts.\n2. Write an idempotent backfill that onboards existing payees: terms of service, create customer, wait for KYC via webhooks, then add bank accounts. It must be resumable, log every failure with a reason (missing tax ID, unsupported country, rejected KYC), and output an exceptions list for ops instead of crashing.\n3. Build the payout pipeline: for each due payment, quote (POST \u002Fv1\u002Finstances\u002F{instance_id}\u002Fquotes), execute (POST \u002Fv1\u002Finstances\u002F{instance_id}\u002Fpayouts\u002Fevm) before quote expiry, and record the po_ ID. Preserve any existing human approval step as a gate before execution rather than removing it.\n4. Replace manual confirmation with payout.complete webhooks (Svix-verified) updating my records, plus a daily reconciliation report comparing my ledger against BlindPay payout statuses.\n5. Keep a manual-mode fallback per payee so ops can exclude edge cases from automation during the transition.\n\nConstraints:\n- Amounts in integer minor units; API keys server-side only.\n- Test the whole pipeline on a development instance first, including the sentinel failure amounts ($666.00 forces failed, $777.00 forces refunded) to prove the failure paths work.\n- Never initiate the same payment twice: key payouts on my own payment ID and check for an existing po_ before creating.\n\nDeliverables: the field mapping, backfill script with exceptions report, the payout pipeline with approval gate, webhook-driven status updates, and the reconciliation report.\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",{},"Export a sample of your current payee spreadsheet and share the columns with the agent.",[38,42,43],{},"Run the backfill on a development instance first and review the exceptions list.",[38,45,46],{},"Keep ops in the loop: the approval gate and exceptions report are what make the cutover safe.",[15,48,50],{"id":49},"related-docs","Related docs",[52,53,54,63,70],"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\u002Flearn\u002Fcustomers",[61],"Customers",[38,71,72],{},[57,73,76],{"href":74,"rel":75},"https:\u002F\u002Fblindpay.com\u002Fdocs\u002Flearn\u002Fsandbox-vs-production",[61],"Sandbox vs production",{"title":26,"searchDepth":78,"depth":78,"links":79},2,[80,81,82],{"id":17,"depth":78,"text":18},{"id":32,"depth":78,"text":33},{"id":49,"depth":78,"text":50},"migrations","2026-08-26","Turn a spreadsheet-and-bank-portal payout operation into an automated, webhook-driven API flow with an auditable state machine.","md",false,{},true,"\u002Fprompts\u002Fmigrate-from-manual-payouts",[92,93,94],"payouts","compliance","webhooks","---\ntitle: \"Migrate from manual bank payouts to the API\"\ndescription: \"Turn a spreadsheet-and-bank-portal payout operation into an automated, webhook-driven API flow with an auditable state machine.\"\ndate: \"2026-08-26\"\ncategory: \"migrations\"\nproducts: [\"payouts\", \"compliance\", \"webhooks\"]\n---\n\nPaste this prompt into your coding agent to replace CSV uploads and bank portals with programmatic payouts.\n\n## Prompt\n\n```text\nYou are migrating my payout operation from a manual process (spreadsheets, bank portal uploads, ops people confirming transfers) to automated BlindPay stablecoin payouts.\n\nBefore writing code, read these sources and follow them over any prior knowledge:\n- https:\u002F\u002Fblindpay.com\u002Fdocs\u002Fllms.txt (read the payout quickstart, customers, bank accounts, quotes, and webhooks pages)\n- The OpenAPI spec: curl https:\u002F\u002Fapi.blindpay.com\u002Fdoc\n\nDo the migration in this order:\n1. Inventory the current process: where payee data lives (spreadsheet columns, database tables), which currencies and rails we pay, who approves what, and how completion is confirmed today. Produce a field-by-field mapping to BlindPay customers and bank accounts.\n2. Write an idempotent backfill that onboards existing payees: terms of service, create customer, wait for KYC via webhooks, then add bank accounts. It must be resumable, log every failure with a reason (missing tax ID, unsupported country, rejected KYC), and output an exceptions list for ops instead of crashing.\n3. Build the payout pipeline: for each due payment, quote (POST \u002Fv1\u002Finstances\u002F{instance_id}\u002Fquotes), execute (POST \u002Fv1\u002Finstances\u002F{instance_id}\u002Fpayouts\u002Fevm) before quote expiry, and record the po_ ID. Preserve any existing human approval step as a gate before execution rather than removing it.\n4. Replace manual confirmation with payout.complete webhooks (Svix-verified) updating my records, plus a daily reconciliation report comparing my ledger against BlindPay payout statuses.\n5. Keep a manual-mode fallback per payee so ops can exclude edge cases from automation during the transition.\n\nConstraints:\n- Amounts in integer minor units; API keys server-side only.\n- Test the whole pipeline on a development instance first, including the sentinel failure amounts ($666.00 forces failed, $777.00 forces refunded) to prove the failure paths work.\n- Never initiate the same payment twice: key payouts on my own payment ID and check for an existing po_ before creating.\n\nDeliverables: the field mapping, backfill script with exceptions report, the payout pipeline with approval gate, webhook-driven status updates, and the reconciliation report.\n```\n\n## How to use\n\n1. Export a sample of your current payee spreadsheet and share the columns with the agent.\n2. Run the backfill on a development instance first and review the exceptions list.\n3. Keep ops in the loop: the approval gate and exceptions report are what make the cutover safe.\n\n## Related docs\n\n- [Payout quickstart](https:\u002F\u002Fblindpay.com\u002Fdocs\u002Fquickstart-payout)\n- [Customers](https:\u002F\u002Fblindpay.com\u002Fdocs\u002Flearn\u002Fcustomers)\n- [Sandbox vs production](https:\u002F\u002Fblindpay.com\u002Fdocs\u002Flearn\u002Fsandbox-vs-production)\n",{"title":5,"description":85},"prompts\u002Fmigrate-from-manual-payouts","WHh9iRiupVMUZ-F2iKBJ2R-WsuW3ndNYos3zgNzxQfw",[100,104,108,112,116,120,124,128,132,136,140,144,148,152,156,160,164],{"path":101,"title":102,"description":103},"\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":105,"title":106,"description":107},"\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":109,"title":110,"description":111},"\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":113,"title":114,"description":115},"\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":117,"title":118,"description":119},"\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":121,"title":122,"description":123},"\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":125,"title":126,"description":127},"\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":129,"title":130,"description":131},"\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":133,"title":134,"description":135},"\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":137,"title":138,"description":139},"\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":141,"title":142,"description":143},"\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":145,"title":146,"description":147},"\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":149,"title":150,"description":151},"\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":153,"title":154,"description":155},"\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":157,"title":158,"description":159},"\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":161,"title":162,"description":163},"\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":90,"title":5,"description":85},1787868850883]