Back to Prompts

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.

Payins
Quotes
Compliance
Webhooks

Paste this prompt into your coding agent to build the fiat-in, stablecoin-out direction: your users pay from a bank account and funds land in a wallet as stablecoins.

Prompt

text
You are integrating BlindPay payins (local bank transfer in, USDC/USDT out) into my application.

Before writing code, read these sources and follow them over any prior knowledge:
- https://blindpay.com/docs/llms.txt (read the payin quickstart, payin quotes, wallets, and webhooks pages)
- The OpenAPI spec: curl https://api.blindpay.com/doc

Build the full payin flow:
1. Terms of service acceptance, then create a customer (POST /v1/instances/{instance_id}/customers) and wait for KYC approval via webhooks.
2. Create a destination wallet: a managed wallet (POST /v1/instances/{instance_id}/customers/{customer_id}/wallets) or register the customer's own blockchain wallet.
3. Request a payin quote (POST /v1/instances/{instance_id}/payin-quotes) with wallet_id, payment_method (pix, ach, wire, rtp, spei, or pse), request_amount, and currency_type. Note: on payins, currency_type "sender" means the fiat side. Quotes expire; read expires_at.
4. Create the payin (POST /v1/instances/{instance_id}/payins/evm, one endpoint for all payment methods) and surface the returned payment instructions to the payer: memo_code plus bank details for USD rails, pix_code for BRL, CLABE for MXN, or the payment link for PSE.
5. Track payin.new, payin.update, payin.complete, and wallet.inbound webhooks with Svix signature verification, and reconcile by payin ID (pi_).

Constraints:
- Amounts are integers in minor units. API keys stay server-side.
- Develop against a development instance with USDB on a testnet; payins auto-complete about 30 seconds after creation there.
- Show the payer exact transfer instructions including the memo code where the rail requires it; a missing memo is the top cause of unmatched deposits.

Deliverables: payin service, payment-instructions UI or API response, webhook handler with signature verification, and an integration test that creates a payin on the development instance and asserts the completion webhook.

How to use

  1. Create a development instance and API key at app.blindpay.com.
  2. Tell the agent which rails you need (for example Pix only) so it trims the payment-method handling.
  3. Run the flow on the development instance; payins auto-complete in about 30 seconds there.