---
title: "Migrate from Circle to BlindPay"
description: "Move payouts and fiat on/off ramps from Circle Mint or the Circle Payments Network to BlindPay's quote-and-execute API with local rails."
date: "2026-08-26"
category: "migrations"
products: ["payouts", "payins", "quotes", "compliance", "webhooks"]
---

Paste this prompt into your coding agent to port a Circle integration (Mint, Payouts, or the Circle Payments Network) to BlindPay.

## Prompt

```text
You are migrating my application from Circle's APIs (Circle Mint, Circle Payouts, or the Circle Payments Network) to the BlindPay API.

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

Do the migration in this order:
1. Inventory my Circle usage from the codebase: which products we call (mint/redeem, payouts, wire/bank account endpoints, wallets), every stored Circle ID, and every webhook subscription. Derive the mapping from actual usage, roughly: Circle beneficiaries and recipient bank accounts map to BlindPay customers (re_) plus bank accounts (ba_); USDC redemption to fiat maps to a payout quote (POST /v1/instances/{instance_id}/quotes) followed by POST /v1/instances/{instance_id}/payouts/evm; fiat deposits that mint USDC map to payin quotes plus payins; Circle-hosted wallets map to BlindPay managed wallets (bl_). Flag anything with no direct equivalent instead of guessing.
2. Re-onboard counterparties: compliance status does not transfer between providers, so plan KYC/KYB re-verification on BlindPay, sequenced before cutover and driven by customer.* webhooks.
3. Rebuild money movement on the quote-then-execute model, always executing before the quote's expires_at and storing qu_/po_/pi_ IDs alongside legacy Circle IDs during the transition. Note BlindPay settles over local rails directly (Pix, SPEI, SEPA, ACH, RTP, wire), so corridors that needed intermediary banking may simplify.
4. Port webhook handling to BlindPay's Svix-signed events with raw-body HMAC verification and svix-id dedup.
5. Cut over per corridor behind a feature flag with a dual-run window; retire the Circle path only after in-flight settlements clear.

Constraints:
- Develop against a BlindPay development instance (USDB on testnets) first; swap to USDC/USDT on mainnets only at production cutover.
- Amounts are integer minor units; API keys stay server-side.
- Produce a written migration report (mapping table, gaps, re-KYC plan) before changing code.

Deliverables: the migration report, re-onboarding script, BlindPay money-movement code paths behind a flag, webhook handlers, and a cutover checklist.
```

## How to use

1. Point the agent at your codebase so the mapping reflects the Circle products you actually use.
2. Review the migration report before approving code changes.
3. Cut over corridor by corridor, not all at once.

## Related docs

- [Introduction](https://blindpay.com/docs/introduction)
- [Managed wallets](https://blindpay.com/docs/wallets)
- [Payment methods](https://blindpay.com/docs/kb/payment-methods)
