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

  1. Create a payment link with Create payment link: set the amount, currency, and your return_url.
  2. Send the customer to payment_url. Redirect them, email the link, or embed the checkout with Inline checkout.
  3. The customer pays. Mamo redirects them back to your return_url and appends transactionId (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's custom_data, which can overwrite the names above.
  4. 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 toUse
Charge a saved card later, without the customer presentCard on file and Initiate payment
Authorise now and take the money laterhold_and_charge_later: true on the link, then Capture payment or Reverse payment
Give money backRefund payment (full or partial)
Accept Apple Pay or Google Pay in your own UICreate Apple Pay token / Create Google Pay token, then Initiate payment
Send an invoice by emailCreate invoice
Split a payment with a recipientpayouts_share on the link; see Platform-led marketplace
See every paymentList 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

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.


Did this page help you?