Category Labels

Bookkeeping without tracking the chart of accounts

Category labels serve as a layer of abstraction, simplifying the categorization of transaction entries. Labels eliminate the need to track the chart of accounts - developers can bookkeep entirely via labels and let Digits handle the heavy lifting of category resolution.

Labels can prefer AI categories (see AI Categorization), empowering Digits to fully recategorize as necessary. The label's configured category shapes our AI's understanding of the transaction's context, providing developers an opportunity to refine bookkeeping intent.

Creation

Category labels are created when calling the Sync Accounts endpoint. Digits will map the labels to categories from the chart of accounts. When writing transactions into Digits via Sync Transactions, labels are resolved to the underlying category, reducing the complexity of integrations.

📘

Category labels greatly simplify integrations

Every Digits-created integration uses category labels to eliminate the use of heuristics. The Digits ledger performs the heavy lifting of category mapping, AI categorization, and confidence management.

Example

An example of a label mapping provided to our Sync Accounts endpoint for a payroll integration.

api.LabelMapping(
  api.Clearing,       // label
  "Payroll Clearing", // description
  []api.CategoryType{api.CategoryTypeLiabilities}, // constraint
  
  // Category mapping configuration
  &api.SearchTerm{
    Names:   []string{"Payroll Clearing"}, // search terms
    Type:    api.CategoryTypeLiabilities,  // category type
    Subtype: api.CategorySubtypeLiabilityClearing,  // category subtype
    Parent: &api.SearchTerm{ // parent search configuration
      Names:   []string{"Liability Clearing"},
      Type:    api.CategoryTypeLiabilities,
      Subtype: api.CategorySubtypeLiabilityClearing,
    },
  },
)

After the source's Accounts are created, the labels can then be specified instead of category IDs on transaction entries:

[]connect.Entry{
  api.Entry(amount, "Net Pay", api.Label(api.Clearing), api.Debit),
  api.Entry(amount, "Net Pay", api.Label(api.Bank), api.Credit),
}

No further logic is required to track the specifics of the labeled categories - Digits will resolve the labels to the appropriate category and book the transaction, recategorizing as needed.