Creating and Managing Outbound Payments Using the API
This guide walks you through how to create, track, cancel, and retrieve outbound payments using the AndDone Outbound Payments API. Using the outbound Payments API, merchants can:
- Create and send a payment to a vendor using POST Create Outbound Payment
- Monitor payment status using POST Get Outbound Payment Timeline
- Retrieve payment information using POST Get Outbound Payment Details
- Search outbound payments using POST Search Outbound Payments
- Cancel an in-process payment using POST Cancel Outbound Payment
Prerequisites
Before using the API, ensure the following conditions are met:
Enable Supporting Features
In the AndDone Merchant Portal, enable the following features:
- Outbound Payments
- Invoice
Approved Vendors
To submit an Outbound Payment to a vendor, the vendor must be registered in the merchant's profile and in Approved
status.
Register a Bank Account
The merchant must have a verified default bank account registered in the Merchant Portal. If a non-default account is used, bank account information (bankdetail) must be provided in the Outbound Payment request.
The "check" payment method must be listed in Outbound Payment Capabilities for the bank account. Contact your AndDone administrator if outbound payments are not enabled.
Creating an Outbound Payment
To create a payment, call the POST Create Outbound Payment method.
Request Body Example
{
"vendorId": "Mxq0AKvG",
"paymentMethod": "1",
"amount": 1750.34,
"bankdetail": {
"accountNumber": "8765436789",
"routingNumber": "111000012"
},
"Data": {
"checkNumber": 0,
"memo": "Self transfer",
"checkDate": "05-13-2025",
"remittanceData": {
"headings": [
{
"name": "Invoice Date",
"type": "Date"
},
{
"name": "Amount",
"type": "decimal"
}
],
"rows": [
[
{
"name": "Invoice Date",
"value": "02-24-2025",
"type": "Date"
},
{
"name": "Amount",
"value": "1000.00",
"type": "decimal"
}
],
[
{
"name": "Invoice Date",
"value": "02-27-2025",
"type": "Date"
},
{
"name": "Amount",
"value": "800.34",
"type": "decimal"
}
]
]
}
}
}
Payment Information
The first three parameters of the request capture the ID of the vendor, the payment method, and the Total amount of the payment.
Note: Currently, check is the only supported payment method.
{
"vendorId": "Mxq0AKvG",
"paymentMethod": "1",
"amount": 1750.34,
...
Field | Description |
---|---|
vendorId |
Unique identifier of the vendor receiving the payment. The vendor must be in Approved status to process the payment |
paymentMethod |
The method used to issue the payment: 1 - Check. |
amount |
Total amount of the payment |
Bank Account Details (Optional)
If using a bank account other than the default account defined for the merchant, you must specify the checking account number (accountNumber
) and routing number (routingNumber
) in the bankdetail
object.
"bankdetail": {
"accountNumber": "8765436789",
"routingNumber": "111000012"
},
Check Details
"data": {
"checkNumber": 0,
"memo": "Self transfer",
"checkDate": "05-13-2025"
Field | Description |
---|---|
checkNumber |
Optional check number for the payment. If set to 0 or null, the system will automatically assign the next available number based on the check series defined for the bank account. You can manually specify a different check number, but future checks will continue to follow the defined check series unless a different number is explicitly provided again. |
memo |
Optional memo included with the payment. |
checkDate |
The date on the check (format: MM-DD-YYYY). This must be the current date or up to 30 days in the future. |
Remittance Data
Remittance data provides a detailed breakdown of the payment. This can include information such as the invoice numbers, dates, and amounts that the payment covers. This information helps vendors accurately apply the payment in their accounting systems and is printed on the check stub.
Define Remittance Data Columns
Use the headings array to define 2–6 columns for the remittance data. Each heading must include a column name
and the type
of data to be displayed in the column (e.g., Date, Decimal).
Field | Description |
---|---|
name |
The column name in which the value appears. |
type |
The type of data to be displayed in the column. |
Populate Remittance Data Rows
In the rows array, define the values that will be printed for each remittance item, following the order and types defined in headings. You can define up to a maximum of 15 rows of remittance data. For each value in a row you must specify the following:
Field | Description |
---|---|
name |
The column name in which the value appears. This must be a column name defined in the headings array. |
value |
The specific value. |
type |
The data type of the column. This must match the data type defined for the column in the headings array. |
The following is an example of a remittance data object:
"remittanceData": {
"headings": [
{ "name": "Invoice Date", "type": "Date" },
{ "name": "Amount", "type": "decimal" }
],
"rows": [
[
{ "name": "Invoice Date", "value": "02-24-2025", "type": "Date" },
{ "name": "Amount", "value": "1000.00", "type": "decimal" }
],
[
{ "name": "Invoice Date", "value": "02-27-2025", "type": "Date" },
{ "name": "Amount", "value": "800.34", "type": "decimal" }
]
]
The following table shows the remittance data that would be printed on the check stub based on the above remittance data object:
Invoice Date | Amount |
---|---|
02-24-2025 |
$1000.00 |
02-27-2025 |
800.34 |
Monitoring Payment Status
When an Outbound Payment check request is submitted, you can monitor the status of the payment using the POST Get Outbound Payment Timeline method. This method returns a chronological array of status transitions for a specified paymentId, including key milestones like, check printing, mailing, delivery, or cancellation. This method can be used to poll for payment tracking updates or for debugging delays in check delivery.
The POST Get Outbound Payment Timeline method accepts the unique payment ID as the single request parameter.
{
"paymentId": "48b11b20-b5d7-4751-9c5d-51ddb902ee35"
}
The response array includes the following information for each payment status event:
Field | Description |
---|---|
paymentStatus |
Overall payment status (e.g., "InProcess" , "Cancelled" ) |
paymentMethodStatus |
Method-specific (check) status (e.g., "Printed" , "Transit" ) |
modifiedOn |
Timestamp for the status update |
Response Example
[
{
"paymentStatus": "InProcess",
"paymentMethodStatus": "Accepted",
"modifiedOn": "2025-03-25T18:34:12"
},
{
"paymentStatus": "InProcess",
"paymentMethodStatus": "Printed",
"modifiedOn": "2025-03-25T19:34:12"
},
{
"paymentStatus": "InProcess",
"paymentMethodStatus": "Mailed",
"modifiedOn": "2025-03-26T08:15:22"
},
{
"paymentStatus": "InProcess",
"paymentMethodStatus": "Delivered",
"modifiedOn": "2025-03-27T10:42:07"
}
]
Cancelling a Payment
To stop a payment that is still in progress, use the POST Cancel Outbound Payment method. This method allows a merchant to cancel an outbound payment as long as the payment has not yet reached the Printed
status.
The POST Cancel Outbound Payment Timeline method accepts the unique payment ID as the single request parameter.
{
"paymentId": "5a67546c-2336-44ed-993e-8cd4f898e401"
}
If the cancellation is successful, the API returns HTTP status code 200 OK
.
Retrieving Outbound Payment Information
The Outbound Payments API provides two methods available for retrieving payment information. You can retrieve detailed information for a single payment or search across multiple payments based on specified criteria.
Get Details for a Specific Payment
Use the POST Get Outbound Payment Details method to retrieve full information for a single outbound payment using its paymentId
. This includes merchant and vendor identifiers, payment method, amount, status, and remittance data (if available).
The POST Get Outbound Payment Details method accepts the unique payment ID as the single request parameter.
{
"paymentId": "a0aea05b-5567-4dad-9a0b-1057ba82daa2"
}
Response example
{
"merchantId": "PZdOm6xQ",
"vendorId": "BL0cd5A8",
"vendorName": "Harbor Mutual Insurance",
"merchantDBAName": "HMI",
"paymentId": "a0aea05b-5567-4dad-9a0b-1057ba82daa2",
"checkNumber": 100123,
"paymentMethod": "Check",
"amount": 1083.75,
"bankName": "Bank of Example",
"bankAccountNumber": "9876543210",
"paymentStatus": "InProcess",
"paymentMethodStatus": "Printed",
"remittanceData": "null"
}
Search Across Multiple Payments
Use the POST Search Outbound Payments method to retrieve a list of outbound payments matching specific filter criteria such as vendor name, payment method, amount, or status. The results are paginated and include summary data for each matching payment.
You can search for Outbound Payments using the following query string parameters:
Parameter | Description |
paymentMethodType | Filters results by the type of payment method used. |
vendorID | Filters results by the unique vendor ID. |
vendorName | Filters results by the vendor's name. |
paymentId | Filters results by the unique ID of the outbound payment. |
requestedDate | Filters results by the date the payment was requested. Format: MM-DD-YYYY. |
paymentStatus | Filters results by the status of the payment (e.g., Pending, Printed, Canceled). |
amount | Filters results by the payment amount. |
Request Example
https://api.uat.anddone.com/vendorapi/secure/outboundpayments/search?vendorId=2v6LbQ28
Response Example
{
"totalAmount": 10402.04,
"totalRowCount": 6,
"data": [
{
"paymentId": "472f50c9-4492-4a1f-a97f-be14156fd077",
"vendorName": "XYZ Vendor",
"paymentMethodType": "Checks",
"paymentMethodStatus": "Accepted",
"requestedDate": "03/24/2025 22:27:03",
"amount": "1750.34"
},
{
"paymentId": "59a0e4b7-9978-4af8-8913-d8bf2712616d",
"vendorName": "XYZ Vendor",
"paymentMethodType": "Checks",
"paymentMethodStatus": "Transit",
"requestedDate": "03/24/2025 23:19:05",
"amount": "1800.34"
}
]