Use POST /ledgers/{ledgerId}/expenses to add an expense to a ledger.

Minimum request

curl https://qismah.app/api/public/v1/ledgers/ledger_id/expenses \
  -H "Authorization: Bearer qpk_your_token" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Dinner",
    "amountCents": 4200,
    "currency": "USD",
    "paidById": "user_id",
    "splitType": "EQUAL",
    "splits": [
      { "userId": "user_id" },
      { "userId": "member_id" }
    ]
  }'
amountCents is always the minor unit for the selected currency. For example, 4200 means USD 42.00.

Split types

Split typeUse whenSplit fields
EQUALEveryone shares evenly.userId
EXACTEach person has a fixed amount.userId, amountCents
PERCENTAGEEach person has a percentage.userId, percentageBasisPoints
SHARESThe cost is divided by share weights.userId, shares

Spread one invoice across days

For travel, rent, and hotel invoices, keep one expense record while spreading it across days or nights:
{
  "title": "Hotel",
  "amountCents": 120000,
  "currency": "SAR",
  "spentAt": "2026-07-05T12:00:00.000Z",
  "periodStart": "2026-07-05T12:00:00.000Z",
  "periodEnd": "2026-07-10T12:00:00.000Z",
  "allocationMode": "DAILY",
  "allocationUnit": "NIGHTS",
  "paidById": "user_id",
  "splitType": "EQUAL",
  "splits": [
    { "userId": "user_id" },
    { "userId": "member_id" }
  ]
}
Use allocationUnit: "NIGHTS" for stays where July 5 to July 10 is five nights. Use DAYS when both start and end dates should count as active days.