Skip to main content

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.

Note

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.

VerbPOST
URLhttps://api.s.unit.sh/sandbox/payments
Data TypeachPayment
Timeout (Seconds)5

Attributes

NameTypeDescription
amountintegerThe amount (in cents).
directionstringThe direction in which the funds flow (currently, only Credit is supported).
descriptionstringPayment description (maximum of 50 characters).

Relationships

NameTypeDescription
accountJSON:API RelationshipThe Deposit Account receiving the payment.
Example Request:
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.

Example Response:
{
"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.

VerbPOST
URLhttps://api.s.unit.sh/sandbox/received-payments
Data TypeachReceivedPayment
Timeout (Seconds)5

Attributes

NameTypeDescription
amountintegerThe amount (in cents).
completionDateRFC3339 Date stringShows the date on which the received ACH will be completed (settled or repaid).
descriptionstringACH description (maximum of 10 characters), also known as Company Entry Description.
companyNamestringThe name by which the originator is known to the receiver. (maximum of 16 characters)
secCode OptionalstringOptional. The 3-letter ACH Standard Entry Class (SEC) Code (e.g. WEB, CCD, PPD, etc.). Default will be WEB.

Relationships

NameTypeDescription
accountJSON:API RelationshipThe Deposit Account receiving the received payment.
Example Request:
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.

Example Response:
{
"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.

VerbPOST
URLhttps://api.s.unit.sh/sandbox/received-payments/{receivedPaymentId}/complete
Timeout (Seconds)5
Example Request:
curl -X POST 'https://api.s.unit.sh/sandbox/received-payments/101/complete' \
-H "Authorization: Bearer ${TOKEN}"
Example Response
{
"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).

VerbPOST
URLhttps://api.s.unit.sh/sandbox/received-ach-payment
Data TypeachReceivedPayment
Timeout (Seconds)5

Attributes

NameTypeDescription
amountintegerThe amount (in cents).
settlementDateRFC3339 Date stringShows the date on which the received ACH will be settled.
companyNamestringThe name by which the originator is known to the receiver. (maximum of 16 characters)
receivingEntityName OptionalstringOptional. The name of the receiver. In case of empty value the account customer name will be used. (maximum of 16 characters)
secCode OptionalstringOptional. The 3-letter ACH Standard Entry Class (SEC) Code (e.g. WEB, CCD, PPD, etc.). Currently only WEB is allowed.

Relationships

NameTypeDescription
accountJSON:API RelationshipThe Deposit Account receiving the received payment.
Example Request:
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"
}
}
}
}
}'
Example Response:
{
"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"
}
}
}
}
}