Overview
Mamo's marketplace solution lets platforms collect payments on behalf of sellers, automatically split funds at the moment of payment, track each seller's balance in real time, and disburse payouts directly to their bank accounts — all via API, with no seller KYC required.
The flow at a glance
Seller onboards → you call POST /recipients with their IBAN → get back a recipient_id
Buyer pays → you create a payment link with a payouts_share percentage → Mamo splits automatically
Seller balance grows → query GET /recipients/:id/balances to see their real-time ledger
Payout day → Mamo transfers the seller's accumulated balance to their IBAN on your configured schedule
You get notified → payout.processed webhook fires once the transfer is confirmed
STEP 1
Create a recipient (seller)
Before you can split a payment to a seller, you need to register them as a recipient. This is a one-time call per seller. You only need their name, email, UAE IBAN, and the nature of your relationship with them.
On success you receive a recipient ID that you store alongside the seller in your database and reference in every payment.
The IBAN also serves as the payout destination. If the seller changes their bank account, update the recipient record with PATCH /accounts/recipients/{id} before the next payout cycle.
STEP 2
Create a payment link with split
When creating a payment link for an order, include the payouts_share object to define how the payment should be split. Mamo applies the split automatically at the moment the buyer pays.
Set payouts_share.recipient_id to the seller's recipient ID from Step 1
Set payouts_share.percentage to the percentage going to the seller (e.g. 90 means the seller gets 90%, the platform keeps 10%)
Once a payment is captured, the seller's share is immediately moved out of the merchant's AED balance and into the seller's recipient ledger.
Inline checkout (iFrame)
If you're embedding the checkout on your website rather than redirecting buyers to a hosted page, set the link type to inline and load it via the Mamo JS SDK. The payouts_share split works identically.
STEP 3
Check recipient balances
Each seller has their own financial ledger maintained by Mamo, updated in real time after every payment split. Use the recipient balances endpoint to see exactly how much a seller is owed and a full breakdown of how that balance was built up.
Every split appears as a credit on the recipient's ledger and a corresponding debit on your merchant account. Payouts issued to the seller appear as debits on their ledger.
What the ledger shows
Balance — the current amount owed to the seller before the next payout
Currency — the currency of the balance
STEP 4
Configure payout schedule
Payouts to seller IBANs are batched and sent on a schedule you agree with the Mamo team. This is configured once — after that, payouts run automatically with no API calls required on your end.
When setting up your schedule, decide:
Frequency — daily, every Monday, twice weekly, etc.
Minimum threshold — only trigger a payout when the seller's balance exceeds a set amount
Fee bearer — the fixed fee per payout, either absorbed by the platform or deducted from the seller's payout
Contact [email protected] to configure the schedule. If you need a one-off manual payout outside the schedule, use the POST /payouts endpoint.
STEP 5
Webhooks
Register a webhook endpoint to receive real-time notifications for payment and payout events. This is how you know when a seller's payout has been initiated, or when a buyer's payment has succeeded or failed.
Key events for marketplace integrations
payout.processed — seller payout successfully sent to their IBAN
payout.failed — payout rejected (wrong IBAN, bank error) — notify the seller and correct details
payment.succeeded — buyer payment captured and split applied to recipient balance
payment.failed — buyer payment attempt failed
payment.authorized — hold placed on buyer's card (hold-and-charge flow)
payment.refunded — refund successfully processed
payment.refund_failed — refund failed — contact Mamo support
Hold and charge later
Use this flow when you need to verify something before charging the buyer — such as item condition, delivery confirmation, or a dispute window. The buyer's card is authorized at checkout but not charged until you explicitly capture.
Create the payment link with hold_and_charge_later: true → buyer authorizes but is not charged
When ready to charge: call POST /payments/{id}/captures — supports partial capture
To cancel: call POST /payments/{id}/reverses — full hold released instantly, no charge
Holds expire after 7 days. If you do not capture or reverse within 7 days, the authorization releases automatically and the buyer is not charged.
Testing in sandbox
Use the sandbox environment to test the full integration before going live. All endpoints and webhook events work identically to production.
Sandbox base URL: sandbox.dev.business.mamopay.com/manage_api/v1
Test cards
4659 1055 6905 1157 — success, no 3DS
4242 4242 4242 4242 — success, 3DS (password: Checkout1!)
4567 3613 2598 1788 — declined
CVV: 123 · Expiry: 01/28
FAQ
Do I need to KYC my sellers?
Do I need to KYC my sellers?
No seller KYC is required. Providing a valid UAE IBAN is sufficient to onboard any seller as a recipient — they are already verified through their bank.
How do I validate the IBANs users are entering?
How do I validate the IBANs users are entering?
You can validate the IBANs entered on your App before sending it to Mamo using the validate iban API, the response will also include the corresponding bank's name.
