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 Processing
import 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 Processing

Example 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"
  }
]

Did this page help you?