You can expect the below object when you register a webhook for the following events:
- expense.create: an expense is created from a card transaction.
- expense.update: an expense's status changes (for example
incompletetopending_review). A new expense that moves straight topending_reviewsendsexpense.updateright afterexpense.create.
Mamo sends these events only when your business requires at least one expense detail (category, description or receipt) in its expense settings; otherwise no expense webhooks are sent.
Raw sample
{
"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": "expense.create"
}Field descriptions
| Field | Type | Description |
|---|---|---|
| status | String | Expense status (incomplete-pending_review-ready-synced) |
| description | String | Expense description |
| invoice_number | String | Invoice number |
| id | String | Expense ID |
| transaction | Object | Transaction details containing amount and currency information |
| transaction.amount | Number | Transaction amount |
| transaction.amount_currency | String | Transaction currency code |
| transaction.billing_amount | Number | Billing amount |
| transaction.billing_amount_currency | String | Billing currency code |
| card | Object | The card used |
| card.identifier | String | Card ID |
| card.name | String | Card name/label |
| card.last4 | String | Last 4 digits of the card |
| user | Object | The user the expense belongs to |
| user.identifier | String | User ID |
| user.fullname | String | User's full name |
| user.email | String | User's email |
| category | String | Expense category |
| tax_code | String | Tax code |
| payment_account | String | Payment account |
| expense_account | String | Expense account |
| vendor | String | Vendor information |
| receipt_uploaded | Boolean | Whether receipt is uploaded |
| created_at | String | Date of the card transaction the expense was created from (Dubai time), format DD Mon YYYY, hh:mm AM |
| updated_at | String | Expense last update date |
| event_type | String | expense.create or expense.update |