Deposit Account APIs
Create Deposit Account
Creates a deposit account for a Customer (or customers). An account.created event is raised when the call was successful.
Each deposit account is created using a specific deposit product. A deposit product is a predefined set of terms associated with this deposit account (e.g. interest rate, spending limits).
Use checking as the default value for the deposit product field while building your solution in sandbox . Contact Unit to create other deposit products under your organization.
Deposit Account creation request supports Idempotency, ensuring that performing multiple identical requests will have the same effect as performing a single request.
| Verb | POST |
| URL | https://api.s.unit.sh/accounts |
| Required Scope | accounts-write |
| Data Type | depositAccount |
| Timeout (Seconds) | 5 |
Attributes
| Name | Type | Description |
|---|---|---|
| depositProduct | string | The name of the deposit product. |
| tags Optional | object | Optional. See Tags. |
| idempotencyKey Optional | string | Optional. See Idempotency. |
Relationships
| Name | Type | Description |
|---|---|---|
| customer | Required for individual / business accounts. JSON:API Relationship | The customer the deposit account belongs to. The customer is either a business or an individual. |
| customers | Required for joint accounts. Array of JSON:API Relationship | The list of customers the deposit account belongs to. Each of the customers is an individual customer and at least one must be over 18 years old. |
You must provide exactly one of customer or customers.
curl -X POST 'https://api.s.unit.sh/accounts'
-H 'Content-Type: application/vnd.api+json'
-H 'Authorization: Bearer ${TOKEN}'
--data-raw '{
"data": {
"type": "depositAccount",
"attributes": {
"depositProduct": "checking",
"tags": {
"purpose": "checking"
},
"idempotencyKey": "3a1a33be-4e12-4603-9ed0-820922389fb8"
},
"relationships": {
"customer": {
"data": {
"type": "customer",
"id": "45555"
}
}
}
}
}'
Response
Response is a JSON:API document.
201 Created
| Name | Type | Description |
|---|---|---|
| data | DepositAccount | The requested resource after the operation was completed. |
{
"data": {
"type": "depositAccount",
"id": "42",
"attributes": {
"createdAt": "2000-05-11T10:19:30.409Z",
"name": "Peter Parker",
"status": "Open",
"depositProduct": "checking",
"routingNumber": "812345678",
"accountNumber": "1000000002",
"currency": "USD",
"balance": 10000,
"hold": 0,
"available": 10000,
"tags": {
"purpose": "checking"
}
},
"relationships": {
"customer": {
"data": {
"type": "customer",
"id": "45555"
}
}
}
}
}
Close Account
Closes an account. Closing an account is irreversible and can only be done by an Org user. An account.closed event is raised when the call was successful.
Closing an account will also close the cards associated with the account.
When closing an account with a balance of $1 or less, the funds will automatically be transferred to your organization's revenue account (see more at Account Low Balance Closure). When closing an account with a balance greater than $1, a check will be mailed to the business or individual address on file.
When closing an account with a negative balance, the balance will be considered a loss, and will be covered from your reserve account
Account closure checks are operationally issued by the partner bank/check processor. Check template and signer fields are not configurable through Unit API endpoints.
If you need to reissue an account closure check or get reissue status, contact Unit Support. There is currently no public API endpoint for closure-check reissue management or status lookup.
| Verb | POST |
| URL | https://api.s.unit.sh/accounts/:accountId/close |
| Required Scope | accounts-write |
| Data Type | depositAccountClose |
| Timeout (Seconds) | 5 |
Attributes
| Name | Type | Description |
|---|---|---|
| reason | string | The reason for closing the account. Either ByCustomer, Fraud, ByBank, or NegativeBalance. |
| fraudReason Optional | string | Optional. The expanded fraud reason for closing the account when Fraud is specified as the reason. Can be one of: (ACHActivity, CardActivity, CheckActivity, ApplicationHistory, AccountActivity, ClientIdentified, IdentityTheft, LinkedToFraudulentCustomer). |
| bankReason Optional | string | Optional. The expanded bank reason for closing the account when ByBank is specified as the reason. Can be one of: (ProhibitedBusiness, MissingCddEdd, NonUsOperations, SuspectedFraud). This list is subject to change. |
Response
Response is a JSON:API document.
200 OK
| Name | Type | Description |
|---|---|---|
| data | DepositAccount | Deposit Account resource. |
curl -X POST 'https://api.s.unit.sh/accounts/10000/close'
-H 'Content-Type: application/vnd.api+json'
-H 'Authorization: Bearer ${TOKEN}'
--data-raw '{
"data": {
"type": "depositAccountClose",
"attributes": {
"reason": "ByCustomer"
}
}
}'
Reopen Account
Reopens an account.
Reopening an account will not reopen cards associated with the account. Closed cards cannot be reactivated.
This API can only be used to reopen accounts which were closed by customers. In order to reopen an account that was closed due to fraud, please contact Unit.
| Verb | POST |
| URL | https://api.s.unit.sh/accounts/:accountId/reopen |
| Required Scope | accounts-write |
| Timeout (Seconds) | 5 |
Response
Response is a JSON:API document.
200 OK
| Name | Type | Description |
|---|---|---|
| data | DepositAccount | Deposit Account resource. |
curl -X POST 'https://api.s.unit.sh/accounts/10000/reopen'
-H 'Content-Type: application/vnd.api+json'
-H 'Authorization: Bearer ${TOKEN}'
Freeze Account
Freezes an account. An account.frozen event is raised when the call was successful. A frozen account behaves like a closed account, with the primary difference being that a frozen state should be temporary, and after evaluation should either be un-frozen, or closed.
Freezing an account will also freeze the cards associated with the account.
| Verb | POST |
| URL | https://api.s.unit.sh/accounts/:accountId/freeze |
| Required Scope | accounts-write |
| Timeout (Seconds) | 5 |
Attributes
| Name | Type | Description |
|---|---|---|
| reason | string | The reason for closing the account. Either Fraud or Other, with a specified reasonText. |
| reasonText Optional | string | Optional. The free-text reason for freezing the account (up to 255 characters) when Other is specified. |
Response
Response is a JSON:API document.
200 OK
| Name | Type | Description |
|---|---|---|
| data | DepositAccount | Deposit Account resource. |
curl -X POST 'https://api.s.unit.sh/accounts/10000/freeze'
-H 'Content-Type: application/vnd.api+json'
-H 'Authorization: Bearer ${TOKEN}'
--data-raw '{
"data": {
"type": "accountFreeze",
"attributes": {
"reason": "Other",
"reasonText": "Per request from customer"
}
}
}'
Unfreeze Account
Unfreezes an account.
Unfreezing an account will also unfreeze the cards associated with the account.
| Verb | POST |
| URL | https://api.s.unit.sh/accounts/:accountId/unfreeze |
| Required Scope | accounts-write |
| Timeout (Seconds) | 5 |
Response
Response is a JSON:API document.
200 OK
| Name | Type | Description |
|---|---|---|
| data | DepositAccount | Deposit Account resource. |
curl -X POST 'https://api.s.unit.sh/accounts/10000/unfreeze'
-H 'Content-Type: application/vnd.api+json'
-H 'Authorization: Bearer ${TOKEN}'
Get by Id
Get a deposit account resource by id.
| Verb | GET |
| URL | https://api.s.unit.sh/accounts/{id} |
| Required Scope | accounts |
| Timeout (Seconds) | 5 |
Query Parameters
| Name | Type | Default | Description |
|---|---|---|---|
| include | string | (empty) | Optional. Related resource available to include: customer. See Getting Related Resources |
| extraFields[account] | string | (empty) | Optional. Use extraFields[account]=interestTerms to include the interestTerms object in the account's attributes section of the response. |
To retrieve interest-related data in the account response, add the following query parameter to your request: extraFields[account]=interestTerms.
Response
Response is a JSON:API document.
200 OK
| Name | Type | Description |
|---|---|---|
| data | DepositAccount | The requested resource after the operation was completed. |
| included | Array of Customer | Array of resources requested by the include query parameter. |
curl -X GET 'https://api.s.unit.sh/accounts/42' \
-H "Authorization: Bearer ${TOKEN}"
List
List deposit account resources. Paging can be applied.
| Verb | GET |
| URL | https://api.s.unit.sh/accounts |
| Required Scope | accounts |
| Timeout (Seconds) | 5 |
Query Parameters
| Name | Type | Default | Description |
|---|---|---|---|
| page[limit] | integer | 100 | Optional. Maximum number of resources that will be returned. Maximum is 10000 resources. See Pagination. |
| page[offset] | integer | 0 | Optional. Number of resources to skip. See Pagination. |
| filter[customerId] | string | (empty) | Optional. Filters the results by the specified customer id. |
| filter[depositProductId] | string | (empty) | Optional. Filters the results by the specified deposit product id. |
| filter[tags] | Tags (JSON) | (empty) | Optional. Filter Accounts by Tags. |
| filter[status] | string | Authorized | Optional. Filter Account by its status (Open, Frozen, or Closed). Usage example: filter[status][0]=Closed |
| filter[fromBalance] | Integer | (empty) | Optional. Filters Accounts that have balance higher or equal to the specified amount (in cents). e.g. 5000 |
| filter[toBalance] | Integer | (empty) | Optional. Filters Accounts that have balance lower or equal to the specified amount (in cents). e.g. 7000 |
| include | string | (empty) | Optional. Related resource available to include: customer. See Getting Related Resources |
curl -X GET 'https://api.s.unit.sh/accounts?page[limit]=20&page[offset]=10' \
-H "Authorization: Bearer ${TOKEN}"
Response
Response is a JSON:API document.
200 OK
| Name | Type | Description |
|---|---|---|
| data | Array of DepositAccount | Array of deposit account resources. |
| included | Array of Customer | Array of resources requested by the include query parameter. |
{
"data": [
{
"type": "depositAccount",
"id": "42",
"attributes": {
"createdAt": "2000-05-11T10:19:30.409Z",
"name": "Peter Parker",
"status": "Open",
"depositProduct": "checking",
"routingNumber": "812345678",
"accountNumber": "1000000002",
"currency": "USD",
"balance": 10000,
"hold": 0,
"available": 10000,
"tags": {
"purpose": "tax"
}
},
"relationships": {
"customer": {
"data": {
"type": "customer",
"id": "45555"
}
}
}
}
]
}
Update
Update a deposit account.
| Verb | PATCH |
| URL | https://api.s.unit.sh/accounts/:accountId |
| Data Type | depositAccount |
| Timeout (Seconds) | 5 |
Attributes
| Name | Type | Description |
|---|---|---|
| tags Optional | object | Optional. See Updating Tags. |
| depositProduct Optional | string | Optional. Name of the selected deposit product (you can get the list of available deposit products using a dedicated API endpoint). |
Deposit product replacement API is not enabled by default for all customers. Please contact Unit if you need to enable this functionality.
curl -X PATCH 'https://api.s.unit.sh/accounts/42'
-H 'Content-Type: application/vnd.api+json'
-H 'Authorization: Bearer ${TOKEN}'
--data-raw '{
"data": {
"type": "depositAccount",
"attributes": {
"tags": {
"purpose": "Tax",
"trackUserId": null,
"newTag": "New tag value"
},
"depositProduct": "checking"
}
}
}'
Response
Response is a JSON:API document.
200 OK
| Name | Type | Description |
|---|---|---|
| data | DepositAccount | The requested resource after the operation was completed. |
{
"data": {
"type": "depositAccount",
"id": "42",
"attributes": {
"createdAt": "2000-05-11T10:19:30.409Z",
"name": "Peter Parker",
"status": "Open",
"depositProduct": "checking",
"routingNumber": "812345678",
"accountNumber": "1000000002",
"currency": "USD",
"balance": 10000,
"hold": 0,
"available": 10000,
"tags": {
"purpose": "checking"
}
},
"relationships": {
"customer": {
"data": {
"type": "customer",
"id": "45555"
}
}
}
}
}
Account Hold
An account hold temporarily reserves a specified amount of funds in the account balance, making that amount unavailable for other transactions.
While the hold reduces the account's available balance, the held funds remain in the account and are not transferred. When creating an AccountHold, the specified hold amount is deducted from the available balance, but the total balance remains unchanged.
Create Account Hold
| Verb | POST |
| URL | https://api.s.unit.sh/account-holds |
| Data Type | createAccountHoldJson |
| Timeout (Seconds) | 5 |
Attributes
| Field | type | Default | Description |
|---|---|---|---|
| amount | integer | (empty) | The amount (in cents). |
| expiredAt | RFC3339 Date string | (empty) | Optional. Date only (e.g. "2001-08-15"). the date the account hold will be automatically released at. |
| description | string | 72 | Description of the AccountHold (maximum of 80 characters). |
| idempotencyKey | string | 72 | See Idempotency. |
Relationships
| Name | Type | Description |
|---|---|---|
| account | JSON:API Relationship | The Deposit Account from which the funds will be held. |
curl -X POST 'https://api.s.unit.sh/account-holds'
-H 'Content-Type: application/vnd.api+json'
-H 'Authorization: Bearer ${TOKEN}'
--data-raw '{
"data": {
"type": "accountHold",
"attributes": {
"amount": 6000,
"expiredAt": "2024-10-29",
"description": "Hold reason",
"idempotencyKey": "1234567890"
},
"relationships": {
"account": {
"data": {
"type": "account",
"id": "158853345345"
}
}
}
}
}'
Response
Response is a JSON:API document.
201 Created
| Name | Type | Description |
|---|---|---|
| data | Account Hold | The created AccountHold resource. |
{
"data": {
"type": "accountHold",
"id": "7345432",
"attributes": {
"createdAt": "2024-10-02T12:39:25.107Z",
"expiredAt": "2024-10-10",
"status": "Active",
"amount": 4433,
"description": "Dispute investigation hold"
},
"relationships": {
"account": {
"data": {
"type": "account",
"id": "158853345"
}
}
}
}
}
Release Account Hold
You can release an account hold fully (entire amount) or partially (a specified amount).
| Action | Method | Endpoint | Body Required | Resulting Status |
|---|---|---|---|---|
| Full Release | POST | /account-holds/:id/release | No | Released |
| Partial Release | POST | /account-holds/:id/release | Yes | PartiallyReleased |
Full Release
Releases the entire hold amount. No request body is required.
| Verb | POST |
| URL | https://api.s.unit.sh/account-holds/:id/release |
| Timeout (Seconds) | 5 |
curl -X POST 'https://api.s.unit.sh/account-holds/:id/release'
-H 'Content-Type: application/vnd.api+json'
-H 'Authorization: Bearer ${TOKEN}'
Partial Release
Releases a portion of the hold. Requires request body with amount (in cents) and an idempotencyKey.
| Verb | POST |
| URL | https://api.s.unit.sh/account-holds/:id/release |
| Data Type | accountHold |
| Timeout (Seconds) | 5 |
Attributes
| Field | type | Required | Description |
|---|---|---|---|
| amount | integer | Yes | The amount (in cents) to release from the hold. The hold status will become PartiallyReleased. |
| idempotencyKey | string | Yes | See Idempotency. |
curl -X POST 'https://api.s.unit.sh/account-holds/:id/release'
-H 'Content-Type: application/vnd.api+json'
-H 'Authorization: Bearer ${TOKEN}'
--data-raw '{
"data": {
"type": "accountHold",
"attributes": {
"amount": 2500,
"idempotencyKey": "3a1a33be-4e12-4603-9ed0-820922389fb8"
}
}
}'
Response
Response is a JSON:API document.
200 Ok
| Name | Type | Description |
|---|---|---|
| data | Account Hold | The released AccountHold resource. |
Use Full Release if you want to release the entire hold (no body required).
Use Partial Release if you want to release a portion of the hold (body required).
The hold status will update to either Released or PartiallyReleased depending on your request.
{
"data": {
"type": "accountHold",
"id": "7345432",
"attributes": {
"createdAt": "2024-10-02T12:39:25.107Z",
"releasedAt": "2024-10-10",
"expiredAt": "2024-10-10",
"status": "Released",
"amount": 4433,
"description": "Dispute investigation hold"
},
"relationships": {
"account": {
"data": {
"type": "account",
"id": "158853345"
}
}
}
}
}
Get Account Hold by Id
| Verb | GET |
| URL | https://api.s.unit.sh/account-holds/{id} |
| Timeout (Seconds) | 5 |
curl -X GET 'https://api.s.unit.sh/account-holds/1' \
-H "Authorization: Bearer ${TOKEN}"
Response
Response is a JSON:API document.
200 OK
| Name | Type | Description |
|---|---|---|
| data | Account Hold | AccountHold resource. |
{
"data": {
"type": "accountHold",
"id": "7345432",
"attributes": {
"createdAt": "2024-10-02T12:39:25.107Z",
"expiredAt": "2024-10-10",
"status": "Active",
"amount": 4433,
"description": "Dispute investigation hold"
},
"relationships": {
"account": {
"data": {
"type": "account",
"id": "158853345"
}
}
}
}
}
List Account Holds
List account hold resources. Paging can be applied.
| Verb | GET |
| URL | https://api.s.unit.sh/account-holds |
| Timeout (Seconds) | 5 |
Query Parameters
| Field | Type | Default | Description |
|---|---|---|---|
| page[limit] | integer | 100 | Optional. Maximum number of resources that will be returned. Maximum is 10000 resources. See Pagination. |
| page[offset] | integer | 0 | Optional. Number of resources to skip. See Pagination. |
| filter[status][] | string | (empty) | Optional. Filter by status. Can be one of the following values: Active, Released, PartiallyReleased. |
| filter[expiredAt] | RFC3339 Date string | (empty) | Optional. Date only (e.g. "2001-08-15"). the date the account hold will be automatically released at. |
curl -X GET 'https://api.s.unit.sh/account-holds?page[limit]=20&page[offset]=10' \
-H "Authorization: Bearer ${TOKEN}"
Response
Response is a JSON:API document.
200 OK
| Name | Type | Description |
|---|---|---|
| data | Array of Account Hold | Array of account hold resources. |
| meta | JSON object that contains pagination data | Pagination data includes offset, limit and total (estimated total items). |
{
"data": [
{
"type": "accountHold",
"id": "7345432",
"attributes": {
"createdAt": "2024-10-01T12:39:25.107Z",
"expiredAt": "2024-10-10",
"status": "Active",
"amount": 4433,
"description": "Dispute investigation hold"
},
"relationships": {
"account": {
"data": {
"type": "account",
"id": "158853345"
}
}
}
},
{
"type": "accountHold",
"id": "4445488",
"attributes": {
"createdAt": "2024-10-01T12:39:25.107Z",
"expiredAt": "2024-10-10",
"status": "PartiallyReleased",
"amount": 5000,
"remainingHoldAmount": 2500,
"description": "Check deposit hold"
},
"relationships": {
"account": {
"data": {
"type": "account",
"id": "158853345"
}
}
}
},
{
"type": "accountHold",
"id": "6543453453",
"attributes": {
"createdAt": "2024-10-03T12:23:39.169Z",
"releasedAt": "2024-10-10",
"status": "Released",
"amount": 3400,
"expiredAt": "2024-10-10",
"tags": {
"tagKey": "tagValue"
},
"description": "Processor payout pending"
},
"relationships": {
"account": {
"data": {
"type": "account",
"id": "158853345"
}
}
}
}
],
"meta": {
"pagination": {
"total": 100,
"limit": 100,
"offset": 0
}
}
}
Limits
| Verb | GET |
| URL | https://api.s.unit.sh/accounts/:accountId/limits |
| Timeout (Seconds) | 5 |
curl -X GET 'https://api.s.unit.sh/accounts/10104/limits' \
-H "Authorization: Bearer ${TOKEN}"
Some monetary transactions (such as originating ACH payments, ATM withdrawals or deposits) are subject to daily and/or monthly amount limits that are defined on the account level. You can read more about the account limits on our limits guide.
The response to this API call includes the defined limits, as well as the current total amounts on each transaction type (under the totalsDaily and totalsMonthly fields), in cents.
The limits and totals fields reflect the deposit product configuration and usage. Override amounts are not merged into limits; when an active account limit override exists for a rail, that rail’s object (for example ach, wire, checkDeposit, checkPayment, or bookTransfer) also includes an override field. override contains status, optional expiredAt, and values with the override limit amounts in cents (the shape of values depends on the rail). Only active overrides are surfaced here; cancelled overrides are omitted.
When an override has an expiredAt date, it stops applying at 17:00 Eastern Time on that calendar date.
Credit accounts: limit responses for credit accounts are not enriched with override blocks (overrides apply to deposit and wallet accounts). Card limits do not support overrides.
The daily limits reset at 12:00 a.m. in the timezone of relevant bank. The monthly limits are reset at the same time on the first of each month.
{
"data": {
"type": "limits",
"id": "10104",
"attributes": {
"ach": {
"limits": {
"dailyDebit": 50000,
"dailyCredit": 50000,
"monthlyDebit": 2000000,
"monthlyCredit": 2000000,
"dailyDebitSoft": 50000,
"monthlyDebitSoft": 2000000
},
"totalsDaily": {
"debits": 25000,
"credits": 10000
},
"totalsMonthly": {
"debits": 800300,
"credits": 250000
},
"override": {
"status": "Active",
"expiredAt": "2025-12-31",
"values": {
"dailyDebit": 100000,
"dailyCredit": 100000,
"monthlyDebit": 500000,
"monthlyCredit": 500000
}
}
},
"card": {
"limits": {
"dailyWithdrawal": 2000000,
"dailyDeposit": 2000000,
"dailyPurchase": 2000000,
"dailyCardTransaction": 2000000
},
"totalsDaily": {
"withdrawals": 0,
"deposits": 0,
"purchases": 0,
"cardTransactions": 0
}
},
"checkDeposit": {
"limits": {
"daily": 100000,
"monthly": 2000000,
"dailySoft": 50000,
"monthlySoft": 1000000
},
"totalsDaily": 0,
"totalsMonthly": 0
},
"wire": {
"limits": {
"dailyTransfer": 20000,
"monthlyTransfer": 20000000,
"dailyTransferSoft": 0,
"monthlyTransferSoft": 0
},
"totalsDaily": {
"transfers": 5000
},
"totalsMonthly": {
"transfers": 5000
},
"override": {
"status": "Active",
"expiredAt": null,
"values": {
"daily": 5000000,
"monthly": 20000000
}
}
},
"checkPayment": {
"limits": {
"dailySent": 20000000,
"monthlySent": 20000000,
"dailySentSoft": 10000000,
"monthlySentSoft": 10000000
},
"totalsDaily": {
"sent": 5000
},
"totalsMonthly": {
"sent": 5000
}
}
}
}
}
Account limit overrides
Account limit overrides adjust ACH, wire, check deposit, check payment, or book transfer limits for a deposit account or wallet account without changing its deposit product or wallet terms. Card limits cannot be overridden. Overrides can be used for temporary limit increases, pilots, or other cases agreed with Unit.
Each override is a JSON:API resource tied to an account. Create requests require an idempotencyKey and at least one limit field (the exact fields depend on the override type). Amounts are in cents. Optional expiredAt (date only) sets the calendar day when the override ends; it stops applying at 17:00 Eastern Time on that date.
Override resource type is one of: achLimitOverride, wireLimitOverride, checkDepositLimitOverride, checkPaymentLimitOverride, bookTransferLimitOverride.
Use an Org API token tied to a Dashboard user with the right role. Customer tokens cannot call these endpoints.
| Action | Role |
|---|---|
| List overrides or get an override by id | Bank Operations (Read-only) |
| Create, update, or cancel an override | Bank Operations |
Create Account Limit Override
Creates a single account limit override. The request body data.type must match the override kind you are creating.
| Verb | POST |
| URL | https://api.s.unit.sh/account-config-overrides |
| Timeout (Seconds) | 5 |
Attributes
| Field | Type | Default | Description |
|---|---|---|---|
| idempotencyKey | string | (empty) | Required. See Idempotency. |
| expiredAt | RFC3339 date string | (empty) | Optional. Date only (e.g. "2025-12-31"). The override stops applying at 17:00 Eastern Time on this date. |
| dailyDebitLimit | integer | (empty) | achLimitOverride only. Optional. Daily ACH debit limit in cents. At least one limit field is required on create. |
| dailyCreditLimit | integer | (empty) | achLimitOverride and bookTransferLimitOverride. Optional. Daily credit limit in cents. |
| monthlyDebitLimit | integer | (empty) | achLimitOverride only. Optional. Monthly ACH debit limit in cents. |
| monthlyCreditLimit | integer | (empty) | achLimitOverride and bookTransferLimitOverride. Optional. Monthly credit limit in cents. |
| dailyLimit | integer | (empty) | wireLimitOverride, checkDepositLimitOverride, checkPaymentLimitOverride. Optional. Daily limit in cents. At least one of dailyLimit or monthlyLimit is required on create. |
| monthlyLimit | integer | (empty) | wireLimitOverride, checkDepositLimitOverride, checkPaymentLimitOverride. Optional. Monthly limit in cents. |
Relationships
| Name | Type | Description |
|---|---|---|
| account | JSON:API Relationship | The deposit account this override applies to. |
curl -X POST 'https://api.s.unit.sh/account-config-overrides'
-H 'Content-Type: application/vnd.api+json'
-H 'Authorization: Bearer ${TOKEN}'
--data-raw '{
"data": {
"type": "wireLimitOverride",
"attributes": {
"dailyLimit": 5000000,
"idempotencyKey": "wire-limit-override-2025-03-01"
},
"relationships": {
"account": {
"data": {
"type": "account",
"id": "10104"
}
}
}
}
}'
Response
Response is a JSON:API document.
201 Created
| Name | Type | Description |
|---|---|---|
| data | Account limit override resource | The created override. attributes.status is Active or Cancelled. |
{
"data": {
"type": "wireLimitOverride",
"id": "89302",
"attributes": {
"dailyLimit": 5000000,
"monthlyLimit": 20000000,
"status": "Active",
"expiredAt": null
},
"relationships": {
"account": {
"data": {
"type": "account",
"id": "10104"
}
}
}
}
}
Update Account Limit Override
Updates an existing override. Pass null for a limit attribute to clear it when the API allows. data.type must match the existing resource type.
| Verb | PATCH |
| URL | https://api.s.unit.sh/account-config-overrides/:overrideId |
| Timeout (Seconds) | 5 |
Attributes (by type)
Patchable fields mirror the create attributes for each data.type. For bookTransferLimitOverride, patch dailyCreditLimit and monthlyCreditLimit as needed. For all types, expiredAt may be set or cleared (null).
curl -X PATCH 'https://api.s.unit.sh/account-config-overrides/89302'
-H 'Content-Type: application/vnd.api+json'
-H 'Authorization: Bearer ${TOKEN}'
--data-raw '{
"data": {
"type": "wireLimitOverride",
"attributes": {
"dailyLimit": 6000000,
"expiredAt": "2025-12-31"
}
}
}'
Response
Response is a JSON:API document.
200 OK
| Name | Type | Description |
|---|---|---|
| data | Account limit override resource | The updated override. |
{
"data": {
"type": "wireLimitOverride",
"id": "89302",
"attributes": {
"dailyLimit": 5000000,
"monthlyLimit": 20000000,
"status": "Active",
"expiredAt": null
},
"relationships": {
"account": {
"data": {
"type": "account",
"id": "10104"
}
}
}
}
}
Cancel Account Limit Override
Cancels an override. The override’s status becomes Cancelled; it no longer applies to the account and will not appear in the embedded override section on Get Limits.
| Verb | DELETE |
| URL | https://api.s.unit.sh/account-config-overrides/:overrideId |
| Timeout (Seconds) | 5 |
curl -X DELETE 'https://api.s.unit.sh/account-config-overrides/89302'
-H 'Content-Type: application/vnd.api+json'
-H 'Authorization: Bearer ${TOKEN}'
Response
Response is a JSON:API document.
200 OK
| Name | Type | Description |
|---|---|---|
| data | Account limit override resource | The cancelled override (attributes.status is Cancelled). |
{
"data": {
"type": "wireLimitOverride",
"id": "89302",
"attributes": {
"dailyLimit": 5000000,
"monthlyLimit": 20000000,
"status": "Cancelled",
"expiredAt": null
},
"relationships": {
"account": {
"data": {
"type": "account",
"id": "10104"
}
}
}
}
}
Get Account Limit Override
| Verb | GET |
| URL | https://api.s.unit.sh/account-config-overrides/:overrideId |
| Timeout (Seconds) | 5 |
curl -X GET 'https://api.s.unit.sh/account-config-overrides/89302' \
-H "Authorization: Bearer ${TOKEN}"
Response
200 OK
| Name | Type | Description |
|---|---|---|
| data | Account limit override resource | The requested override. |
{
"data": {
"type": "wireLimitOverride",
"id": "89302",
"attributes": {
"dailyLimit": 5000000,
"monthlyLimit": 20000000,
"status": "Active",
"expiredAt": null
},
"relationships": {
"account": {
"data": {
"type": "account",
"id": "10104"
}
}
}
}
}
List Account Limit Overrides
| Verb | GET |
| URL | https://api.s.unit.sh/account-config-overrides |
| Timeout (Seconds) | 5 |
Query Parameters
| Field | Type | Default | Description |
|---|---|---|---|
| page[limit] | integer | 100 | Optional. Maximum number of resources returned. See Pagination. |
| page[offset] | integer | 0 | Optional. Number of resources to skip. See Pagination. |
| filter[accountId] | string | (empty) | Optional. Return overrides for the specified account id. |
| filter[status][] | string | (empty) | Optional. Filter by Active or Cancelled. |
curl -X GET 'https://api.s.unit.sh/account-config-overrides?page[limit]=20&page[offset]=0&filter[accountId]=10104' \
-H "Authorization: Bearer ${TOKEN}"
Response
200 OK
| Name | Type | Description |
|---|---|---|
| data | Array of account limit override resources | Matching overrides. |
| meta | JSON object | Pagination data when applicable. |
{
"data": [
{
"type": "wireLimitOverride",
"id": "89302",
"attributes": {
"dailyLimit": 5000000,
"monthlyLimit": 20000000,
"status": "Active",
"expiredAt": null
},
"relationships": {
"account": {
"data": {
"type": "account",
"id": "10104"
}
}
}
},
{
"type": "achLimitOverride",
"id": "89303",
"attributes": {
"dailyDebitLimit": 100000,
"dailyCreditLimit": 100000,
"monthlyDebitLimit": 500000,
"monthlyCreditLimit": 500000,
"status": "Cancelled",
"expiredAt": "2025-06-01"
},
"relationships": {
"account": {
"data": {
"type": "account",
"id": "10104"
}
}
}
}
],
"meta": {
"pagination": {
"limit": 100,
"offset": 0,
"total": 2
}
}
}
Resource shapes are documented under Account limit overrides in the Resources reference.
Get Available Deposit Products
| Verb | GET |
| URL | https://api.s.unit.sh/accounts/:accountId/deposit-products |
| Timeout (Seconds) | 5 |
List of available deposit products compatible to the account.
curl -X GET 'https://api.s.unit.sh/accounts/10104/deposit-products' \
-H "Authorization: Bearer ${TOKEN}"
{
"data": [
{
"type": "accountDepositProduct",
"attributes": {
"name": "checking"
}
},
{
"type": "accountDepositProduct",
"attributes": {
"name": "revenue_bank"
}
}
]
}
Get Account Balance History
List account end-of-day balances history (filtering and paging can be applied).
The account balance history can be used to provide the customer with an overview of their balance across account(s) over time in a visually engaging way, providing insights and creating custom product features around it.
The typical cutoff time (end-of-day) is 7PM, but may vary between banks. The exact time and timezone are determined by the partner bank you work with.
| Verb | GET |
| URL | https://api.s.unit.sh/account-end-of-day |
| Required Scope | account-end-of-day |
| Timeout (Seconds) | 5 |
Query Parameters
| Name | Type | Default | Description |
|---|---|---|---|
| page[limit] | integer | 100 | Optional. Maximum number of resources that will be returned. Maximum is 1000 resources. |
| page[offset] | integer | 0 | Optional. Number of resources to skip. |
| filter[accountId] | string | (empty) | Optional. Filters the results by the specified account id. At least one of accountId and customerId is required. |
| filter[customerId] | string | (empty) | Optional. Filters the results by the specified customer id. At least one of accountId and customerId is required. |
| filter[since] | ISO Local Date string | (empty) | Optional. Filters the account end-of-day balances on or after the specified date. e.g. 2021-06-01 |
| filter[until] | ISO Local Date string | (empty) | Optional. Filters the account end-of-day balances on or before the specified date. e.g. 2021-07-01 |
curl -X GET 'https://api.s.unit.sh/account-end-of-day?page[limit]=10&page[offset]=0&filter[customerId]=10000&filter[accountId]=30317&filter[since]=2020-10-11&filter[until]=2021-10-13' \
-H "Authorization: Bearer ${TOKEN}"
Response
Response is a JSON:API document.
200 OK
| Name | Type | Description |
|---|---|---|
| data | Array of Account End-Of-Day | Array of account end-of-day resources. |
| meta | JSON object that contains pagination data | Pagination data includes offset, limit and total (estimated total items). |
{
"data": [
{
"type": "accountEndOfDay",
"id": "4925158",
"attributes": {
"date": "2021-07-10",
"balance": 1000,
"available": 500,
"hold": 500
},
"relationships": {
"customer": {
"data": {
"type": "customer",
"id": "10000"
}
},
"account": {
"data": {
"type": "account",
"id": "30317"
}
}
}
},
{
"type": "accountEndOfDay",
"id": "4925158",
"attributes": {
"date": "2021-07-11",
"balance": 1000,
"available": 500,
"hold": 500
},
"relationships": {
"customer": {
"data": {
"type": "customer",
"id": "10000"
}
},
"account": {
"data": {
"type": "account",
"id": "30317"
}
}
}
}
],
"meta": {
"pagination": {
"total": 12,
"limit": 2,
"offset": 0
}
}
}
Add Account Owners
Add owner or owners to an existing deposit account.
| Verb | POST |
| URL | https://api.s.unit.sh/accounts/:accountId/relationships/customers |
| Required Scope | accounts-write |
| Timeout (Seconds) | 5 |
Attributes
| Name | Type | Description |
|---|---|---|
| data | Array | A list of individual customers to be added to the account. |
curl -X POST 'https://api.s.unit.sh/accounts/10000/relationships/customers'
-H 'Content-Type: application/vnd.api+json'
-H 'Authorization: Bearer ${TOKEN}'
--data-raw '{
"data": [
{
"type": "customer",
"id": "10001"
},
{
"type": "customer",
"id": "10002"
}
]
}'
Response
Response is a JSON:API document.
200 OK
| Name | Type | Description |
|---|---|---|
| data | DepositAccount | The requested resource after the operation was completed. |
{
"data": {
"type": "depositAccount",
"id": "42",
"attributes": {
"name": "Peter Parker, April Oneil & Richard Hendricks",
"createdAt": "2000-05-11T10:19:30.409Z",
"routingNumber": "812345678",
"accountNumber": "1000000002",
"depositProduct": "checking",
"balance": 10000,
"hold": 0,
"available": 10000,
"tags": {
"purpose": "checking"
},
"currency": "USD",
"status": "Open"
},
"relationships": {
"customers": {
"data": [
{
"type": "customer",
"id": "10000"
},
{
"type": "customer",
"id": "10001"
},
{
"type": "customer",
"id": "10002"
}
]
}
}
}
}
Remove Account Owners
Remove owner or owners from an existing joint deposit account.
At least one of the owners after deletion must be over 18 years old.
All cards related to the removed owners will be closed.
| Verb | DELETE |
| URL | https://api.s.unit.sh/accounts/:accountId/relationships/customers |
| Required Scope | accounts-write |
| Timeout (Seconds) | 5 |
Attributes
| Name | Type | Description |
|---|---|---|
| data | Array | A list of individual customers to be removed from the account. |
curl -X DELETE 'https://api.s.unit.sh/accounts/10000/relationships/customers'
-H 'Content-Type: application/vnd.api+json'
-H 'Authorization: Bearer ${TOKEN}'
--data-raw '{
"data": [
{
"type": "customer",
"id": "10001"
}
]
}'
Response
Response is a JSON:API document.
200 OK
| Name | Type | Description |
|---|---|---|
| data | DepositAccount | The requested resource after the operation was completed. |
{
"data": {
"type": "depositAccount",
"id": "42",
"attributes": {
"name": "Peter Parker",
"createdAt": "2000-05-11T10:19:30.409Z",
"routingNumber": "812345678",
"accountNumber": "1000000002",
"depositProduct": "checking",
"balance": 10000,
"hold": 0,
"available": 10000,
"tags": {
"purpose": "checking"
},
"currency": "USD",
"status": "Open"
},
"relationships": {
"customer": {
"data": {
"type": "customer",
"id": "10000"
}
}
}
}
}