2026-10-23
Errors are now documented and easier to handle:
- Every
/v1error response includesdoc_url, a link to the page for itscode, except for a request body that is too large or can’t be read, and for anIdempotency-Keyreplay 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 asparameter_invalid_string. - An invalid or missing
X-Organization-Idheader now reportsparameter_invalidorparameter_missingfor the header ininvalid-params, matching the top-levelcode, instead of a genericvalidation_error. - A value repeated within one request on
POST /v1/contactsorPOST /v1/entitiesnow returns top-levelcode: "parameter_invalid", matchinginvalid-params, instead ofvalidation_error. - A request body that isn’t valid JSON now returns the
Errorobject withcode: "validation_error"instead of an HTML page. POST /v1/distributionsfor a vehicle with no bank account for payouts now returns400instead of500, and an unknown vehicle returns a400field error instead of500.- A string longer than its maximum now returns
parameter_invalid_stringinstead ofparameter_invalid.
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:- Transaction — what each
status,source.typeandworkflow.typemeans, the status lifecycle, and how reversals and returns appear.TransactionStatus,TransactionSourceandTransactionWorkflowlink to it. - Object IDs — every ID prefix and the ID guarantees: IDs never change, and an object keeps its ID when it is updated.
- FinancialAccount — the account types and balance fields.
- List, Currency and IdempotencyKey — the conventions every endpoint shares.
- Distribution, DistributionPayment, PaymentInstructions, Entity, Contact, Organization and Vehicle.
POST /v1/distributionscreates and publishes exactly one distribution (the array must contain a single item). Its payments start asstaged.- Every endpoint can return
400, for example on a malformed path ID orX-Organization-Idheader. - Unknown entities or contacts on
POST /v1/distributionsreturn400, not404, and its409means theexternal_referencealready exists. POST /v1/payment_instructionsvalidates its input and can return404and409.- Every create lists the
409returned while an earlier request with the sameIdempotency-Keyis still running, and422covers reusing a key for a different method, path or organization, not only a different body. X-Organization-Idis optional when the access token is bound to an organization or the integration can access only one.- The
idfilter on transactions can’t be combined withafterorbefore. - An
idfilter on any list returns every match in one page and can’t be combined withpage,page_beforeorlimit, correcting the 1.10.0 note that pagination applies within the filtered set. - Clarifies
sender_payment_instructions_urland the deprecated listurl.
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 nowwire- incoming or outgoing wire transferach- ach pull or pushtransfer- on-platform transfers between Nova-mangaged accountsother
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:- Initiating wire transfer (
tx_1) completes (status: "completed") - Days later,
tx_1is rejected by the destination (status: "returned") - Return leg (
tx_2``) is created and completes (status: “completed”`)
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) orsort_by=created_at -
independently optional ISO 8601
afterandbeforedate bounds -
backward paging via
previous_page_url -
repeated
idfilters (max 100), returning matches in one unpaginated page.transactionobjects now includefinancial_account,updated_at, andworkflow(the Nova activity, currently a distribution payment, that caused the transaction, ornullfor 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.