You can expect the below object when you register a webhook for the following events:
- expense.create
- expense.update
Raw sample
{
"status": "incomplete",
"description": null,
"invoice_number": null,
"id": "EXP-D5D1AE18F5",
"transaction": {
"amount": 10.0,
"amount_currency": "AED",
"billing_amount": 10.0,
"billing_amount_currency": "AED"
},
"category": "Waneta Glover Ret.",
"tax_code": null,
"payment_account": null,
"expense_account": null,
"vendor": null,
"receipt_uploaded": false,
"created_at": "14 Nov 2025, 03:39PM",
"updated_at": "14 Nov 2025, 03:39PM",
"event_type": "expense.update"
}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 |
| 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 | Expense creation date |
| updated_at | String | Expense last update date |
| event_type | String | Corresponding Webhook Event |
