Simulations (Sandbox only)
Unit's Sandbox environment provides additional operations on top of the regular APIs. Those operations allow you to easily test and simulate activities that would normally take a long time or require interaction with the external world.
A common example for testing would be Simulating a Received ACH Payment to create funds in an account, followed by Simulating a Card Purchase to spend those funds.
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
Credit is supported).Relationships
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 ACH Status 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"
}
}
}
}
}
Transmit ACH payment
This API allows you to simulate a file transmission to the network for an existing ACH payment with Pending status.
After transmission, the status would change to Sent for ACH Credit payment and Clearing for ACH Debit payment.
The Payment Sent or Payment Clearing webhook event will be fired.
| Verb | POST |
| URL | https://api.s.unit.sh/sandbox/ach/transmit |
| Data Type | transmitAchPayment |
| Timeout (Seconds) | 5 |
Relationships
curl -X POST 'https://api.s.unit.sh/sandbox/ach/transmit'
-H 'Content-Type: application/vnd.api+json'
-H 'Authorization: Bearer ${TOKEN}'
--data-raw '{
"data": {
"type": "transmitAchPayment",
"relationships": {
"payment": {
"data": {
"type": "achPayment",
"id": "10"
}
}
}
}
}'
{
"data": {
"type": "achPayment",
"id": "10",
"attributes": {
"createdAt": "2021-03-09T15:02:01.543Z",
"amount": 10000,
"direction": "Debit",
"description": "Payment from Sandbox",
"status": "Clearing"
},
"relationships": {
"account": {
"data": {
"type": "account",
"id": "10001"
}
},
"customer": {
"data": {
"type": "customer",
"id": "10000"
}
}
}
}
}
Clear ACH payment
This API allows you to immediately clear an existing ACH payment with Clearing status without waiting for the end of the clearing period.
The Payment Sent and Transaction Created webhook events will be fired.
| Verb | POST |
| URL | https://api.s.unit.sh/sandbox/ach/clear |
| Data Type | clearAchPayment |
| Timeout (Seconds) | 5 |
Relationships
curl -X POST 'https://api.s.unit.sh/sandbox/ach/clear'
-H 'Content-Type: application/vnd.api+json'
-H 'Authorization: Bearer ${TOKEN}'
--data-raw '{
"data": {
"type": "clearAchPayment",
"relationships": {
"payment": {
"data": {
"type": "achPayment",
"id": "10"
}
}
}
}
}'
{
"data": {
"type": "achPayment",
"id": "10",
"attributes": {
"createdAt": "2021-03-09T15:02:01.543Z",
"amount": 10000,
"direction": "Debit",
"description": "Payment from Sandbox",
"status": "Sent"
},
"relationships": {
"account": {
"data": {
"type": "account",
"id": "10001"
}
},
"customer": {
"data": {
"type": "customer",
"id": "10000"
}
}
}
}
}
Return ACH payment
This API allows you to return an existing ACH payment for testing purposes, the status of payment can either be Clearing or Sent.
The Payment Returned and Transaction Created webhook events will be fired.
| Verb | POST |
| URL | https://api.s.unit.sh/sandbox/ach/return |
| Data Type | returnAchPayment |
| Timeout (Seconds) | 5 |
Attributes
Relationships
curl -X POST 'https://api.s.unit.sh/sandbox/ach/return'
-H 'Content-Type: application/vnd.api+json'
-H 'Authorization: Bearer ${TOKEN}'
--data-raw '{
"data": {
"type": "returnAchPayment",
"relationships": {
"payment": {
"data": {
"type": "achPayment",
"id": "10"
}
}
}
}
}'
{
"data": {
"type": "achPayment",
"id": "10",
"attributes": {
"createdAt": "2021-03-09T13:51:51.100Z",
"amount": 10000,
"direction": "Debit",
"description": "Payment from Sandbox",
"status": "Returned",
"reason": "R01"
},
"relationships": {
"account": {
"data": {
"type": "account",
"id": "10001"
}
},
"customer": {
"data": {
"type": "customer",
"id": "10000"
}
}
}
}
}
Receive Wire payment
This API allows you to simulate an incoming wire 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/wire-payments |
| Data Type | wirePayment |
| Timeout (Seconds) | 5 |
Attributes
Relationships
curl -X POST 'https://api.s.unit.sh/sandbox/wire-payments'
-H 'Content-Type: application/vnd.api+json'
-H 'Authorization: Bearer ${TOKEN}'
--data-raw '{
"data": {
"type": "wirePayment",
"attributes": {
"amount": 10000,
"description": "Wire Payment from Sandbox"
},
"relationships": {
"account": {
"data": {
"type": "depositAccount",
"id": "10001"
}
}
}
}
}'
{
"data": {
"type": "wirePayment",
"id": "108",
"attributes": {
"createdAt": "2021-02-24T11:31:10.009Z",
"amount": 10000,
"description": "Wire Payment from Sandbox"
},
"relationships": {
"account": {
"data": {
"type": "depositAccount",
"id": "10001"
}
},
"customer": {
"data": {
"type": "customer",
"id": "10000"
}
}
}
}
}
Transmit Wire payment
This API allows you to simulate a Wire payment transmission to the network for an existing Wire payment with Pending status.
After transmission, the status of the payment would change to Sent.
The Payment Sent webhook event will be fired.
| Verb | POST |
| URL | https://api.s.unit.sh/sandbox/wire/transmit |
| Data Type | transmitWirePayment |
| Timeout (Seconds) | 5 |
Relationships
curl -X POST 'https://api.s.unit.sh/sandbox/wire/transmit'
-H 'Content-Type: application/vnd.api+json'
-H 'Authorization: Bearer ${TOKEN}'
--data-raw '{
"data": {
"type": "transmitWirePayment",
"relationships": {
"payment": {
"data": {
"type": "FedWirePayment",
"id": "2"
}
}
}
}
}'
{
"data": {
"type": "wirePayment",
"id": "2",
"attributes": {
"createdAt": "2021-09-15T10:23:56.716Z",
"amount": 200,
"description": "Wire payment"
},
"relationships": {
"account": {
"data": {
"type": "depositAccount",
"id": "10000"
}
},
"customer": {
"data": {
"type": "customer",
"id": "10000"
}
}
}
}
}
Approve Wire payment
This API allows you to simulate the approval of a Wire payment with PendingReview status for testing purposes.
After approval, the status of the payment would change to Pending.
| Verb | POST |
| URL | https://api.s.unit.sh/sandbox/wire/approve |
| Data Type | approveWirePayment |
| Timeout (Seconds) | 5 |
Relationships
curl -X POST 'https://api.s.unit.sh/sandbox/wire/approve'
-H 'Content-Type: application/vnd.api+json'
-H 'Authorization: Bearer ${TOKEN}'
--data-raw '{
"data": {
"type": "approveWirePayment",
"relationships": {
"payment": {
"data": {
"type": "fedWirePayment",
"id": "2"
}
}
}
}
}'
{
"data": {
"type": "fedWirePayment",
"id": "2",
"attributes": {
"createdAt": "2021-09-15T10:23:56.716Z",
"amount": 200,
"description": "Wire payment",
"status": "Pending"
},
"relationships": {
"account": {
"data": {
"type": "depositAccount",
"id": "10000"
}
},
"customer": {
"data": {
"type": "customer",
"id": "10000"
}
}
}
}
}
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
WEB, CCD, PPD, etc.). default will be WEBRelationships
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 bePending. 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 advances) 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 'Content-Type: application/vnd.api+json'
-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
WEB, CCD, PPD, etc.). currently only WEB is allowed.Relationships
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"
}
}
}
}
}
Create Wire Drawdown
This API allows you to simulate the creation of Wire Drawdown for testing purposes.
| Verb | POST |
| URL | https://api.s.unit.sh/sandbox/wire-drawdowns |
| Data Type | wireDrawdown |
| Timeout (Seconds) | 5 |
Attributes
Relationships
curl -X POST 'https://api.s.unit.sh/sandbox/wire-drawdowns'
-H 'Content-Type: application/vnd.api+json'
-H 'Authorization: Bearer ${TOKEN}'
--data-raw '{
"data": {
"type": "wireDrawdown",
"attributes": {
"amount": 200
},
"relationships": {
"account": {
"data": {
"type": "account",
"id": "10000"
}
}
}
}
}'
{
"type": "wireDrawdown",
"id": "10000",
"attributes": {
"createdAt": "2024-10-29T21:35:58.898Z",
"amount": 97,
"direction": "Incoming",
"counterparty": {
"name": "ACME CONSTRUCTION SERVICES LLC",
"routingNumber": "121000248",
"accountNumber": "9876543210"
},
"imad": "20241029MMAAAAAA033351",
"omad": "20241029MMBBBBBB00041910291735FT03"
},
"relationships": {
"account": {
"data": {
"type": "account",
"id": "10000"
}
},
"customer": {
"data": {
"type": "customer",
"id": "10000"
}
}
}
}