Skip to main content

Marketplace integration guide

This guide walks through the complete marketplace integration flow from onboarding your first seller to receiving payout confirmation webhooks.

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.

Other recipient endpoints: List · Get by ID · Update · Delete

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.

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.

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?

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?

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.

Did this answer your question?