Sandbox Simulations
Unit exposes the following sandbox-specific endpoints, in addition to all other endpoints. They allow you to easily test and simulate real-world events - external activity, or internal activity that may normally take a long time to occur.
Simulation operations are subject to the same authentication scheme as the Live APIs, and therefore require a valid Authentication token.
Receive ACH payment
This API allows you to simulate an incoming ACH payment with the specified amount (in cents) for testing purposes. The transaction.created webhook event will be fired.
| Verb | POST |
| URL | https://api.s.unit.sh/sandbox/payments |
| Data Type | achPayment |
| Timeout (Seconds) | 5 |
Attributes
| Name | Type | Description |
|---|---|---|
| amount | integer | The amount (in cents). |
| direction | string | The direction in which the funds flow (currently, only Credit is supported). |
| description | string | Payment description (maximum of 50 characters). |
Relationships
| Name | Type | Description |
|---|---|---|
| account | JSON:API Relationship | The Deposit Account receiving the payment. |
curl -X POST 'https://api.s.unit.sh/sandbox/payments'
-H 'Content-Type: application/vnd.api+json'
-H 'Authorization: Bearer ${TOKEN}'
--data-raw '{
"data": {
"type": "achPayment",
"attributes": {
"amount": 10000,
"direction": "Credit",
"description": "Payment from Sandbox"
},
"relationships": {
"account": {
"data": {
"type": "depositAccount",
"id": "1000"
}
}
}
}
}'
Note: the status for the sandbox payment requests is always Sent. Please refer to Received Payment Statuses for more information about the status codes.
{
"data": {
"type": "achPayment",
"id": "3",
"attributes": {
"createdAt": "2020-06-29T13:17:59.816Z",
"amount": 10000,
"direction": "Credit",
"description": "Payment from Sandbox",
"status": "Sent",
"reason": null
},
"relationships": {
"account": {
"data": {
"type": "depositAccount",
"id": "1000"
}
},
"customer": {
"data": {
"type": "individualCustomer",
"id": "1"
}
}
}
}
}
Create ACH Received Payment Transaction
This API allows you to simulate the creation of an ACH received payment for testing purposes. The receivedPayment.created webhook event will be fired.
| Verb | POST |
| URL | https://api.s.unit.sh/sandbox/received-payments |
| Data Type | achReceivedPayment |
| Timeout (Seconds) | 5 |
Attributes
| Name | Type | Description |
|---|---|---|
| amount | integer | The amount (in cents). |
| completionDate | RFC3339 Date string | Shows the date on which the received ACH will be completed (settled or repaid). |
| description | string | ACH description (maximum of 10 characters), also known as Company Entry Description. |
| companyName | string | The name by which the originator is known to the receiver. (maximum of 16 characters) |
| secCode Optional | string | Optional. The 3-letter ACH Standard Entry Class (SEC) Code (e.g. WEB, CCD, PPD, etc.). Default will be WEB. |
Relationships
| Name | Type | Description |
|---|---|---|
| account | JSON:API Relationship | The Deposit Account receiving the received payment. |
curl -X POST 'https://api.s.unit.sh/sandbox/received-payments'
-H 'Content-Type: application/vnd.api+json'
-H 'Authorization: Bearer ${TOKEN}'
--data-raw '{
"data": {
"type": "achReceivedPayment",
"attributes": {
"amount": 10000,
"description": "paycheck simulation Sandbox",
"companyName": "UBER LTD",
"completionDate": "2020-07-30",
"secCode": "PPD"
},
"relationships": {
"account": {
"data": {
"type": "depositAccount",
"id": "1000"
}
}
}
}
}'
Note: the status for the created sandbox received payment will be Pending. You may advance and/or complete it. Unlike in production, the received payment will never be completed unless the simulate completion is used.
{
"data": {
"type": "achReceivedPayment",
"id": "1337",
"attributes": {
"createdAt": "2022-02-01T12:03:14.406Z",
"status": "Pending",
"wasAdvanced": false,
"amount": 500000,
"completionDate": "2020-07-30",
"companyName": "UBER LTD",
"counterpartyRoutingNumber": "051402372",
"description": "Sandbox",
"traceNumber": "123456789123456",
"secCode": "PPD"
},
"relationships": {
"account": {
"data": {
"type": "account",
"id": "163555"
}
},
"customer": {
"data": {
"type": "customer",
"id": "129522"
}
}
}
}
}
Complete Received Payment
This API allows you to complete a Received Payment with Pending or Advanced status.
The receivedPayment.completed and the transaction.created for the received payment transaction (and repay advance transaction if the received payment was advanced) webhook events will be fired.
| Verb | POST |
| URL | https://api.s.unit.sh/sandbox/received-payments/{receivedPaymentId}/complete |
| Timeout (Seconds) | 5 |
curl -X POST 'https://api.s.unit.sh/sandbox/received-payments/101/complete' \
-H "Authorization: Bearer ${TOKEN}"
{
"data": {
"type": "achReceivedPayment",
"id": "1337",
"attributes": {
"createdAt": "2022-02-01T12:03:14.406Z",
"status": "Completed",
"wasAdvanced": true,
"amount": 500000,
"completionDate": "2020-07-30",
"companyName": "UBER LTD",
"counterpartyRoutingNumber": "051402372",
"description": "Sandbox",
"traceNumber": "123456789123456",
"secCode": "PPD"
},
"relationships": {
"account": {
"data": {
"type": "account",
"id": "163555"
}
},
"customer": {
"data": {
"type": "customer",
"id": "129522"
}
},
"receivePaymentTransaction": {
"data": {
"type": "transaction",
"id": "101"
}
},
"paymentAdvanceTransaction": {
"data": {
"type": "transaction",
"id": "202"
}
},
"repayPaymentAdvanceTransaction": {
"data": {
"type": "transaction",
"id": "890"
}
}
}
}
}
Create Incoming ACH Payment
This API allows you to simulate the creation of an Incoming ACH payment for testing purposes. The simulated Incoming ACH payment will undergo the standard processing flow for incoming ACH payments. This includes checks for name matching, name overrides, stop payments, and other validation steps. The receivedPayment.created webhook event will be fired. In addition a status changed webhook event will be fired as well (Pending/PendingReview/MarkedForReturn).
| Verb | POST |
| URL | https://api.s.unit.sh/sandbox/received-ach-payment |
| Data Type | achReceivedPayment |
| Timeout (Seconds) | 5 |
Attributes
| Name | Type | Description |
|---|---|---|
| amount | integer | The amount (in cents). |
| settlementDate | RFC3339 Date string | Shows the date on which the received ACH will be settled. |
| companyName | string | The name by which the originator is known to the receiver. (maximum of 16 characters) |
| receivingEntityName Optional | string | Optional. The name of the receiver. In case of empty value the account customer name will be used. (maximum of 16 characters) |
| secCode Optional | string | Optional. The 3-letter ACH Standard Entry Class (SEC) Code (e.g. WEB, CCD, PPD, etc.). Currently only WEB is allowed. |
Relationships
| Name | Type | Description |
|---|---|---|
| account | JSON:API Relationship | The Deposit Account receiving the received payment. |
curl -X POST 'https://api.s.unit.sh/sandbox/received-ach-payment'
-H 'Content-Type: application/vnd.api+json'
-H 'Authorization: Bearer ${TOKEN}'
--data-raw '{
"data": {
"type": "achReceivedPayment",
"attributes": {
"amount": 900,
"companyName": "Pied Piper",
"settlementDate": "2025-07-30",
"secCode": "WEB",
"receivingEntityName": "Erlich Blachman"
},
"relationships": {
"account": {
"data": {
"type": "depositAccount",
"id": "3336527"
}
}
}
}
}'
{
"data": {
"type": "achReceivedPayment",
"id": "7477",
"attributes": {
"createdAt": "2024-05-15T07:21:28.399Z",
"status": "Pending",
"direction": "Debit",
"wasAdvanced": false,
"isAdvanceable": false,
"amount": 90,
"tags": {},
"completionDate": "2025-07-30",
"companyName": "Pied Piper",
"counterpartyRoutingNumber": "091302966",
"description": "P2P",
"addenda": null,
"traceNumber": "091302964218074",
"secCode": "WEB",
"receivingEntityName": "Erlich Blachman"
},
"relationships": {
"account": {
"data": {
"type": "account",
"id": "3336527"
}
},
"customer": {
"data": {
"type": "customer",
"id": "1704127"
}
}
}
}
}