Create Expense

Records a company expense against a category (and optionally a vendor). Set is_paid: true to also capture a payment for the full amount in the same call — payment.payment_type (or top-level payment_type) is then required and must be a configured payment-method key (e.g. cash, card, cheque, bank-transfer). A method configured with refRequired also needs a reference, and a bank-transfer method with transferReceiptRequired a receipt file; a paid expense missing either is rejected with 422 (payment_reference / receipt_file_id).

Optional purchase tax: send tax_id (and optionally tax_inclusive / tax_amount). amount stays the total payable with the tax included — e.g. {"amount": 530, "tax_id": 1} with a 6% GST returns tax_amount: 30, net_amount: 500, tax_rate: 0.06, outstanding_amount: 530.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…
Body Params
integer
required

Expense category id.

integer | null

Expense vendor id.

string
required
string | null
string
required

Expense date, e.g. 2026-08-12.

string | null
number
required
≥ 0.01
integer | null

Optional purchase (input) tax — a percentage tax of the company (per-quantity taxes are rejected with 422). Send null to clear it; omit the key to leave the expense's tax unchanged.

boolean | null

Defaults to true — amount already includes the tax, which is extracted from it. When false the tax is added on top and the stored amount becomes amount + tax.

number | null
≥ 0

The tax as printed on the bill; overrides the amount computed from the tax's rate.

string | null
boolean

When true, a payment for the full amount is captured immediately.

payment
object | null

Payment details used when is_paid is true: payment_type, reference, receipt_file_id, notes.

string | null

Top-level fallback for payment.payment_type.

string | null

Top-level fallback for payment.reference.

integer | null

Top-level fallback for payment.receipt_file_id.

integer | null

Id of an uploaded file to attach as the expense bill.

Headers
string
required

The merchant install this request acts on (install.store_id from the app.installed webhook).

Response

Language
Credentials
Bearer
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json