Finance

List expense templates

Retrieve matching expense templates.

GET/v1/expenses/templates

Query parameters

filter[id] string

Filter expense-templates by id. Use operator.value syntax.

eq, neq, in, is operators

Exampleeq.01JQ2T5Y5Q3R8W9N6M4K2H7P1A
filter[vendorId] string

Filter expense-templates by vendorId. Use operator.value syntax.

eq, neq, in, is operators

Exampleeq.01JQ2T5Y5Q3R8W9N6M4K2H7P1C
filter[clientId] string

Filter expense-templates by clientId. Use operator.value syntax.

eq, neq, in, is operators

Exampleeq.01JQ2T5Y5Q3R8W9N6M4K2H7P1C
filter[projectId] string

Filter expense-templates by projectId. Use operator.value syntax.

eq, neq, in, is operators

Exampleeq.01JQ2T5Y5Q3R8W9N6M4K2H7P1D
filter[bankAccountId] string

Filter expense-templates by bankAccountId. Use operator.value syntax.

eq, neq, gt, gte, lt, lte, in, is operators

Exampleeq.01JQ2T5Y5Q3R8W9N6M4K2H7P1A
filter[name] string

Filter expense-templates by name. Use operator.value syntax.

eq, neq, in, is operators

Exampleeq.example
filter[description] string

Filter expense-templates by description. Use operator.value syntax.

eq, neq, gt, gte, lt, lte, in, is operators

Exampleeq.example
filter[notes] string

Filter expense-templates by notes. Use operator.value syntax.

eq, neq, gt, gte, lt, lte, in, is operators

Exampleeq.example
filter[tags] string

Filter expense-templates by tags. Use operator.value syntax.

in, is operators

Examplein.(example)
filter[recurrenceMonths] string

Filter expense-templates by recurrenceMonths. Use operator.value syntax.

eq, neq, gt, gte, lt, lte, in operators

Exampleeq.1
filter[createdBy] string

Filter expense-templates by createdBy. Use operator.value syntax.

eq, neq, gt, gte, lt, lte, in, is operators

Exampleeq.example
filter[updatedBy] string

Filter expense-templates by updatedBy. Use operator.value syntax.

eq, neq, gt, gte, lt, lte, in, is operators

Exampleeq.example
filter[deletedBy] string

Filter expense-templates by deletedBy. Use operator.value syntax.

eq, neq, gt, gte, lt, lte, in, is operators

Exampleeq.example
filter[amount] string

Filter expense-templates by amount. Use operator.value syntax.

eq, neq, gt, gte, lt, lte operators

Exampleeq.100.00
filter[startedAt] string

Filter expense-templates by startedAt. Use operator.value syntax.

eq, neq, gt, gte, lt, lte, is operators

Exampleeq.2026-01-15T12:00:00Z
filter[endedAt] string

Filter expense-templates by endedAt. Use operator.value syntax.

eq, neq, gt, gte, lt, lte, is operators

Exampleeq.2026-01-15T12:00:00Z
filter[nextDueAt] string

Filter expense-templates by nextDueAt. Use operator.value syntax.

eq, neq, gt, gte, lt, lte, is operators

Exampleeq.2026-01-15T12:00:00Z
filter[createdAt] string

Filter expense-templates by createdAt. Use operator.value syntax.

eq, neq, gt, gte, lt, lte, is operators

Exampleeq.2026-01-15T12:00:00Z
filter[updatedAt] string

Filter expense-templates by updatedAt. Use operator.value syntax.

eq, neq, gt, gte, lt, lte, is operators

Exampleeq.2026-01-15T12:00:00Z
filter[deletedAt] string

Filter expense-templates by deletedAt. Use operator.value syntax.

eq, neq, gt, gte, lt, lte, in, is operators

Exampleeq.2026-01-15T12:00:00Z
filter[currencyId] string

Filter expense-templates by currencyId. Use operator.value syntax.

eq, neq, in, is operators

Exampleeq.01JQ2T5Y5Q3R8W9N6M4K2H7P1F
filter[currencyCode] string

Filter expense-templates by currencyCode. Use operator.value syntax.

eq, neq, in, is operators

Exampleeq.SAR
select string

Comma-separated fields. Select a declared relation with relation(field,field).

declared fields and relations only

Exampleid,vendorId
order string

Order by field.asc or field.desc. Repeat fields with commas.

repeat fields separated by commas

Exampleid.asc,vendorId.asc
limit integer

Maximum records returned. Defaults to 25.

1 to 1000

Example25
cursor string

Opaque continuation cursor returned by the previous page.

Exampleopaque-cursor
count string

Request an exact count. This may cost more than a normal page.

exact

Exampleexact
Query options

Use filter, select, order, limit, cursor, count, search. The default limit is 25; the maximum is 1000.

Filterable: id, vendorId, clientId, projectId, bankAccountId, name, description, notes, tags, recurrenceMonths, createdBy, updatedBy, deletedBy, amount, startedAt, endedAt, nextDueAt, createdAt, updatedAt, deletedAt, currencyId, currencyCode.

Selectable: id, vendorId, clientId, projectId, bankAccountId, name, description, notes, currency, entries, modifiers, tags, recurrenceMonths, createdBy, updatedBy, deletedBy, amount, totals, startedAt, endedAt, nextDueAt, createdAt, updatedAt, deletedAt, vendorWebsite, projectWebsite, clientWebsite, clientType.

Sortable: id, vendorId, clientId, projectId, bankAccountId, name, description, notes, recurrenceMonths, createdBy, updatedBy, deletedBy, amount, startedAt, endedAt, nextDueAt, createdAt, updatedAt, deletedAt, currencyId, currencyCode.

Errors: invalid_input, query_invalid, unauthenticated, not_found, forbidden, plan_limit, conflict, rate_limited, request_quota, unavailable, internal_error.

Headers

authorization string required

Bearer workspace API key.

ExampleBearer $NQD_API_KEY
workspace-id string required

Workspace scope for the request. Required for workspace operations and must belong to the authenticated identity.

Minimum length: 1 character. · Maximum length: 128 characters.

Example01JQ2T5Y5Q3R8W9N6M4K2H7P1A

Recurring templates store schedules. The recurring process creates due records and payments.

Response

200Success

Response headers

x-request-id string

Correlation identifier returned with every response for support and request tracing.

Example550e8400-e29b-41d4-a716-446655440000
data object[]

Returned records. Collections and batches use an array; single records use an object.

ShowHide 28 properties
data[].id string

Opaque identifier for this resource or reference.

Example01JQ2T5Y5Q3R8W9N6M4K2H7P1S
data[].vendorId string

ID of the related vendor.

Example01JQ2T5Y5Q3R8W9N6M4K2H7P1C
data[].clientId string

Optional client reference. Null means the current workspace owns the record; do not create a placeholder client.

Examplenull
data[].projectId string

Project identifier within the current workspace.

Examplenull
data[].bankAccountId string

ID of the related bank account.

Examplenull
data[].name string

Display name of the record.

ExampleOffice cleaning
data[].description string

Optional human-readable description of the record.

ExampleMonthly office cleaning service
data[].notes string

Notes attached to the record.

ExampleOffice cleaning service for January 2026
data[].currency object

Referenced currency with its opaque ID and ISO 4217 currency code.

ShowHide 3 properties
data[].currency.id string

Opaque identifier for this resource or reference.

Minimum length: 1 character. · Maximum length: 128 characters.

Example01JQ2T5Y5Q3R8W9N6M4K2H7P1F
data[].currency.code string

ISO 4217 currency code, such as SAR or USD.

Minimum length: 1 character. · Maximum length: 128 characters.

ExampleSAR
data[].currency.conversion object

Currency conversion quote used for reporting, including source, target, and rate.

ShowHide 3 properties
data[].currency.conversion.from string

ISO 4217 code of the source currency in this persisted quote.

Minimum length: 1 character. · Maximum length: 128 characters.

ExampleSAR
data[].currency.conversion.to string

ISO 4217 code of the target reporting currency in this persisted quote.

Minimum length: 1 character. · Maximum length: 128 characters.

ExampleSAR
data[].currency.conversion.rate string

Exact decimal conversion rate from the quote source currency to its target currency.

Maximum length: 128 characters.

Example1.00
data[].entries object[]

Applied economic entries. Each entry is a reusable priced unit for a product, service, plan, or other calculable line. Entry prices are authored net prices; the workspace tax modifier calculates VAT.

ShowHide 7 properties
data[].entries[].id string

Opaque identifier for this resource or reference.

Minimum length: 1 character. · Maximum length: 128 characters.

Example01JQ2T5Y5Q3R8W9N6M4K2H7P1H
data[].entries[].appliedId string nullable

Stable identity of this saved modifier application. Preserve it when updating a financial record, including repeated uses of the same catalog modifier.

Minimum length: 1 character. · Maximum length: 128 characters.

ExampleConsulting services
data[].entries[].name string

Display name of the record.

Maximum length: 10000 characters.

ExampleOffice cleaning
data[].entries[].description string

Optional human-readable description of the record.

Maximum length: 10000 characters.

ExampleMonthly office cleaning service
data[].entries[].quantity string

Exact decimal string used for financial calculations. Do not round or convert it to a display number.

Maximum length: 128 characters.

Example3.00
data[].entries[].unit string

Unit code from the workspace catalog.

Minimum length: 1 character. · Maximum length: 128 characters.

Exampleitem
data[].entries[].pricePerUnit string

Exact decimal string used for financial calculations. Do not round or convert it to a display number.

Maximum length: 128 characters.

Example50.00
data[].modifiers object[]

Modifiers applied to one entry or the whole source. Supported values are signed fixed amounts or percentages, such as `15.00%` or `-25.00`; arbitrary multiplication and division are not supported.

at most 1000 items

ShowHide 6 properties
data[].modifiers[].id string

Opaque identifier for this resource or reference.

Minimum length: 1 character. · Maximum length: 128 characters.

Example01JQ2T5Y5Q3R8W9N6M4K2H7P1J
data[].modifiers[].appliedId string nullable

Stable identity of this saved modifier application. Preserve it when updating a financial record, including repeated uses of the same catalog modifier.

Minimum length: 1 character. · Maximum length: 128 characters.

ExampleConsulting services
data[].modifiers[].name string

Display name of the record.

Minimum length: 1 character. · Maximum length: 10000 characters.

ExampleVAT
data[].modifiers[].description string nullable

Optional human-readable description of the record.

Maximum length: 10000 characters.

ExampleValue added tax
data[].modifiers[].entryIndex number nullable

entry index within modifiers.

Example100
data[].modifiers[].value string

Modifier value. A trailing `%` marks a percentage; a leading `-` marks a decrease. Modifiers support fixed or percentage adjustments, not arbitrary multiplication or division.

Maximum length: 128 characters.

Example15.00%
data[].tags string[]

Tags assigned to the record.

Example1 item
data[].recurrenceMonths number

recurrence months for this expense template.

Example1
data[].createdBy string

Identifier of the identity that created the record.

Example01JQ2T5Y5Q3R8W9N6M4K2H7P1B
data[].updatedBy string

Identifier of the identity that last updated the record.

Examplenull
data[].deletedBy string

deleted by for this expense template.

Examplenull
data[].amount string

Exact decimal string used for financial calculations. Do not round or convert it to a display number.

Example172.50
data[].totals object

totals for this expense template.

ShowHide 7 properties
data[].totals.base string

base within totals.

Example150.00
data[].totals.net string

Total before tax and other modifiers.

Example150.00
data[].totals.tax string

Tax calculated from the workspace payable modifier.

Example22.50
data[].totals.gross string

Total after tax and other price modifiers.

Example172.50
data[].totals.payable string

Amount due after all applied modifiers.

Example172.50
data[].totals.reporting string

Amount converted to the workspace reporting currency.

Example172.50
data[].totals.lineTotals object

line totals within totals.

data[].vendorWebsite string[] nullable

vendor website for this expense template.

Example1 item
data[].projectWebsite string nullable

project website for this expense template.

Examplehttps://example.com
data[].clientWebsite string[] nullable

client website for this expense template.

Example1 item
data[].clientType string nullable

client type for this expense template.

Allowed values: "individual", "company", "government"

Exampleindividual
data[].startedAt string

ISO 8601 timestamp for started.

Example2026-01-15T12:00:00.000Z
data[].endedAt string

ISO 8601 timestamp for ended.

Example2026-01-15T12:00:00.000Z
data[].nextDueAt string

ISO 8601 timestamp for next due.

Example2026-01-15T12:00:00.000Z
data[].createdAt string

ISO 8601 timestamp for the authored or payment event. Recurring records preserve their scheduled occurrence.

Example2026-01-15T12:00:00.000Z
data[].updatedAt string

Timestamp used for stale-edit protection. Preserve the server value when updating.

Example2026-01-15T12:00:00.000Z
data[].deletedAt string

ISO 8601 timestamp when the record was deleted, or null when it exists.

Examplenull
page object

Pagination metadata for the returned records, or the current page number when this endpoint uses numbered pages.

ShowHide 4 properties
page.limit number

Maximum number of records to return for this page.

Example1
page.hasMore boolean

Whether another page is available.

Examplefalse
page.nextCursor string

Opaque cursor for the next page, or null when there is no next page.

Examplenull
page.total number nullable

Total number of records that match the request.

Example1

Possible errors

400 Invalid request

Response headers

x-request-id string

Correlation identifier returned with every response for support and request tracing.

Example550e8400-e29b-41d4-a716-446655440000
error object

Error details returned for a failed request.

ShowHide 4 properties
error.code string

Stable machine-readable error or resource code.

Exampleinvalid_input
error.message string

Human-readable explanation of the result or error.

ExampleThe request could not be validated.
error.requestId string

Correlation identifier for support and request tracing.

Example550e8400-e29b-41d4-a716-446655440000
error.details object nullable

Additional structured details about the result or error.

ShowHide 1 property
error.details.issues object[]

Structured field issues returned when request validation fails.

ShowHide 3 properties
error.details.issues[].path string | number[]

Field path where the validation issue occurred.

One of: string alternative 1, number alternative 2

Example0 items
error.details.issues[].reason string

Machine-readable reason for the validation issue.

Allowed values: "expected_type", "required", "unexpected_property", "invalid_value", "invalid_json", "invalid_query", "unsupported_media_type", "body_too_large", "body_timeout", "conflicting_scope", "missing_header", "concurrency_required", "invalid_resource_id", "invalid_request"

Exampleinvalid_request
error.details.issues[].code string nullable

Stable machine-readable error or resource code.

Exampleinvalid_input
Example 400 response
{
  "error": {
    "code": "invalid_input",
    "message": "The request could not be validated.",
    "requestId": "550e8400-e29b-41d4-a716-446655440000",
    "details": {
      "issues": [
        {
          "path": [],
          "reason": "invalid_request"
        }
      ]
    }
  }
}
View raw OpenAPI operation

Use the machine-readable contract for client generation and payload validation.

Open OpenAPI contract ↗