Journal entry line items now accept optional vat_code and vat_type fields on POST /journal-entries and PUT /journal-entries/{id}, letting you record VAT on individual lines.

{
  "items": [
    {
      "account_code": "4000",
      "amount": { "amount": "100", "currency": "USD" },
      "side": "CREDIT",
      "vat_code": "GB_VAT_STANDARD",
      "vat_type": "Revenue"
    }
  ]
}
  • vat_code is the code or description of an existing VAT rate configured for the journal entry subsidiary's country.
  • vat_type is required whenever vat_code is provided, and accepts Revenue, Revenues, Expense, or Expenses (case-insensitive).
  • VAT is always treated as inclusive of the line amount.
  • Your organization must have an account with the "Sales Tax Liability" subtype in its chart of accounts; otherwise the request returns a 400 error.

V3 and later.

The BankAccount resource now includes an optional transactions_start_date field, indicating the earliest date from which transactions are tracked.

On POST /bank-accounts, you may now supply transactions_start_date to backfill the tracking window. When omitted, the account starts tracking from the date of creation (the previous behavior).

V3 and later.

The GET /draft-contracts endpoint is now available, allowing you to list draft contracts with cursor pagination.

Supports optional subsidiary_id and customer_id filters. V3 and later.

Stage contracts for human review instead of creating them directly as active contracts:

  • POST /draft-contracts - Create a contract in the "draft" holding state
  • GET /draft-contracts/{id}, PUT /draft-contracts/{id}, and DELETE /draft-contracts/{id} - Retrieve, replace, or delete a draft contract
  • Compatibility: the existing /pending-contracts endpoints remain available with their current request and response shapes

Draft contracts appear in the Rillet UI under "Draft" for an operator to approve or reject.

Deduplication via external_references: to prevent duplicates on retry, attach at least one external_references entry with a stable (type, id) pair. Re-posting with any matching pair replaces the prior draft record. Draft contracts created without external_references are not deduplicated — every POST creates a new record.

Each reference's type slug must already be defined under Rillet Settings → External References for your organization. References attached at create time are preserved when the draft contract is later promoted to an active contract.

Once a draft contract is approved in the UI it becomes a regular contract.

The POST /reimbursements endpoint is now available, allowing you to programmatically create reimbursements.

Supply a payable_account_code to specify the credit-side GL account for the employee payable journal entry. All standard reimbursement fields are supported, including line items, custom fields, tax rates, service periods, and external references.

V3 and later.

The Invoice resource now includes a sent_at field on V3 endpoints, recording the timestamp an invoice was first sent to the customer from Rillet. The field is intended for downstream systems — particularly tax platforms — that need a precise, legally binding date for tax registration and similar compliance workflows.

sent_at is set the first time the invoice is sent and does not change on subsequent sends. It is null for invoices that have never been sent from Rillet, and is not populated by preview emails or payment reminders.

Available on all V3 endpoints that return an Invoice resource and on the invoice-updated webhook event.

The POST /journal-entries endpoint now accepts an optional related_entity field, allowing you to attach a customer or vendor to a journal entry at creation time.

{
  "related_entity": {
    "id": "<customer-or-vendor-uuid>",
    "type": "CUSTOMER"
  }
}

The type field accepts CUSTOMER or VENDOR. The entity ID is validated against your organization — invalid IDs will return a 400 error. V3 only.

  • Fix: Custom field assignments on invoice and credit memo line items sent in create/update requests are now persisted correctly.

A new endpoint to retrieve an executive profit and loss report:

  • GET /reports/executive-pl - Returns an executive P&L report with margins for a specified date range

Supports optional subsidiary_id, breakdown_by, consolidated, and currency parameters.