Finance

Record a payment

Record a payment against the source using its currency and the selected or default bank account.

POST/v1/expenses/{sourceId}/transactions

Path parameters

sourceId string required

An opaque expense resource identifier.

Example01JQ2T5Y5Q3R8W9N6M4K2H7P1R

Body parameters

application/json · required
id string required

Opaque identifier for this resource or reference.

Example01JQ2T5Y5Q3R8W9N6M4K2H7P1X
signedAmount string required

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

Maximum length: 128 characters.

Example100.00
currencyId string required

Currency identifier for the amount. It selects the currency metadata used by the record.

Example01JQ2T5Y5Q3R8W9N6M4K2H7P1F
bankAccountId string nullable

ID of the related bank account.

Example01JQ2T5Y5Q3R8W9N6M4K2H7P1G
createdAt string nullable

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

Example2026-01-15T12:00:00.000Z

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

Financial sources describe what the money or wealth represents: Invoice, Income, Expense, Payout, and Asset.

Transactions describe cash events against a source. A source can be unpaid or partially paid; a Transaction records an actual cash movement.

Payment status and settlement dates come from Transactions; source headers do not accept a separate paidAt value.

The payment uses the source currency and the selected or configured workspace bank account; validate conversion when currencies differ.

Response

Success responses
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 2 properties
data.id string

Opaque identifier for this resource or reference.

Example01JQ2T5Y5Q3R8W9N6M4K2H7P1X
data.repeated boolean

repeated for this expense.

Exampletrue

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 ↗