[{"data":1,"prerenderedAt":164},["ShallowReactive",2],{"content-\u002Fprompts\u002Fintegrate-customer-onboarding":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-customer-onboarding.md","Integrate customer onboarding with KYC and KYB",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 compliant customer onboarding, the prerequisite for every other BlindPay flow.",[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 customer onboarding for BlindPay into my application, covering individuals (KYC) and businesses (KYB).\n\nBefore writing code, read these sources and follow them over any prior knowledge:\n- https:\u002F\u002Fblindpay.com\u002Fdocs\u002Fllms.txt (read customers, the KYC knowledge base pages, supported countries, and webhooks)\n- The OpenAPI spec: curl https:\u002F\u002Fapi.blindpay.com\u002Fdoc\n\nBuild the pipeline:\n1. Terms of service: POST \u002Fv1\u002Fe\u002Finstances\u002F{instance_id}\u002Ftos with a UUID idempotency_key, open the returned session URL for the user, capture completion via the tos.accept webhook.\n2. Document uploads: POST \u002Fv1\u002Fupload?instance_id=... (multipart) for ID documents, selfies, and KYB documents; optionally pre-screen with POST \u002Fv1\u002Fupload\u002Fanalyze and warn users when approval_rate is low. Enforce the format rules: PDF\u002FJPEG\u002FPNG, max 5 MB, no screenshots or cropped photos.\n3. Create the customer: POST \u002Fv1\u002Finstances\u002F{instance_id}\u002Fcustomers with type individual or business, and kyc_type standard or enhanced. Route users from high-risk countries to enhanced KYC and block prohibited countries before calling the API.\n4. Drive state from webhooks (customer.new, customer.update): handle verifying, approved, rejected, compliance_request (blocking RFI), and approved_rfi (non-blocking RFI). On rejection, surface kyc_warnings and create a new customer rather than editing the rejected one.\n5. RFI handling: on compliance_request, fetch the request with GET \u002Fv1\u002Finstances\u002F{instance_id}\u002Fcustomers\u002F{customer_id}\u002Frfi, collect what is asked, and submit once via POST to the same path. Submission is single-shot and expires at expires_at (27 days), so validate everything client-side first.\n\nConstraints:\n- API keys stay server-side. Verify Svix signatures on webhooks.\n- Development instances auto-approve KYC (a customer named \"Fail\" forces rejection), so use that to test both paths.\n- Persist re_ and rfi_ IDs and every status transition for audit.\n\nDeliverables: onboarding service, upload helper, webhook-driven state machine for customer status, RFI flow, and a mapping of which form fields are required for individual standard, individual enhanced, and business customers.\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",{},"Decide which customer types you support (individuals, businesses, or both) and tell the agent.",[38,42,43],{},"Paste the prompt with your stack details.",[38,45,46],{},"Use the development instance tricks (auto-approve, the \"Fail\" name) to exercise every status 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\u002Flearn\u002Fcustomers",[61],"nofollow","Customers",[38,64,65],{},[57,66,69],{"href":67,"rel":68},"https:\u002F\u002Fblindpay.com\u002Fdocs\u002Fkb\u002Fkyc",[61],"KYC guide",[38,71,72],{},[57,73,76],{"href":74,"rel":75},"https:\u002F\u002Fblindpay.com\u002Fdocs\u002Fkb\u002Fsupported-countries",[61],"Supported countries",{"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","Build the full onboarding pipeline: terms of service, individual and business customers, document uploads, RFI handling, and status webhooks.","md",false,{},true,"\u002Fprompts\u002Fintegrate-customer-onboarding",[92,93],"compliance","webhooks","---\ntitle: \"Integrate customer onboarding with KYC and KYB\"\ndescription: \"Build the full onboarding pipeline: terms of service, individual and business customers, document uploads, RFI handling, and status webhooks.\"\ndate: \"2026-08-26\"\ncategory: \"integrations\"\nproducts: [\"compliance\", \"webhooks\"]\n---\n\nPaste this prompt into your coding agent to build compliant customer onboarding, the prerequisite for every other BlindPay flow.\n\n## Prompt\n\n```text\nYou are building customer onboarding for BlindPay into my application, covering individuals (KYC) and businesses (KYB).\n\nBefore writing code, read these sources and follow them over any prior knowledge:\n- https:\u002F\u002Fblindpay.com\u002Fdocs\u002Fllms.txt (read customers, the KYC knowledge base pages, supported countries, and webhooks)\n- The OpenAPI spec: curl https:\u002F\u002Fapi.blindpay.com\u002Fdoc\n\nBuild the pipeline:\n1. Terms of service: POST \u002Fv1\u002Fe\u002Finstances\u002F{instance_id}\u002Ftos with a UUID idempotency_key, open the returned session URL for the user, capture completion via the tos.accept webhook.\n2. Document uploads: POST \u002Fv1\u002Fupload?instance_id=... (multipart) for ID documents, selfies, and KYB documents; optionally pre-screen with POST \u002Fv1\u002Fupload\u002Fanalyze and warn users when approval_rate is low. Enforce the format rules: PDF\u002FJPEG\u002FPNG, max 5 MB, no screenshots or cropped photos.\n3. Create the customer: POST \u002Fv1\u002Finstances\u002F{instance_id}\u002Fcustomers with type individual or business, and kyc_type standard or enhanced. Route users from high-risk countries to enhanced KYC and block prohibited countries before calling the API.\n4. Drive state from webhooks (customer.new, customer.update): handle verifying, approved, rejected, compliance_request (blocking RFI), and approved_rfi (non-blocking RFI). On rejection, surface kyc_warnings and create a new customer rather than editing the rejected one.\n5. RFI handling: on compliance_request, fetch the request with GET \u002Fv1\u002Finstances\u002F{instance_id}\u002Fcustomers\u002F{customer_id}\u002Frfi, collect what is asked, and submit once via POST to the same path. Submission is single-shot and expires at expires_at (27 days), so validate everything client-side first.\n\nConstraints:\n- API keys stay server-side. Verify Svix signatures on webhooks.\n- Development instances auto-approve KYC (a customer named \"Fail\" forces rejection), so use that to test both paths.\n- Persist re_ and rfi_ IDs and every status transition for audit.\n\nDeliverables: onboarding service, upload helper, webhook-driven state machine for customer status, RFI flow, and a mapping of which form fields are required for individual standard, individual enhanced, and business customers.\n```\n\n## How to use\n\n1. Decide which customer types you support (individuals, businesses, or both) and tell the agent.\n2. Paste the prompt with your stack details.\n3. Use the development instance tricks (auto-approve, the \"Fail\" name) to exercise every status path.\n\n## Related docs\n\n- [Customers](https:\u002F\u002Fblindpay.com\u002Fdocs\u002Flearn\u002Fcustomers)\n- [KYC guide](https:\u002F\u002Fblindpay.com\u002Fdocs\u002Fkb\u002Fkyc)\n- [Supported countries](https:\u002F\u002Fblindpay.com\u002Fdocs\u002Fkb\u002Fsupported-countries)\n",{"title":5,"description":85},"prompts\u002Fintegrate-customer-onboarding","vTDQ45k7mRMrsYfwVxXzZyEmUKV2KN2oy8PllNPPD-k",[99,103,107,111,115,119,123,127,131,135,136,140,144,148,152,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":90,"title":5,"description":85},{"path":137,"title":138,"description":139},"\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":141,"title":142,"description":143},"\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":145,"title":146,"description":147},"\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":149,"title":150,"description":151},"\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":153,"title":154,"description":155},"\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":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.",1787868849085]