Skip to main content
An expense is a type of bill for a purchase paid at the time of the transaction, such as a card purchase, cash purchase, or check written at the point of sale. Use expenses when you want to record the purchase and the payment together. Expenses are created with is_expense: true, status: PAID, and a payment for the full amount.

When to use expenses

Use an expense for purchases that are paid immediately. The Create expense endpoint accepts the purchase details, the paid_at timestamp, and the payment details in one request. Use a standard bill when you need to track accounts payable over time. For example, use a bill for a vendor invoice received today that will be paid later. Standard bills have is_expense: false and support payment terms, partial payments, and an outstanding balance.

API behavior

TaskExpenseStandard bill
CreatePOST /v1/businesses/{businessId}/expensesPOST /v1/businesses/{businessId}/bills
Initial statusPAIDRECEIVED, PARTIALLY_PAID, or PAID
PaymentIncluded at creationOptional at creation; can be added later
ListList expenses with is_expense=trueList bills with is_expense=false

Common workflow

  1. Create expense with purchase, vendor, line item, and payment details. The request is idempotent via external_id.
  2. List expenses with is_expense=true when you need a collection of expenses.
  3. Fetch expense with the expense id when you need one record.
  4. Match the expense payment to a bank transaction when Layer suggests a match.

Payment defaults

If both payment.method and payment.payment_clearing_account_identifier are omitted when creating an expense:
  • payment.method defaults to ACH.
  • payment.payment_clearing_account_identifier defaults to the Contributions account until the expense is matched to a bank transaction.
If you specify payment.method and omit payment.payment_clearing_account_identifier, no default clearing account is applied.