Pay a recipient
Save a recipient's bank details once, then send them payouts by ID.
Every snippet runs against the sandbox: set MAMO_API_KEY to your sandbox key first.
1. Check the IBAN
Call Validate IBAN before you save bank details. It tells you whether the IBAN is valid and which bank it belongs to.
2. Save the recipient
Create the recipient with Create Recipient. Send first_name and last_name for an individual, or business_name for a business, plus the bank details. Keep the returned identifier.
3. Send the payout
Call Issue Payouts with the recipient's ID as recipient_id, the amount (at least AED 10), and a reason. One call can carry several payouts.
4. Track it
Payouts start as Processing. Listen for the payout.processed and payout.failed webhooks, or poll Fetch Payout Info.
Full code
BASE=https://sandbox.dev.business.mamopay.com/manage_api/v1
# 1. Check the IBAN
curl -s "$BASE/iban/validate?iban=AE080200000123223333121" \
-H "Authorization: Bearer $MAMO_API_KEY"
# 2. Save the recipient
curl -s -X POST "$BASE/recipients" \
-H "Authorization: Bearer $MAMO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"recipient_type": "individual", "first_name": "Sara", "last_name": "Khan",
"relationship": "others", "bank": {"iban": "AE080200000123223333121", "country": "AE"}}'
# 3. Send the payout
curl -s -X POST "$BASE/payouts" \
-H "Authorization: Bearer $MAMO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"disbursements": [{"recipient_id": "'"$RECIPIENT_ID"'", "transfer_method": "BANK_ACCOUNT",
"reason": "Invoice payment", "amount": "75.00"}]}'const BASE = 'https://sandbox.dev.business.mamopay.com/manage_api/v1';
const headers = {
Authorization: `Bearer ${process.env.MAMO_API_KEY}`,
'Content-Type': 'application/json',
};
const mamo = (method, path, body) =>
fetch(`${BASE}${path}`, { method, headers, body: body && JSON.stringify(body) })
.then((r) => r.json());
// 1. Check the IBAN
const iban = 'AE080200000123223333121';
const check = await mamo('GET', `/iban/validate?iban=${iban}`);
if (!check.valid) throw new Error('Invalid IBAN');
// 2. Save the recipient
const recipient = await mamo('POST', '/recipients', {
recipient_type: 'individual', first_name: 'Sara', last_name: 'Khan',
relationship: 'others', bank: { iban, country: 'AE' },
});
// 3. Send the payout
const [payout] = await mamo('POST', '/payouts', {
disbursements: [{
recipient_id: recipient.identifier, transfer_method: 'BANK_ACCOUNT',
reason: 'Invoice payment', amount: '75.00',
}],
});
console.log(payout.identifier, payout.status); // e.g. PYT-19044D349D Processingimport os
import requests
BASE = "https://sandbox.dev.business.mamopay.com/manage_api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['MAMO_API_KEY']}"}
# 1. Check the IBAN
iban = "AE080200000123223333121"
check = requests.get(f"{BASE}/iban/validate", headers=HEADERS, params={"iban": iban}).json()
assert check["valid"], "Invalid IBAN"
# 2. Save the recipient
recipient = requests.post(f"{BASE}/recipients", headers=HEADERS, json={
"recipient_type": "individual", "first_name": "Sara", "last_name": "Khan",
"relationship": "others", "bank": {"iban": iban, "country": "AE"},
}).json()
# 3. Send the payout
payouts = requests.post(f"{BASE}/payouts", headers=HEADERS, json={
"disbursements": [{
"recipient_id": recipient["identifier"], "transfer_method": "BANK_ACCOUNT",
"reason": "Invoice payment", "amount": "75.00",
}],
}).json()
print(payouts[0]["identifier"], payouts[0]["status"]) # e.g. PYT-19044D349D Processing<?php
const BASE = 'https://sandbox.dev.business.mamopay.com/manage_api/v1';
function mamo($method, $path, $body = null) {
$ch = curl_init(BASE . $path);
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => $method,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('MAMO_API_KEY'),
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => $body ? json_encode($body) : null,
]);
return json_decode(curl_exec($ch), true);
}
// 1. Check the IBAN
$iban = 'AE080200000123223333121';
$check = mamo('GET', "/iban/validate?iban=$iban");
if (!$check['valid']) throw new Exception('Invalid IBAN');
// 2. Save the recipient
$recipient = mamo('POST', '/recipients', [
'recipient_type' => 'individual', 'first_name' => 'Sara', 'last_name' => 'Khan',
'relationship' => 'others', 'bank' => ['iban' => $iban, 'country' => 'AE'],
]);
// 3. Send the payout
$payouts = mamo('POST', '/payouts', ['disbursements' => [[
'recipient_id' => $recipient['identifier'], 'transfer_method' => 'BANK_ACCOUNT',
'reason' => 'Invoice payment', 'amount' => '75.00',
]]]);
echo $payouts[0]['identifier'] . ' ' . $payouts[0]['status']; // e.g. PYT-19044D349D ProcessingExample response
[
{
"id": 879,
"identifier": "PYT-19044D349D",
"name": "Sara Khan",
"amount_formatted": "75.00",
"currency": "AED",
"method": "Bank account",
"recipient": "AE080200000123223333121",
"created_at": "04/12/2025",
"status": "Processing",
"reason": "Invoice payment"
}
]Updated about 3 hours ago
Did this page help you?