A new endpoint to retrieve a cash flow statement report for a specified date range:

  • GET /reports/cash-flow-statement - Returns a cash flow statement report

Supports optional subsidiary_id and breakdown_by parameters.

A new endpoint to retrieve an income statement report for a specified date range:

  • GET /reports/income-statement - Returns an income statement report

Supports optional subsidiary_id and breakdown_by parameters.

Improved error handling for invalid input on Products and Contracts endpoints:

  • Invalid account codes on product creation/update now return 400 Bad Request instead of 500 Internal Server Error
  • Invalid contract status filter values now return 400 Bad Request instead of 500 Internal Server Error

Contract usage billing configuration has been restructured into a single usage_configuration object:

  • Breaking Change: The usage_overage_invoicing and usage_commitment top-level fields on the Contract response have been replaced by usage_configuration
  • The new usage_configuration object contains:
    • usage_invoicing - Usage invoicing frequency, payment terms, invoice date, and cycle
    • minimum_commitment_invoicing - Commitment invoicing frequency and payment terms (only present when a minimum commitment is configured)
    • minimum_commitment_cycle - How often the minimum commitment resets (MONTHLY or CONTRACT)
    • contract_level_minimum_commitment - Shared minimum commitment across all usage items
  • Item-level minimum commitments: Contract items with usage pricing now support usage_minimum_commitment for per-item commitments
  • The interval field has been removed from UsageCommitment; use minimum_commitment_cycle instead

List journal entries with line item amounts converted to the subsidiary's reporting currency:

  • GET /reports/journal-entries - Returns reporting journal entries with local and reporting currency amounts
  • Supports pagination via limit and cursor parameters
  • Filter by subsidiary_id or updated.gt timestamp
  • Sort by created (default) or updated

List all available tax rates via the API:

  • GET /tax-rates - Returns all tax rates with their IDs, codes, country, description, and percentage
  • GET /tax-rates?country=US - Filter tax rates by country using a two-letter country code (ISO 3166-1 alpha-2)

Use the returned tax rate IDs when creating bills with specific tax codes.

Bill line items now accept an optional tax_code to reference a predefined tax rate:

  • Added optional tax_code field to the tax rate object on bill line items
  • When provided, the predefined rate's percentage, country, and description are used instead of the inline values

Filter journal entries by their posting date (the date the entry impacts the general ledger):

  • GET /journal-entries?date.gte=2023-12-01&date.lte=2023-12-31 - All JEs posted in December 2023

Supports date.gte and date.lte parameters, which can be combined to define a date window.

Subscribe to journal entry lifecycle events:

  • journal-entry-created - Triggered when a journal entry is created
  • journal-entry-updated - Triggered when a journal entry is updated
  • journal-entry-deleted - Triggered when a journal entry is deleted

Custom fields now include timestamps and support filtering by last update time:

  • Fields now include an updated_at field in API responses showing when the field was last modified
  • GET /fields?updated.gt={timestamp} - Filter fields updated after a specific timestamp

This allows you to efficiently synchronize custom field definitions by fetching only recently modified fields.