[{"data":1,"prerenderedAt":172},["ShallowReactive",2],{"content-\u002Fprompts\u002Fintegrate-external-wallet-payouts":3,"prompts-category-integrations":106},{"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":102,"seo":103,"stem":104,"thumbnail":6,"updated":6,"__hash__":105},"content\u002Fprompts\u002Fintegrate-external-wallet-payouts.md","Fund payouts from external wallets",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 when funds live in your users' own wallets, not managed ones, and payouts need an on-chain authorization step.",[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 integrating BlindPay payouts funded from customers' own blockchain wallets (not managed wallets) into my application, covering EVM chains, Solana, and Stellar.\n\nBefore writing code, read these sources and follow them over any prior knowledge:\n- https:\u002F\u002Fblindpay.com\u002Fdocs\u002Fllms.txt (read the blockchain wallets page and the per-chain payout guides: EVM, Solana, Stellar)\n- The OpenAPI spec: curl https:\u002F\u002Fapi.blindpay.com\u002Fdoc\n\nBuild the flow:\n1. Register the wallet: for EVM, fetch the challenge with GET \u002Fv1\u002Finstances\u002F{instance_id}\u002Fcustomers\u002F{customer_id}\u002Fblockchain-wallets\u002Fsign-message, have the user sign it in their wallet, then POST \u002Fv1\u002Finstances\u002F{instance_id}\u002Fcustomers\u002F{customer_id}\u002Fblockchain-wallets to get the bw_ ID. Handle the direct-address registration path where the docs allow it.\n2. Quote: POST \u002Fv1\u002Finstances\u002F{instance_id}\u002Fquotes with bank_account_id, network, and token. For EVM the response includes a contract object (address, abi, functionName \"approve\", blindpayContractAddress, amount, network): use it verbatim to build the ERC-20 approve transaction for the user's wallet. Never hardcode contract addresses.\n3. Authorize on-chain, per chain: EVM sends the approve transaction; Stellar authorizes and signs the XDR, executed via POST \u002Fv1\u002Finstances\u002F{instance_id}\u002Fpayouts\u002Fstellar; Solana uses token delegation per the docs.\n4. Execute: POST \u002Fv1\u002Finstances\u002F{instance_id}\u002Fpayouts\u002Fevm (or \u002Fstellar) with quote_id and sender_wallet_address, before the quote's expires_at. Because the on-chain step takes time, build the timing carefully: request the quote, get the authorization confirmed, and execute immediately; if the quote expired while waiting for the transaction, re-quote and reuse the existing allowance when it covers the new amount.\n5. Track payout.new\u002Fupdate\u002Fcomplete webhooks (Svix-verified) and surface on-chain failure separately from payout failure in my UI.\n\nConstraints:\n- API keys stay server-side; wallet signing happens client-side only.\n- Test on a development instance with USDB on testnets (base_sepolia or solana_devnet) end to end, including a deliberately expired quote.\n\nDeliverables: wallet registration flow (sign-message UX included), the per-chain authorization module, quote-execute orchestration with the expiry race handled, and webhook handlers.\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",{},"Tell the agent which chains you support; each has a different authorization step.",[38,42,43],{},"Wire the signing UX into your existing wallet connection (wagmi, solana wallet adapter, or Freighter).",[38,45,46],{},"Test the quote-expiry-during-authorization race explicitly; it is the flow's main failure mode.",[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\u002Fblockchain-wallets",[61],"nofollow","Blockchain wallets",[38,64,65],{},[57,66,69],{"href":67,"rel":68},"https:\u002F\u002Fblindpay.com\u002Fdocs\u002Fpayout-evm",[61],"EVM payouts",[38,71,72],{},[57,73,76],{"href":74,"rel":75},"https:\u002F\u002Fblindpay.com\u002Fdocs\u002Fpayout-stellar",[61],"Stellar payouts",[38,78,79],{},[57,80,83],{"href":81,"rel":82},"https:\u002F\u002Fblindpay.com\u002Fdocs\u002Fpayout-solana",[61],"Solana payouts",{"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},"integrations","2026-08-26","Let customers pay out from their own EVM, Solana, or Stellar wallets: signed-message registration plus the on-chain authorization step per chain.","md",false,{},true,"\u002Fprompts\u002Fintegrate-external-wallet-payouts",[99,100,101],"payouts","quotes","compliance","---\ntitle: \"Fund payouts from external wallets\"\ndescription: \"Let customers pay out from their own EVM, Solana, or Stellar wallets: signed-message registration plus the on-chain authorization step per chain.\"\ndate: \"2026-08-26\"\ncategory: \"integrations\"\nproducts: [\"payouts\", \"quotes\", \"compliance\"]\n---\n\nPaste this prompt into your coding agent when funds live in your users' own wallets, not managed ones, and payouts need an on-chain authorization step.\n\n## Prompt\n\n```text\nYou are integrating BlindPay payouts funded from customers' own blockchain wallets (not managed wallets) into my application, covering EVM chains, Solana, and Stellar.\n\nBefore writing code, read these sources and follow them over any prior knowledge:\n- https:\u002F\u002Fblindpay.com\u002Fdocs\u002Fllms.txt (read the blockchain wallets page and the per-chain payout guides: EVM, Solana, Stellar)\n- The OpenAPI spec: curl https:\u002F\u002Fapi.blindpay.com\u002Fdoc\n\nBuild the flow:\n1. Register the wallet: for EVM, fetch the challenge with GET \u002Fv1\u002Finstances\u002F{instance_id}\u002Fcustomers\u002F{customer_id}\u002Fblockchain-wallets\u002Fsign-message, have the user sign it in their wallet, then POST \u002Fv1\u002Finstances\u002F{instance_id}\u002Fcustomers\u002F{customer_id}\u002Fblockchain-wallets to get the bw_ ID. Handle the direct-address registration path where the docs allow it.\n2. Quote: POST \u002Fv1\u002Finstances\u002F{instance_id}\u002Fquotes with bank_account_id, network, and token. For EVM the response includes a contract object (address, abi, functionName \"approve\", blindpayContractAddress, amount, network): use it verbatim to build the ERC-20 approve transaction for the user's wallet. Never hardcode contract addresses.\n3. Authorize on-chain, per chain: EVM sends the approve transaction; Stellar authorizes and signs the XDR, executed via POST \u002Fv1\u002Finstances\u002F{instance_id}\u002Fpayouts\u002Fstellar; Solana uses token delegation per the docs.\n4. Execute: POST \u002Fv1\u002Finstances\u002F{instance_id}\u002Fpayouts\u002Fevm (or \u002Fstellar) with quote_id and sender_wallet_address, before the quote's expires_at. Because the on-chain step takes time, build the timing carefully: request the quote, get the authorization confirmed, and execute immediately; if the quote expired while waiting for the transaction, re-quote and reuse the existing allowance when it covers the new amount.\n5. Track payout.new\u002Fupdate\u002Fcomplete webhooks (Svix-verified) and surface on-chain failure separately from payout failure in my UI.\n\nConstraints:\n- API keys stay server-side; wallet signing happens client-side only.\n- Test on a development instance with USDB on testnets (base_sepolia or solana_devnet) end to end, including a deliberately expired quote.\n\nDeliverables: wallet registration flow (sign-message UX included), the per-chain authorization module, quote-execute orchestration with the expiry race handled, and webhook handlers.\n```\n\n## How to use\n\n1. Tell the agent which chains you support; each has a different authorization step.\n2. Wire the signing UX into your existing wallet connection (wagmi, solana wallet adapter, or Freighter).\n3. Test the quote-expiry-during-authorization race explicitly; it is the flow's main failure mode.\n\n## Related docs\n\n- [Blockchain wallets](https:\u002F\u002Fblindpay.com\u002Fdocs\u002Fblockchain-wallets)\n- [EVM payouts](https:\u002F\u002Fblindpay.com\u002Fdocs\u002Fpayout-evm)\n- [Stellar payouts](https:\u002F\u002Fblindpay.com\u002Fdocs\u002Fpayout-stellar)\n- [Solana payouts](https:\u002F\u002Fblindpay.com\u002Fdocs\u002Fpayout-solana)\n",{"title":5,"description":92},"prompts\u002Fintegrate-external-wallet-payouts","wK1R0JBpRNQaVB7z6nzG_V8n5NEGI069F7Tz7XAy3rw",[107,111,115,116,120,124,128,132,136,140,144,148,152,156,160,164,168],{"path":108,"title":109,"description":110},"\u002Fprompts\u002Fbuild-contractor-payouts","Build a global contractor payout product","Compose onboarding, bank accounts, quotes, payouts, and reconciliation into a complete pay-your-contractors feature across Pix, SPEI, SEPA, and ACH.",{"path":112,"title":113,"description":114},"\u002Fprompts\u002Fconnect-ai-agent-mcp","Connect an AI agent with the MCP server","Wire Claude, Cursor, or any MCP-compatible host to the BlindPay API with the official MCP server and agent skills, with guardrails for money movement.",{"path":97,"title":5,"description":92},{"path":117,"title":118,"description":119},"\u002Fprompts\u002Fintegrate-circle-wallets","Integrate Circle wallets with BlindPay","Fund BlindPay payouts from Circle developer-controlled wallets: sign the registration challenge and the ERC-20 approve through Circle's API instead of a browser wallet.",{"path":121,"title":122,"description":123},"\u002Fprompts\u002Fintegrate-dfns","Integrate Dfns with BlindPay","Fund BlindPay stablecoin payouts from Dfns MPC wallets: sign the registration challenge and the ERC-20 approve through Dfns's User Action Signature flow.",{"path":125,"title":126,"description":127},"\u002Fprompts\u002Fintegrate-fireblocks","Integrate Fireblocks with BlindPay","Fund BlindPay stablecoin payouts from Fireblocks vault accounts: MPC-signed wallet registration and the ERC-20 approve through Fireblocks' transactions API.",{"path":129,"title":130,"description":131},"\u002Fprompts\u002Fintegrate-privy","Integrate Privy with BlindPay","Fund BlindPay stablecoin payouts from Privy Server Wallets: sign the registration challenge and the ERC-20 approve through Privy's wallet RPC endpoint.",{"path":133,"title":134,"description":135},"\u002Fprompts\u002Fintegrate-virtual-accounts","Integrate US virtual accounts","Give each customer a named US bank account with ACH, RTP, wire, and SWIFT details that settles automatically to USDC or USDT in their wallet.",{"path":137,"title":138,"description":139},"\u002Fprompts\u002Fintegrate-utila","Integrate Utila with BlindPay","Fund BlindPay payouts from Utila MPC vaults: sign the wallet-registration challenge and the ERC-20 approve through Utila's service-account API, with async transaction confirmation handled.",{"path":141,"title":142,"description":143},"\u002Fprompts\u002Fintegrate-customer-onboarding","Integrate customer onboarding with KYC and KYB","Build the full onboarding pipeline: terms of service, individual and business customers, document uploads, RFI handling, and status webhooks.",{"path":145,"title":146,"description":147},"\u002Fprompts\u002Fintegrate-offramp-wallets","Integrate offramp wallets for auto-conversion","Give each bank account a dedicated crypto deposit address: stablecoins sent to it convert and pay out to the linked bank account automatically.",{"path":149,"title":150,"description":151},"\u002Fprompts\u002Fintegrate-payins","Integrate payins from bank transfers to stablecoins","Accept Pix, ACH, wire, SPEI, and other local bank transfers and settle them as USDC or USDT in a wallet, with quotes, payment instructions, and webhooks.",{"path":153,"title":154,"description":155},"\u002Fprompts\u002Fintegrate-quotes-fx","Integrate quotes and FX handling","Handle payin, payout, and transfer quotes correctly: expiry windows, currency_type conventions, fees, and displaying rates to users.",{"path":157,"title":158,"description":159},"\u002Fprompts\u002Fintegrate-stablecoin-payouts","Integrate stablecoin payouts end to end","Build a complete stablecoin to fiat payout flow: customer onboarding, bank accounts, quotes, and payout execution over Pix, ACH, SPEI, SEPA, and more.",{"path":161,"title":162,"description":163},"\u002Fprompts\u002Fintegrate-wallet-transfers","Integrate wallet transfers and cross-chain USDC","Move stablecoins from managed wallets to any address with transfer quotes, including cross-chain USDC over Circle CCTP v2.",{"path":165,"title":166,"description":167},"\u002Fprompts\u002Fintegrate-webhooks","Integrate webhooks end to end","Register endpoints, verify Svix signatures correctly, deduplicate retries, and drive payment state from the full BlindPay event catalog.",{"path":169,"title":170,"description":171},"\u002Fprompts\u002Fintegrate-payables","Pay boletos and Brazilian bills with payables","Register boletos, arrecadacao slips, and PIX codes as payables and settle them from stablecoins through the quote-and-execute flow.",1787868848504]