# Migrating from Convera

> Moving from Convera GlobalPay for Students (formerly Western Union Business Solutions) to Qualy: payment requests, payment references, home-currency FX, refunds and reconciliation.

If you use Convera GlobalPay for Students (formerly Western Union Business Solutions), your students already pay in their home currency through a portal with a payment reference. Qualy works the same way for the student. What changes for you is that every payment is a record you create and track through an API, and you can pay agents and partners from it.

Convera doesn't publish a public developer API for its student payments, so this guide maps workflows rather than API calls.

---

## Concept map

| Convera GlobalPay for Students | Qualy | Notes |
| --- | --- | --- |
| Payer (student with a student id) | [Contact](https://v1-spec.qualyhq.com/#post-/v1/contacts/create) | Keep your student id in a [custom field](https://v1-spec.qualyhq.com/#post-/v1/fields/create). |
| Payment instructions + unique reference | [Payment intent](/docs/guides/creating-payment-intents.md) + its link | The payment carries its own reference, so nothing is matched by hand. |
| Institution payer portal | Payment portal on your subdomain or custom domain | One-off links per student, or [reusable links](/docs/guides/payment-links.md#reusable-links) for set fees. |
| Paying in home currency with a held quote | `settlementCurrency`, or the student chooses on the portal | Local methods appear by currency. |
| Card, eWallet, local bank transfer | Methods on the portal | See [Collecting payments](/docs/guides/collecting-payments.md). |
| Agent pays, or sends the student a link | The agent shares the payment link; [payment splits](/docs/guides/creating-payment-splits.md) pay the agent's commission | — |
| Tracking emails and texts | Notifications and [dunning](/docs/guides/dunning.md) | Reminders before and after the due date. |
| Refund with its own reference | [Refund](/docs/guides/issuing-transaction-refunds.md) | — |
| Reconciliation data into finance | [Webhooks](/docs/webhooks/events.md) + [queries](/docs/queries.md) | `paymentIntents.update`, `transactions.create`, `splitIntents.update`. |

---

## Issuing a payment

Where a student would start on Convera's portal and pick your institution, you create the payment and send them straight to it:

```javascript
const res = await fetch('https://api.qualyhq.com/v1/payment-intents/create', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'ApiKey your-api-key-here',
    'X-TENANT-ID': 'your-tenant-id-here',
  },
  body: JSON.stringify({
    intentType: 'ad-hoc',
    number: 'STU-88231-T1',
    contact: 'chen.wei@example.com',
    currency: 'AUD',
    dueAt: '2027-01-15T00:00:00.000Z',
    items: [{ name: 'Tuition fee — Term 1', category: 'Course', amount: 820000 }],
  }),
});

const { data: payment } = await res.json();
console.log(payment.links.short);
```

For fees anyone can pay without being invoiced first (application fees, deposits), use a [reusable link](/docs/guides/payment-links.md#reusable-links) instead.

---

## Reconciliation

You don't import a file. Listen for:

* `paymentIntents.update` — `status` moves to `paid-partial` or `paid-full`.
* `transactions.create` — money arrived, with amount, currency and method.

Bank transfers to Qualy are matched by the payment's reference (`QLY-PYMT-<number>`), shown to the student on the portal.

---

## Cutting over

* **Switch by intake or term.** Payments already sent to Convera, and refunds on them, finish with Convera.
* **Import open balances** as contacts and payment intents, and send the new links.
* **Update your payment pages** and agent instructions to point to Qualy links, so no one pays the same fee twice.
