Accept payments
Choose how your customers pay you, and how the money reaches your wallet.
Every way of getting paid on MigraPay ends the same way: the money, less fees, lands in your wallet in the currency the customer paid, a transaction is recorded, and collection.settled is sent to your webhooks.
Pick a way to get paid
| You want to… | Use |
|---|---|
| Sell online and let the customer choose how to pay | Checkout: hosted page or checkout.js on your site |
| Share a payment page by message, email or QR code | Payment links (dashboard) |
| Ask for one specific payment by one specific method | A collection: POST /collections |
| Give a customer account details they can always pay | Virtual accounts |
| Get paid by Interac e-Transfer in Canada | Interac e-Transfer |
A checkout lets the customer pick the currency and method; a collection fixes both up front. Both are the same object underneath, so they are retrieved, listed and reported the same way.
Request a collection
See which methods you can use and which fields each takes with GET /collections/requirements.
Create it with POST /collections, sending an Idempotency-Key. The response has the payment instructions (account details, or where to send an Interac e-Transfer and the code to include) and a checkoutUrl you can send instead.
Show the instructions to your customer, or send them the link.
Wait for collection.settled, then fulfil. The event carries a funding object saying how the money arrived (method, sender, bank, session id or card), and any metadata you set.
What happens to a collection
A collection starts awaiting_payment, may pass through processing, and ends settled, expired or failed; a settled one can later be refunded. The lifecycle lists each status and the event it sends.
If a customer pays a different amount than you asked for, the collection settles for what actually arrived and the event says so (amountReceived, mismatch: true).
Test it
In Sandbox nobody can pay a collection, so settle it yourself with POST /collections/{id}/mock-settle. Your Sandbox wallet is credited and the webhook fires exactly as on live. See Sandbox.