Skip to main content

Simulations

These sandbox-only APIs allow you to test receiving ACH payment scenarios.

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

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

account
JSON:API Relationship
The 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

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)
secCodeOptional
string
Optional. The 3-letter ACH Standard Entry Class (SEC) Code (e.g. WEB, CCD, PPD, etc.). Default will be WEB.

Relationships

account
JSON:API Relationship
The 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

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)
receivingEntityNameOptional
string
Optional. The name of the receiver. In case of empty value the account customer name will be used. (maximum of 16 characters)
secCodeOptional
string
Optional. The 3-letter ACH Standard Entry Class (SEC) Code (e.g. WEB, CCD, PPD, etc.). Currently only WEB is allowed.

Relationships

account
JSON:API Relationship
The 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"
}
}
}
}
}