# Migrating to Qualy

> Migration guides for moving payments to the Qualy API from Stripe, Airwallex, Flywire, TransferMate, Convera, PagBank, Edvisor and EdWallet — concept maps and code.

Moving from another payment provider is mostly a vocabulary exercise. Qualy has a payment, a customer, a hosted checkout, refunds, recurring billing and webhooks like everyone else. What's different is that a Qualy payment can be split between you and your partners, and your customers can pay in their own currency with local methods.

These guides map what you do today to how you do it in Qualy:

* [From Stripe](/docs/migrations/stripe.md) — Payment Links, Checkout, PaymentIntents, Customers, Subscriptions, Connect.
* [From Airwallex](/docs/migrations/airwallex.md) — Payment Links, Payment Intents, Customers, FX and payouts.
* [From Flywire](/docs/migrations/flywire.md) — payment requests, payer portals, payment plans and agent commissions.
* [From TransferMate](/docs/migrations/transfermate.md) — Education payer payments and Corporate collection accounts and payouts.
* [From Convera](/docs/migrations/convera.md) — GlobalPay for Students payment requests, references and reconciliation.
* [From PagBank](/docs/migrations/pagbank.md) — orders, charges, PIX, boleto and card installments in Brazil.
* [From Edvisor and EdWallet](/docs/migrations/edvisor.md) — sales, direct payment links, school payments and commissions.
* [Using Qualy with NexPay](/docs/migrations/nexpay.md) — our sister company: how the two fit together.

---

## What carries over

* **Amounts are in minor units.** `100000` is 1,000.00, like Stripe and Airwallex.
* **Responses are wrapped** in `{ "data": ... }`. Unwrap with `const { data } = await res.json()`. See [Querying data](/docs/queries.md).
* **Idempotency** works with an `Idempotency-Key` header. See [Idempotency](/docs/idempotency.md).
* **References are flexible.** Where an id is expected you can often pass an email, a name or a code instead. See [Smart references](/docs/smart-references.md).

## A migration plan that works

1. **Create your API key** and test in sandbox. See [Creating your API keys](/docs/api-keys.md) and [Simulating payments](/docs/testing.md).
2. **Import contacts**, keeping your old provider's customer id in a [custom field](https://v1-spec.qualyhq.com/#post-/v1/fields/create) so you can match records later.
3. **Set up partnerships** for every school, agent or supplier that receives part of a payment.
4. **Point new payments at Qualy.** Leave open payments with your old provider to finish there rather than moving them mid-flight.
5. **Subscribe to webhooks** and swap your event handlers. See [Webhook events](/docs/webhooks/events.md).
6. **Move recurring billing last**, at a billing boundary, so no one is charged twice.

> **Note — Saved cards don't move**
>
> Card details stored with another provider can't be exported into Qualy through the API. Students re-enter their card the first time they pay on Qualy's portal. Plan a reminder for your first Qualy billing run.
