The transaction object

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

  • card_transaction.create: a card transaction is recorded.
  • card_transaction.update: Mamo receives a later update for an existing transaction (for example clearing or a reversal). Same payload.

Raw sample

{
  "kind": "purchase",
  "merchant_name_formatted": "ACQUIRER NAME",
  "amount_currency": "AED",
  "billing_amount_currency": "AED",
  "status": "success",
  "id": "CTX-6F7A8B9C0D",
  "merchant_name": null,
  "amount": 100.0,
  "billing_amount": 100.0,
  "card": {
    "identifier": "CRD-1A2B3C4D5E",
    "card_name": "Team travel card",
    "card_last4": "1234"
  },
  "card_holder": {
    "identifier": "MBOWNR-1A2B3C4D5E",
    "fullname": "Jane Doe",
    "email": "[email protected]"
  },
  "created_at": "18 Dec 2025, 11:24 AM",
  "updated_at": "18 Dec 2025, 11:24 AM",
  "expense": {
    "status": "incomplete",
    "description": null,
    "invoice_number": null,
    "id": "EXP-3C4D5E6F7A",
    "transaction": {
      "amount": 100.0,
      "amount_currency": "AED",
      "billing_amount": 100.0,
      "billing_amount_currency": "AED"
    },
    "card": {
      "identifier": "CRD-1A2B3C4D5E",
      "name": "Team travel card",
      "last4": "1234"
    },
    "user": {
      "identifier": "MBOWNR-1A2B3C4D5E",
      "fullname": "Jane Doe",
      "email": "[email protected]"
    },
    "category": null,
    "tax_code": null,
    "payment_account": null,
    "expense_account": null,
    "vendor": null,
    "receipt_uploaded": false,
    "created_at": "18 Dec 2025, 11:24 AM",
    "updated_at": "18 Dec 2025, 11:24 AM"
  },
  "event_type": "card_transaction.create"
}

Field descriptions

FieldTypeDescription
kindStringTransaction type: purchase, cash_withdrawal, refund, balance_inquiry, account_verification, wallet_debit, wallet_credit, wallet_transfer, oct, aft, quasi_cash or other
merchant_name_formattedStringFormatted merchant name
amount_currencyStringTransaction currency
billing_amount_currencyStringBilling currency
statusStringTransaction status: success, reversed, declined or refunded
idStringTransaction ID
merchant_nameStringRaw merchant descriptor, returned only for some ad-platform and payment-processor descriptors (for example FACEBK *..., GOOGLE *ADS..., PP*...); otherwise null. Use merchant_name_formatted for display.
amountNumberTransaction amount
billing_amountNumberBilling amount
cardObjectThe card used
card.identifierStringCard ID
card.card_nameStringCard name/label
card.card_last4StringLast 4 digits of the card
card_holderObjectThe user the card is issued to
card_holder.identifierStringUser ID
card_holder.fullnameStringUser's full name
card_holder.emailStringUser's email
created_atStringTransaction creation date (Dubai time), format DD Mon YYYY, hh:mm AM
updated_atStringTransaction last update date (Dubai time), same format
expenseObjectLinked expense; an empty object {} when the transaction has no expense
expense.statusStringExpense status (incomplete-pending_review-ready-synced)
expense.descriptionStringExpense description
expense.invoice_numberStringInvoice number
expense.idStringExpense ID
expense.transactionObjectAmounts of the card transaction
expense.transaction.amountNumberTransaction amount
expense.transaction.amount_currencyStringTransaction currency
expense.transaction.billing_amountNumberBilling amount
expense.transaction.billing_amount_currencyStringBilling currency
expense.cardObjectThe card used
expense.card.identifierStringCard ID
expense.card.nameStringCard name/label
expense.card.last4StringLast 4 digits of the card
expense.userObjectThe user the expense belongs to
expense.user.identifierStringUser ID
expense.user.fullnameStringUser's full name
expense.user.emailStringUser's email
expense.categoryStringExpense category
expense.tax_codeStringTax code
expense.payment_accountStringPayment account
expense.expense_accountStringExpense account
expense.vendorStringVendor information
expense.receipt_uploadedBooleanWhether receipt is uploaded
expense.created_atStringDate of the card transaction the expense was created from
expense.updated_atStringExpense last update date
event_typeStringcard_transaction.create or card_transaction.update