0.11.7
Account balance rate limiting — The
GET /v1/accounts/{id}/balance endpoint is now subject to a rate limit of 15 requests per second. Requests exceeding this limit will receive a 429 Too Many Requests response.GET /v1/accounts/{id}/balanceis now rate-limited to 15 requests/second. Implement exponential back-off or caching of balance values in your integration to stay within this limit.
0.11.6
- Added account validation for payment simulations. The simulation endpoints now verify that the referenced account exists and is active before processing, returning a descriptive error if validation fails.
0.11.5
Optional end-user name on account responses — You can now request that account responses include the associated end user’s name without a separate lookup.
- Added optional
endUserNamefield to account responses. PassincludeEndUserName=trueas a query parameter toGET /v1/accounts/{id}orGET /v1/accountsto include the field. - When the query parameter is omitted,
endUserNameis not present in the response.
0.11.4
New ID types for individual end users — Two additional government-issued ID types are now accepted for individual end-user onboarding.
- Added
DRIVING_LICENSEandNATIONAL_ID_CARDas valid values foridTypewhen creating individual end users. fullNameis deprecated as an input field onPOST /v1/end-users/individuals. Any value you submit is silently ignored. The API now auto-constructsfullNamefromfirstName,middleName, andlastName. ThefullNamefield continues to appear in all responses.
0.11.3
- Webhook delivery retries now only retry on temporary failures. Retries are triggered exclusively for HTTP status codes
408,409,421,423,425,429, and all5xxresponses. Previously, any HTTP error code (including permanent client errors like400or404) would trigger retry attempts. - Inactive webhook subscriptions are no longer retried. If a subscription is marked inactive at the time of a delivery attempt, the retry is skipped entirely.
0.11.2
currency field added to account responses and webhook payloads.- Added
currencyfield to account responses returned byGET /v1/accounts/{id}andGET /v1/accounts. - Added
account.currencyto theACCOUNT_CREATEDandACCOUNT_UPDATEDwebhook event payloads.
0.11.1
- Reusing the same
Idempotency-Keywith a different payload now returns409 Conflictwith error codeERR_7006. - Reusing the same
Idempotency-Keywhile the original request is still processing now returns409 Conflictwith error codeERR_7003. - Webhook subscription URL updates now validate the new domain against the tenant’s allowed domain list. Requests with an invalid domain return
400 Bad Request. - Organization end-user
websitefield now accepts both domain-only format (www.acme.com) and full URL format (https://www.acme.com).
0.11.0
onboardedInBanks replaces onboardInBanks in end-user responses — A new field is introduced to more clearly communicate completed bank onboarding status.- Added
onboardedInBanksto all end-user responses and toEND_USER_CREATED/END_USER_UPDATEDwebhook payloads. This field lists all banks where the end user’s onboarding is fully complete. onboardInBanksis deprecated in responses — useonboardedInBanksgoing forward. TheonboardInBanksfield is still accepted as input onPOSTrequest bodies.- Fixed a webhook delivery bug where
END_USER_UPDATEDevents triggered by onboarding status transitions could be delivered with incorrect payload data. - Inline counterparty on wire payments:
POST /v1/payments/wire/domesticandPOST /v1/payments/wire/internationalnow accept acreditorinline object in addition tocreditorId. You must provide exactly one ofcreditorIdorcreditor. Requests that include both, or neither, are rejected with a validation error.
0.10.0
Webhook redelivery, automatic intermediary routing, and ASCII validation — Three significant capability additions in this release.
- New endpoint:
POST /v1/webhook-subscriptions/{id}/redeliver— Redeliver webhook events for a given subscription. Supports two modes:specific: provide up to 100 explicit event IDs to redeliver.query: filter events by time window and delivery status. The time window may span a maximum of 7 days.
- Automatic intermediary routing number resolution: For counterparties with a
BICrouting type, the API now automatically resolves theintermediaryRoutingNumber. You no longer need to look up or supply this value manually. - ASCII-only character validation: All text fields now enforce ASCII-only input. Name fields (
firstName,lastName, etc.) acceptA–Z,a–z,0–9, spaces, and tabs. All other string fields must contain only printable ASCII characters. - Organization
websitefield is now validated as a well-formed URL.
0.9.0
New account webhook events — Your integration can now receive real-time notifications when accounts are created or updated.
- Added two new webhook event types:
ACCOUNT_CREATEDandACCOUNT_UPDATED, both using context typeACCOUNT. - Webhook payloads for these events include a full account snapshot with
accountNumber,bank, andwireInstructions.
0.8.0
New counterparty webhook events — Your integration can now receive real-time notifications when counterparties are created or updated.
- Added two new webhook event types:
COUNTERPARTY_CREATEDandCOUNTERPARTY_UPDATED, both using context typeCOUNTERPARTY. - Webhook payloads include a full counterparty snapshot at the time of the event.
0.7.0
Payment status simplification: The following status values have been removed:CHECKS_REQUESTED, CHECKS_PASSED, CHECKS_FAILED, SCREENING_FAILED, ENRICHED, SETTLED, and others from the previous expanded set.
The current supported payment statuses are:
Webhook event type changes:
The following outbound payment event types have been removed:
PAYMENT_WIRE_OUTBOUND_CREATED, PAYMENT_WIRE_OUTBOUND_MANUAL_REVIEW, and others from the previous set.
New outbound wire payment event types:
PAYMENT_WIRE_OUTBOUND_SCREENING_REQUESTEDPAYMENT_WIRE_OUTBOUND_SCREENING_PASSEDPAYMENT_WIRE_OUTBOUND_ROUTEDPAYMENT_WIRE_OUTBOUND_RECEIVED_BY_PARTNERPAYMENT_WIRE_OUTBOUND_COMPLETEDPAYMENT_WIRE_OUTBOUND_FAILED
PAYMENT_INTERNAL_SCREENING_REQUESTEDPAYMENT_INTERNAL_SCREENING_PASSEDPAYMENT_INTERNAL_ROUTEDPAYMENT_INTERNAL_RECEIVED_BY_PARTNERPAYMENT_INTERNAL_COMPLETEDPAYMENT_INTERNAL_FAILED
0.6.0
Payment retrieval and search endpoints are now available.
- Added
GET /v1/payments/{id}endpoint for retrieving a single payment by ID. Requires thepayments:readscope. - Added
POST /v1/payments/searchendpoint for searching payments bypaymentIdorendToEndId. - Payment response objects now include the following new fields:
e2eId— end-to-end payment identifierwire.initialImad— initial IMAD assigned at submissionwire.finalImad— final IMAD assigned after settlementidAssignedByBank— the ID assigned by the partner bank
0.5.0
Scope-based authorization: All API endpoints now require JWT access tokens that include the appropriate scope claim. Scopes follow the format{resource}:{permission} (e.g., accounts:read, payments:write). Requests with tokens missing the required scope receive 403 Forbidden.
Standardized error response format:
All error responses now follow a consistent structure:
error.code, error.statusCode, and error.details from this structure. The requestId field is useful when contacting support for incident investigation.