---
title: "Integrate payins from bank transfers to stablecoins"
description: "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."
date: "2026-08-26"
category: "integrations"
products: ["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](https://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.

## Related docs

- [Payin quickstart](https://blindpay.com/docs/quickstart-payin)
- [Payin quotes](https://blindpay.com/docs/payin-quotes)
- [Managed wallets](https://blindpay.com/docs/wallets)
- [Payment methods](https://blindpay.com/docs/kb/payment-methods)
