Sail

Expense

An Expense is a transaction or a purchased item that Sail classifies for Section 213(d) eligibility. This is the full field reference; see Get Expense or List Expenses to retrieve one.

  • id (string)
  • connection_id (string): the connection this expense was sourced from.
  • external_transaction_id (string, nullable): echo of the customer-supplied id for expenses ingested through an external connection, null for Sail-sourced expenses. Join key back to the customer’s own transaction store.
  • name (string)
  • description (string)
  • date (string)
  • amount (number): USD.
  • source_type (enum): how this expense entered Sail, pairs with the source_type list filter. Possible values: card, store, receipt_upload, external.
  • origin (object): what the expense was derived from.
    • type (enum): transaction, derived from a bank or credit card transaction (one expense per transaction, split via parent_expense_id after itemization). product, derived from an individual product line (store order data or an itemized receipt). Possible values: transaction, product.
    • detail (string, nullable): the raw descriptor (transactions) or product title (products) the expense was derived from.
  • merchant (object): the merchant this expense was incurred at, as resolved by enrichment. supported_merchant_id references the merchants directory only when the merchant is one Sail can connect to for store data, it’s null for the long tail of merchants that are recognized but not scrape-supported.
    • name (string). Example: Costco.
    • logo_url (string, nullable)
    • supported_merchant_id (string, nullable). Example: mer_costco.
  • enrichment (object): general transaction enrichment, independent of Section 213(d) classification.
    • category (string, nullable): general spend category. Example: Pharmacies.
    • subcategory (string, nullable). Example: Drug Stores.
    • mcc (string, nullable): merchant category code, when derived from a card transaction or supplied at ingest.
  • parent_expense_id (string, nullable): links an item-level expense back to the transaction-level expense it enriched, whether that item-level data came from a store connection or from an itemized receipt. Null for top-level expenses.
  • section_213d_classification (object): Section 213(d) eligibility classification. The review states pair with origin.type, lmn_required applies to product-origin expenses (a dual-purpose item that becomes eligible with a Letter of Medical Necessity), itemization_required applies to transaction-origin expenses (a mixed basket that needs an itemized receipt before line items can be classified).
    • status (enum). Possible values: eligible, lmn_required, itemization_required, ineligible.
    • category (string, nullable): Section 213(d) category. Example: Health Monitoring Devices.
    • reasoning (string, nullable)
  • created_at (timestamp)
  • updated_at (timestamp)