Skip to main content

Outbound Payments

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:

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"
    }
  ]