Payments
Get paid faster, however you sell.
Collect payments faster with instant payment links and real-time transaction visibility. Create a link and share it with customers via email, text message, or social media, or create a smoother checkout with embedded payments that let customers pay without leaving your website.
Every customer payment on Mamo goes through a payment link: a hosted checkout page with its own payment_url. You create the link, send the customer to it (or embed it), and Mamo handles the card form, 3D Secure, Apple Pay and Google Pay. Each completed payment is a payment object (also called a charge, ID PAY-...).
How a payment works
- Create a payment link with Create payment link: set the amount, currency, and your
return_url. - Send the customer to
payment_url. Redirect them, email the link, or embed the checkout with Inline checkout. - The customer pays. Mamo redirects them back to your
return_urland appendstransactionId(the payment ID),chargeUID(same value),paymentLinkId,createdAt(payment creation time,YYYY-MM-DD-HH-MM-SS, UAE time),status, and each key of the link'scustom_data, which can overwrite the names above. - Confirm the payment server-side with a webhook (
payment.succeeded/payment.failed) or Fetch payment info. Don't rely on the redirect params alone; they can be tampered with.
What else you can do with a payment
| You want to | Use |
|---|---|
| Charge a saved card later, without the customer present | Card on file and Initiate payment |
| Authorise now and take the money later | hold_and_charge_later: true on the link, then Capture payment or Reverse payment |
| Give money back | Refund payment (full or partial) |
| Accept Apple Pay or Google Pay in your own UI | Create Apple Pay token / Create Google Pay token, then Initiate payment |
| Send an invoice by email | Create invoice |
| Split a payment with a recipient | payouts_share on the link; see Platform-led marketplace |
| See every payment | List payments, filtered by date or by link |
Statuses to know
A payment you hear about by webhook is captured (money taken), failed, authorized (on hold, waiting for capture), card_verified (a zero-amount card check), or voided (authorization voided by Mamo's fraud screening; releasing a hold yourself with Reverse Payment sends no webhook). Refunds don't change status: a refunded payment stays captured. Track refunds with refund_status (initiated, success, failed, or No refund) and the payment.refund_initiated, payment.refunded and payment.refund_failed webhooks. The Payment object page lists every field and status.
More on payments
- Inline checkout: embed the checkout on your own page.
- Card on file: save a card and charge it later.
- Apple Pay and Google Pay: Google Pay needs no setup; Apple Pay needs domain verification or a processing certificate first.
- Failure messages: why a card payment was declined, and what to tell the customer.
Build it
The Payments section of the API Reference has every payment link, payment, refund, invoice and wallet endpoint.
Try it
Follow the Accept a payment and confirm it with a webhook recipe, then pay the link in the sandbox with a test card.
Updated about 21 hours ago