The payout object

You can expect the below object when you register a webhook for the following events:

  • payout.failed
  • payout.processed

Raw sample

{
  "reason": "Invoice payment",
  "id": "PYT-3C4D5E6F7A",
  "name": "Acme Chocolates",
  "amount": 100.12,
  "amount_currency": "AED",
  "method": "Bank account",
  "recipient": "AE070000000000000000038",
  "recipient_id": "REP-2B3C4D5E6F",
  "created_at": "2023-12-28-17-22-53",
  "status": "processed",
  "event_type": "payout.processed"
}

Field descriptions

FieldTypeDescription
reasonStringPayout reason
idStringPayout ID
nameStringRecipient name
amountNumberPayout amount
amount_currencyStringPayout currency
recipientStringRecipient IBAN
recipient_idStringRecipient ID
methodStringPayout method as a display label: Bank account (or Mamo Pay wallet for wallet transfers). The request field transfer_method takes BANK_ACCOUNT.
created_atString (Format: YYYY-MM-DD-HH-MM-SS)Payout creation time
statusStringPayout status, lowercase: processed or failed
event_typeStringWebhook event type

Status lifecycle

Only two changes send a webhook: payout.processed (status: processed) when the payout settles, and payout.failed (status: failed) when it fails. List payouts and Fetch payout info show the same states as Processing, Processed, Failed and Held by bank.

processed is not final. A processed payout can still fail, and you then receive payout.failed for it, so be ready for payout.failed to follow payout.processed. A payout can also move to Held by bank while the beneficiary bank reviews it, or be rejected by that bank; neither sends a webhook. A failed payout returns the amount to your balance and refunds the payout fee and its VAT.