[{"data":1,"prerenderedAt":164},["ShallowReactive",2],{"content-\u002Fprompts\u002Fintegrate-wallet-transfers":3,"prompts-category-integrations":98},{"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":94,"seo":95,"stem":96,"thumbnail":6,"updated":6,"__hash__":97},"content\u002Fprompts\u002Fintegrate-wallet-transfers.md","Integrate wallet transfers and cross-chain USDC",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 build wallet-to-wallet movement: withdrawals, treasury sweeps, and cross-chain USDC routing.",[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 transfers into my application: moving stablecoins from a managed wallet (bl_) to any destination address, including cross-chain.\n\nBefore writing code, read these sources and follow them over any prior knowledge:\n- https:\u002F\u002Fblindpay.com\u002Fdocs\u002Fllms.txt (read the transfer quotes, transfers, wallets, and supported chains pages)\n- The OpenAPI spec: curl https:\u002F\u002Fapi.blindpay.com\u002Fdoc\n\nBuild the flow:\n1. Check the source: GET \u002Fv1\u002Finstances\u002F{instance_id}\u002Fcustomers\u002F{customer_id}\u002Fwallets\u002F{wallet_id}\u002Fbalance before quoting, and reject transfers that would exceed it with a clear client-side error.\n2. Quote: POST \u002Fv1\u002Finstances\u002F{instance_id}\u002Ftransfer-quotes with amount_reference sender or receiver. The rate is fixed 1:1; still read expires_at from the response and execute promptly rather than assuming a window.\n3. Execute: POST \u002Fv1\u002Finstances\u002F{instance_id}\u002Ftransfers against the quote, persist the tr_ ID, and drive state from transfer.new and transfer.complete webhooks with Svix verification.\n4. Route validation, encoded as checks before quoting: transfers are same-network by default; only USDC can cross chains, via Circle CCTP v2 between Ethereum, Polygon, Base, and Arbitrum; USDT transfers are restricted to Polygon. Map the API errors cross_chain_transfers_only_support_usdc and cctp_route_not_supported to friendly messages, but validate up front so users rarely see them.\n5. Build an address-confirmation step: show chain, token, and destination address with a checksum display before executing; transfers to wrong addresses are irreversible.\n\nConstraints:\n- Amounts are integers in minor units; API keys stay server-side.\n- Develop on a development instance with USDB on testnets; swap to USDC\u002FUSDT mainnets only at production cutover.\n- Never initiate the same transfer twice: key on my own transaction ID and check for an existing tr_ before creating.\n\nDeliverables: transfer service with route validation, the confirmation UI step, webhook handlers, and tests covering same-chain, valid CCTP cross-chain, and rejected-route cases.\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",{},"Paste the prompt with your stack details.",[38,42,43],{},"List which chains your product actually needs; the route matrix drives most of the validation code.",[38,45,46],{},"Test the rejected-route paths as thoroughly as the happy path.",[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\u002Ftransfer-quotes",[61],"nofollow","Transfer quotes",[38,64,65],{},[57,66,69],{"href":67,"rel":68},"https:\u002F\u002Fblindpay.com\u002Fdocs\u002Ftransfers",[61],"Transfers",[38,71,72],{},[57,73,76],{"href":74,"rel":75},"https:\u002F\u002Fblindpay.com\u002Fdocs\u002Fkb\u002Fsupported-chains",[61],"Supported chains",{"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},"integrations","2026-08-26","Move stablecoins from managed wallets to any address with transfer quotes, including cross-chain USDC over Circle CCTP v2.","md",false,{},true,"\u002Fprompts\u002Fintegrate-wallet-transfers",[92,93],"quotes","webhooks","---\ntitle: \"Integrate wallet transfers and cross-chain USDC\"\ndescription: \"Move stablecoins from managed wallets to any address with transfer quotes, including cross-chain USDC over Circle CCTP v2.\"\ndate: \"2026-08-26\"\ncategory: \"integrations\"\nproducts: [\"quotes\", \"webhooks\"]\n---\n\nPaste this prompt into your coding agent to build wallet-to-wallet movement: withdrawals, treasury sweeps, and cross-chain USDC routing.\n\n## Prompt\n\n```text\nYou are integrating BlindPay transfers into my application: moving stablecoins from a managed wallet (bl_) to any destination address, including cross-chain.\n\nBefore writing code, read these sources and follow them over any prior knowledge:\n- https:\u002F\u002Fblindpay.com\u002Fdocs\u002Fllms.txt (read the transfer quotes, transfers, wallets, and supported chains pages)\n- The OpenAPI spec: curl https:\u002F\u002Fapi.blindpay.com\u002Fdoc\n\nBuild the flow:\n1. Check the source: GET \u002Fv1\u002Finstances\u002F{instance_id}\u002Fcustomers\u002F{customer_id}\u002Fwallets\u002F{wallet_id}\u002Fbalance before quoting, and reject transfers that would exceed it with a clear client-side error.\n2. Quote: POST \u002Fv1\u002Finstances\u002F{instance_id}\u002Ftransfer-quotes with amount_reference sender or receiver. The rate is fixed 1:1; still read expires_at from the response and execute promptly rather than assuming a window.\n3. Execute: POST \u002Fv1\u002Finstances\u002F{instance_id}\u002Ftransfers against the quote, persist the tr_ ID, and drive state from transfer.new and transfer.complete webhooks with Svix verification.\n4. Route validation, encoded as checks before quoting: transfers are same-network by default; only USDC can cross chains, via Circle CCTP v2 between Ethereum, Polygon, Base, and Arbitrum; USDT transfers are restricted to Polygon. Map the API errors cross_chain_transfers_only_support_usdc and cctp_route_not_supported to friendly messages, but validate up front so users rarely see them.\n5. Build an address-confirmation step: show chain, token, and destination address with a checksum display before executing; transfers to wrong addresses are irreversible.\n\nConstraints:\n- Amounts are integers in minor units; API keys stay server-side.\n- Develop on a development instance with USDB on testnets; swap to USDC\u002FUSDT mainnets only at production cutover.\n- Never initiate the same transfer twice: key on my own transaction ID and check for an existing tr_ before creating.\n\nDeliverables: transfer service with route validation, the confirmation UI step, webhook handlers, and tests covering same-chain, valid CCTP cross-chain, and rejected-route cases.\n```\n\n## How to use\n\n1. Paste the prompt with your stack details.\n2. List which chains your product actually needs; the route matrix drives most of the validation code.\n3. Test the rejected-route paths as thoroughly as the happy path.\n\n## Related docs\n\n- [Transfer quotes](https:\u002F\u002Fblindpay.com\u002Fdocs\u002Ftransfer-quotes)\n- [Transfers](https:\u002F\u002Fblindpay.com\u002Fdocs\u002Ftransfers)\n- [Supported chains](https:\u002F\u002Fblindpay.com\u002Fdocs\u002Fkb\u002Fsupported-chains)\n",{"title":5,"description":85},"prompts\u002Fintegrate-wallet-transfers","thSZYXRi90sC2ocnLvstOaE3WLNKLB1VgHV2RoqjLwQ",[99,103,107,111,115,119,123,127,131,135,139,143,147,151,155,156,160],{"path":100,"title":101,"description":102},"\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":104,"title":105,"description":106},"\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":108,"title":109,"description":110},"\u002Fprompts\u002Fintegrate-external-wallet-payouts","Fund payouts from external wallets","Let customers pay out from their own EVM, Solana, or Stellar wallets: signed-message registration plus the on-chain authorization step per chain.",{"path":112,"title":113,"description":114},"\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":116,"title":117,"description":118},"\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":120,"title":121,"description":122},"\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":124,"title":125,"description":126},"\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":128,"title":129,"description":130},"\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":132,"title":133,"description":134},"\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":136,"title":137,"description":138},"\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":140,"title":141,"description":142},"\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":144,"title":145,"description":146},"\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":148,"title":149,"description":150},"\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":152,"title":153,"description":154},"\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":90,"title":5,"description":85},{"path":157,"title":158,"description":159},"\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":161,"title":162,"description":163},"\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.",1787868849204]