Skip to main content
2026-10-23
Errors are now documented and easier to handle:
  • Every /v1 error response includes doc_url, a link to the page for its code, except for a request body that is too large or can’t be read, and for an Idempotency-Key replay of a response stored before this release. The new Errors tab explains each code and how to handle it.
  • A missing required field now returns code: "parameter_missing". It previously returned a type-error code such as parameter_invalid_string.
  • An invalid or missing X-Organization-Id header now reports parameter_invalid or parameter_missing for the header in invalid-params, matching the top-level code, instead of a generic validation_error.
  • A value repeated within one request on POST /v1/contacts or POST /v1/entities now returns top-level code: "parameter_invalid", matching invalid-params, instead of validation_error.
  • A request body that isn’t valid JSON now returns the Error object with code: "validation_error" instead of an HTML page.
  • POST /v1/distributions for a vehicle with no bank account for payouts now returns 400 instead of 500, and an unknown vehicle returns a 400 field error instead of 500.
  • A string longer than its maximum now returns parameter_invalid_string instead of parameter_invalid.
Once a transfer was submitted, distribution payment status now reports failed when none is in flight or settled and the most recent transfer to end failed, was rejected or was cancelled, and the new returned value when the bank sent it back. Previously both reported disbursed.New documentation:Documentation fixes so the spec matches what the API returns:
  • POST /v1/distributions creates and publishes exactly one distribution (the array must contain a single item). Its payments start as staged.
  • Every endpoint can return 400, for example on a malformed path ID or X-Organization-Id header.
  • Unknown entities or contacts on POST /v1/distributions return 400, not 404, and its 409 means the external_reference already exists.
  • POST /v1/payment_instructions validates its input and can return 404 and 409.
  • Every create lists the 409 returned while an earlier request with the same Idempotency-Key is still running, and 422 covers reusing a key for a different method, path or organization, not only a different body.
  • X-Organization-Id is optional when the access token is bound to an organization or the integration can access only one.
  • The id filter on transactions can’t be combined with after or before.
  • An id filter on any list returns every match in one page and can’t be combined with page, page_before or limit, correcting the 1.10.0 note that pagination applies within the filtered set.
  • Clarifies sender_payment_instructions_url and the deprecated list url.
2026-10-22

timeless + timezone-less after + before filters

On GET /financial_accounts/{fa_id}/transactions, the after and before filters now accept a plain date (2026-01-01, read as midnight UTC) and datetimes without an offset (2026-01-01T09:00:00, read as UTC).Previously both required a datetime with a UTC offset or Z.
API documentation around dates and times have been overhauled.See:
2026-10-20
Documents the min/max length of every id.
2026-10-19
Financial account balance objects now include pending_debit and pending_credit. total now includes outgoing payments that are still pending at the bank, so it can exceed the newest transaction’s balance until they settle.
2026-10-16
transaction.source.type is now
  • wire - incoming or outgoing wire transfer
  • ach - ach pull or push
  • transfer - on-platform transfers between Nova-mangaged accounts
  • other
Transaction direction can be inferred from the signed amount field. Positive amounts indicate a credit to the financial account, while negative amounts indicate a debit.Wire sources retain the memo field.
Note on returns:
This relesae fixes a minor bug where the “return leg” of a returned wire transfer was incorrectly labeled as status: "returned" instead of status: "completed".As a reminder, the return state machine is as follows:
  1. Initiating wire transfer (tx_1) completes (status: "completed")
  2. Days later, tx_1 is rejected by the destination (status: "returned")
  3. Return leg (tx_2``) is created and completes (status: “completed”`)
Final state:Full semantics now live at Transaction.
2026-10-16
New endpoint GET /financial_accounts/{fa_id}/transactions/{tx_id} retrieves one transaction by the id the transactions list returned.
2026-10-15
GET /financial_accounts/{fa_id}/transactions now supports:
  • sort_by=settled_at (default) or sort_by=created_at
  • independently optional ISO 8601 after and before date bounds
  • backward paging via previous_page_url
  • repeated id filters (max 100), returning matches in one unpaginated page. transaction objects now include financial_account, updated_at, and workflow (the Nova activity, currently a distribution payment, that caused the transaction, or null for bank activity Nova did not initiate). The endpoint now allows up to 1000 transactions per page (default 100).
2026-10-07
New endpoint GET /financial_accounts/{fa_id}/transactions lists a financial account’s transactions, newest first.
2026-10-02
New endpoint GET /financial_accounts/{fa_id} to retrieve a single financial account record.
2026-10-01
New endpoint GET /financial_accounts lists the financial accounts an organization holds across all vehicles.
2026-09-29
The sandbox base URL is now https://api.nova-sandbox.net (previously https://api-sandbox.nova.net).
2026-09-15
New endpoint GET /organizations/{org_id} returns an organization by id.
2026-09-08
New endpoint POST /entities/{ent_id}/contacts associates existing contacts with an entity. Previously this association was only created implicitly when publishing a distribution.
2026-09-08
New endpoint GET /vehicles/{veh_id} returns a vehicle, including sender_entities_url — a link to review the vehicle’s entities in the Nova dashboard.
2026-09-08
The entity response now includes a recipient_payment_instructions_verification_url linking the recipient to the payment details verification flow for that entity.
2026-09-04
Every list endpoint now accepts a repeated id query parameter to filter the list to specific ids (max 100 per request), e.g. ?id=cnt_abc&id=cnt_def. Pagination still applies within the filtered set.
2026-08-11
New endpoint GET /vehicles/{veh_id}/financial_accounts lists the financial accounts a vehicle holds.
2026-07-29
GET /entities/{id} now returns sender_payment_instructions_url and recipient_payment_instructions_url.
2026-07-24
Added distribution_timezone to distributions endpoints. Distribution dates will be rendered and returned in the specified timezone. If not provided, this field defaults to UTC.
2026-07-22
Distribution sender_url and recipient_url now use the nova.angellist.com hostname.
2026-07-20
Datetime input fields now accept ISO 8601 strings with timezone offsets, in addition to Z (UTC) format. Datetime responses continue to be returned in Z (UTC) format.
2026-07-20
Added GET /payment_instructions/{id} to retrieve a single payment instructions record.
2026-07-16
Endpoints that accept an Idempotency-Key header now return 422 Unprocessable Entity when the same key is reused with a different request body, instead of silently replaying the original response.
2026-07-08
Added paginated GET /contacts and GET /entities list endpoints.
Last modified on October 27, 2026