[{"data":1,"prerenderedAt":166},["ShallowReactive",2],{"content-\u002Fprompts\u002Fbuild-contractor-payouts":3,"prompts-category-integrations":100},{"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":96,"seo":97,"stem":98,"thumbnail":6,"updated":6,"__hash__":99},"content\u002Fprompts\u002Fbuild-contractor-payouts.md","Build a global contractor payout product",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 the classic use case end to end: paying international contractors from a stablecoin balance.",[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 building a contractor payout feature on BlindPay: my business holds stablecoins and pays contractors in Brazil (Pix\u002FBRL), Mexico (SPEI\u002FMXN), Europe (SEPA\u002FEUR), Argentina (Transfers\u002FARS), Colombia, and the US (ACH\u002FUSD).\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, payment methods, and webhooks pages)\n- The OpenAPI spec: curl https:\u002F\u002Fapi.blindpay.com\u002Fdoc\n\nBuild these product pieces:\n1. Contractor onboarding: terms of service, create customer (individual, KYC standard; route high-risk countries to enhanced), collect the rail-specific bank fields per country, all driven by customer.* and bankAccount.new webhooks. A contractor is payable only when KYC is approved and a bank account exists.\n2. Payout run: given a list of (contractor, amount, currency), for each one quote (POST \u002Fv1\u002Finstances\u002F{instance_id}\u002Fquotes) and execute (POST \u002Fv1\u002Finstances\u002F{instance_id}\u002Fpayouts\u002Fevm) before expires_at. Key each payout on my payroll-run line ID so retries can never double-pay, and gate the whole run behind one human approval showing total amount and FX per corridor.\n3. Status and reconciliation: drive contractor-visible status from payout.new\u002Fupdate\u002Fcomplete webhooks (Svix-verified); build a per-run report of quoted rate, fees, and settled amounts; alert on payouts stuck past the rail's expected settlement time (Pix\u002FSPEI minutes, ACH days, SEPA one business day).\n4. Limits and edge cases: respect per-tier transaction limits, handle rejected KYC and RFIs with a clear contractor-facing state, and handle failed\u002Frefunded payouts by returning the line to the next run with a reason.\n5. Testing: full run on a development instance (KYC auto-approves, payouts auto-complete), including one line at $666.00 (forces failed) and one at $777.00 (forces refunded) to prove the run survives partial failure.\n\nConstraints: amounts in integer minor units, API keys server-side, no floating point money math anywhere.\n\nDeliverables: onboarding flow, payout-run engine with approval gate and idempotency, webhook-driven status, the reconciliation report, and the failure-path tests.\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 and which corridors you actually pay.",[38,42,43],{},"Review the approval-gate UX; it is the piece your finance team will live in.",[38,45,46],{},"Run the sentinel-amount test before every production cutover.",[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\u002Fkb\u002Fpayment-methods",[61],"Payment methods",[38,71,72],{},[57,73,76],{"href":74,"rel":75},"https:\u002F\u002Fblindpay.com\u002Fdocs\u002Fkb\u002Fcut-off-times",[61],"Cut-off times and limits",{"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","Compose onboarding, bank accounts, quotes, payouts, and reconciliation into a complete pay-your-contractors feature across Pix, SPEI, SEPA, and ACH.","md",false,{},true,"\u002Fprompts\u002Fbuild-contractor-payouts",[92,93,94,95],"payouts","compliance","quotes","webhooks","---\ntitle: \"Build a global contractor payout product\"\ndescription: \"Compose onboarding, bank accounts, quotes, payouts, and reconciliation into a complete pay-your-contractors feature across Pix, SPEI, SEPA, and ACH.\"\ndate: \"2026-08-26\"\ncategory: \"integrations\"\nproducts: [\"payouts\", \"compliance\", \"quotes\", \"webhooks\"]\n---\n\nPaste this prompt into your coding agent to build the classic use case end to end: paying international contractors from a stablecoin balance.\n\n## Prompt\n\n```text\nYou are building a contractor payout feature on BlindPay: my business holds stablecoins and pays contractors in Brazil (Pix\u002FBRL), Mexico (SPEI\u002FMXN), Europe (SEPA\u002FEUR), Argentina (Transfers\u002FARS), Colombia, and the US (ACH\u002FUSD).\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, payment methods, and webhooks pages)\n- The OpenAPI spec: curl https:\u002F\u002Fapi.blindpay.com\u002Fdoc\n\nBuild these product pieces:\n1. Contractor onboarding: terms of service, create customer (individual, KYC standard; route high-risk countries to enhanced), collect the rail-specific bank fields per country, all driven by customer.* and bankAccount.new webhooks. A contractor is payable only when KYC is approved and a bank account exists.\n2. Payout run: given a list of (contractor, amount, currency), for each one quote (POST \u002Fv1\u002Finstances\u002F{instance_id}\u002Fquotes) and execute (POST \u002Fv1\u002Finstances\u002F{instance_id}\u002Fpayouts\u002Fevm) before expires_at. Key each payout on my payroll-run line ID so retries can never double-pay, and gate the whole run behind one human approval showing total amount and FX per corridor.\n3. Status and reconciliation: drive contractor-visible status from payout.new\u002Fupdate\u002Fcomplete webhooks (Svix-verified); build a per-run report of quoted rate, fees, and settled amounts; alert on payouts stuck past the rail's expected settlement time (Pix\u002FSPEI minutes, ACH days, SEPA one business day).\n4. Limits and edge cases: respect per-tier transaction limits, handle rejected KYC and RFIs with a clear contractor-facing state, and handle failed\u002Frefunded payouts by returning the line to the next run with a reason.\n5. Testing: full run on a development instance (KYC auto-approves, payouts auto-complete), including one line at $666.00 (forces failed) and one at $777.00 (forces refunded) to prove the run survives partial failure.\n\nConstraints: amounts in integer minor units, API keys server-side, no floating point money math anywhere.\n\nDeliverables: onboarding flow, payout-run engine with approval gate and idempotency, webhook-driven status, the reconciliation report, and the failure-path tests.\n```\n\n## How to use\n\n1. Paste the prompt with your stack and which corridors you actually pay.\n2. Review the approval-gate UX; it is the piece your finance team will live in.\n3. Run the sentinel-amount test before every production cutover.\n\n## Related docs\n\n- [Payout quickstart](https:\u002F\u002Fblindpay.com\u002Fdocs\u002Fquickstart-payout)\n- [Payment methods](https:\u002F\u002Fblindpay.com\u002Fdocs\u002Fkb\u002Fpayment-methods)\n- [Cut-off times and limits](https:\u002F\u002Fblindpay.com\u002Fdocs\u002Fkb\u002Fcut-off-times)\n",{"title":5,"description":85},"prompts\u002Fbuild-contractor-payouts","ErwDLtWlgv3j0rj2Z-wTxx5Wm6HQDA43dNPEZq7IA-s",[101,102,106,110,114,118,122,126,130,134,138,142,146,150,154,158,162],{"path":90,"title":5,"description":85},{"path":103,"title":104,"description":105},"\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":107,"title":108,"description":109},"\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":111,"title":112,"description":113},"\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":115,"title":116,"description":117},"\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":119,"title":120,"description":121},"\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":123,"title":124,"description":125},"\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":127,"title":128,"description":129},"\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":131,"title":132,"description":133},"\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":135,"title":136,"description":137},"\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":139,"title":140,"description":141},"\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":143,"title":144,"description":145},"\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":147,"title":148,"description":149},"\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":151,"title":152,"description":153},"\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":155,"title":156,"description":157},"\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":159,"title":160,"description":161},"\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":163,"title":164,"description":165},"\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.",1787868848479]