Skip to main content

Outbound Payments

Onboarding and Managing Vendors Using the API


To send outbound payments to a vendor, the vendor must be onboarded, registered in the merchants profile and approved. This guide explains how to use the AndDone Vendor Management API to onboard and manage vendors for outbound payments. Merchants can perform the following actions using this API:

Prerequisites

Before using the Vendor Management API, ensure the Outbound Payments feature is enabled in the AndDone Merchant Portal.

Adding a New Vendor

To send payments to a new vendor, the vendor must be added to the merchant's profile and approved. This onboarding process ensures that the vendor is registered, has valid contact and remittance details, and meets compliance requirements.

This process involves the following steps:

  1. Gather vendor details: Collect the required information such as legal entity type, contact information, physical and remittance addresses.
  2. Create the vendor profile: Submit the vendor’s information by calling POST Add Vendor .
  3. Vendor review and approval: Upon submission, the vendor’s status will be set to Reviewing, pending review by the AndDone administrator.
  4. Track approval status: During the review process, you can use the POST Get Vendor Timeline or the POST Get Vendor by ID method to poll for vendor status updates.
  5. Begin payments: When the review process is complete and the vendor status is set to Approved, the vendor becomes eligible to receive outbound payments.

To add a new vendor, call the POST Add Vendor method.

Request Body Example

{
    "vendorName": "Brand-X",
    "vendorAliasName": "BXI",
    "vendorDbName": "VCS",
    "legalEntityType": "LimitedPartnership",
    "paymentMethodType": "Check",
    "notificationType": "Email",
    "VendorNotes": "This is a note about the vendor.",
    "phoneNumber": "9167923006",
    "email": "[email protected]",
    "url": "https://example.com",
    "isMobileNumber": "true",

    "physicalAddress": {
        "attention": "Mark Smith",
        "addressLine1": "142 Park Rd",
        "addressLine2": "Suite 28",
        "city": "Pittsford",
        "state": "NY",
        "AddressType": 3,
        "country": "US",
        "postalCode": "14534",
        "addresssource": "2"
    },
    "useSameAsPhysicalAddress": false,
    "remittanceAddress": {
        "attention": "John Smith",
        "addressLine1": "22 Degroat Rd",
        "addressLine2": "Suite 11",
        "AddressType": 1,
        "city": "Burleigh",
        "state": "WI",
        "country": "US",
        "postalCode": "07827",
        "addresssource": "2"
    }
}

If the physical and remittance addresses are the same, set useSameAsPhysicalAddress to true, and set the remittanceAddress object to null:

"useSameAsPhysicalAddress": true,
"remittanceAddress": null

Editing Vendor Information

Once a vendor has been added to the system, you can update their details using the POST Edit Vendor method. This method allows merchants to make corrections or changes to a vendor’s profile, such as updating addresses, contact information, legal entity types, or notification preferences.

Important: When you edit vendor information the vendor's status is set to Reviewing while the updated information is reviewed by the AndDone administrator. You will not be able to send outbound payments until the vendor's status is set to Approved.

Request Body Example

You must provide the vendorId of the vendor being updated. The request body should include all fields to be preserved or updated.

{
        "vendorId": "dmeidne",
        "vendorName": "Brand-X",
        "vendorAliasName": "BXI",
        "vendorDbName": "VCS",
        "legalEntityType": "LimitedPartnership",
        "paymentMethodType": "Check",
        "notificationType": "Email",
        "phoneNumber": "9167923006",
        "email": "[email protected]",
        "faxNumber": "8888888888",
        "url": "https://example.com",
        "isMobileNumber": "true",

        "physicalAddress": {
            "attention": "Mark Smith",
            "addressLine1": "142 Park Rd",
            "addressLine2": "Suite 28",
            "city": "Pittsford",
            "state": "NY",
            "AddressType": 3,
            "country": "US",
            "postalCode": "14534",
            "addresssource": "2"
        },
"useSameAsPhysicalAddress": true,
"remittanceAddress": null
    },

Response Example

The updated vendor record is returned, including all fields and the modification timestamp. Note that the vendorStatus is now set to Reviewing.

 {
      "id": "Ky8y1985",
      "paymentBasedId": null,
      "legalEntityType": "LimitedPartnership",
      "merchantId": "1qx7epdP",
      "vendorName": "Brand-X",
      "vendorAliasName": "BXI",
      "vendorDbName": "VCS",
      "paymentMethodType": "Check",
      "notificationType": "Email",
      "VendorNotes": "This is a note about the vendor.", 
      "phoneNumber": "9167923006",
      "isMobileNumber": true,
      "email": "[email protected]",
      "url": "https://example.com",
      "vendorStatus": "Reviewing",
      "useSameAsPhysicalAddress": false,
      "physicalAddress": {
        "attention": "Mark Smith",
        "addressLine1": "142 Park Rd",
        "addressLine2": "Suite 28",
        "city": "Pittsford",
        "state": "NY",
        "AddressType": "Physical",
        "country": "US",
        "postalCode": "14534",
        "addressType": "Physical",
        "addressSource": "Smarty_lookup"
    },
      "remittanceAddress": {
        "attention": "John Smith",
        "addressLine1": "22 Degroat Rd",
        "addressLine2": "Suite 11",
        "AddressType": "Remittance",
        "city": "Burleigh",
        "state": "WI",
        "country": "US",
        "postalCode": "07827",
        "addressType": "Remittance",
        "addressSource": "Smarty_lookup"
    },
      "createdBy": "joeuser",
      "modifiedBy": "joeuser",
      "createdOn": "08-27-2024 06:06:56",
      "modifiedOn": "08-27-2024 06:06:56"
    }

Monitoring Vendor Status

There are two methods available for retrieving vendor status information. You can retrieve the complete history of status changes for a vendor using POST Get Vendor Timeline or retrieve the current status along with more detailed vendor information using POST Get Vendor by ID.

Retrieving Vendor Status Timeline

Use POST Get Vendor Timeline method to track the complete history of status changes for a vendor using theirvendorId. You can use this method to:

  • Track approval progress: Poll this endpoint after submitting a new vendor to determine when the vendorStatus is set toApproved.
  • Audit lifecycle events: Review when and why a vendor was suspended, unsuspended, or deleted.

Request Body Example

{
  "vendorId": "ZdOoLkod"
}

Response Fields

Field Description
vendorStatus The status of the vendor at a specific point in time (e.g., Reviewing, Approved, Suspended).
reason An explanation or note regarding the status change. Can be null if not provided.
eventDate The date and time when the status change occurred, in MM-DD-YYYY HH:mm:ss format.
createdBy The user or system role that triggered the status update (e.g., ProcurementManager, SupportAdmin).

Response Body Example

[
    {
        "vendorStatus": "Reviewing",                
        "reason": null,                          
        "eventDate": "12-05-2024 07:07:10",         
        "createdBy": "ProcurementManager"   
    },
    {
        "vendorStatus": "Approved",
        "reason": "Verified and approved",
        "eventDate": "12-05-2024 08:15:30",
        "createdBy": "ApprovalManager"
    },
    {
        "vendorStatus": "Suspended",
        "reason": "Issue regarding vendor contract",
        "eventDate": "12-15-2024 10:20:05",
        "createdBy": "ComplianceTeam"
    },
    {
        "vendorStatus": "Approved",
        "reason": "Issue resolved",
        "eventDate": "12-18-2024 12:45:15",
        "createdBy": "SupportAdmin"
    }
]

Retrieving the Current Vendor Status

To see only the current status of a vendor, you can use the POST Get Vendor by ID meth0d. This method also returns complete profile information for the vendor. For more information about using this method, see Getting Details for a Specific Vendor.

Managing Vendor Status

Vendor statuses can be managed using three actions: suspend, unsuspend, and delete. These actions allow merchants to pause, reinstate, or permanently remove vendor profiles based on operational or compliance needs.

Suspend a Vendor

The POST Suspend Vendor method allows merchants to temporarily disable a vendor from receiving payments. This may be necessary, for example, if the vendor has incomplete compliance documentation, pending contract issues, or invalid remittance information.

A vendor must currently be in Approved status before it can be suspended.

Request Body Example

{
    "vendorId": "vendor123",
    "reason": "Vendor service agreement pending renewal"
}

If the vendor is successfully suspended, the API returns HTTP status code 200 OK.

Unsuspend a Vendor

The POST Unsuspend Vendor method used to reinstate a suspended vendor, allowing them to receive outbound payments. The method returns the vendor to Approved status.

Request Body Example

{
    "vendorId": "vendor123",
    "reason": "Vendor service agreement renewed"
}

If the vendor is successfully unsuspended, the API returns HTTP status code 200 OK

Delete a Vendor

The POST Delete Vendor method used to permanently remove a vendor from the merchant's profile. Once deleted, the vendor cannot be reinstated and will no longer be available for outbound payment transactions.

Request Body Example

{
    "vendorId": "vendor123",
    "reason": "We are no longer using this vendor."
}

If the vendor is successfully deleted, the API returns HTTP status code 200 OK

Retrieving Vendor Information

There are two methods available for retrieving vendor information. You can retrieve detailed information for a single vendor or search across multiple vendors based on specified criteria.

Get Details for a Specific Vendor

Use the POST Get Vendor by ID method to retrieve full information for a single vendor using its vendorId. This includes basic vendor profile information, current vendor status, and verification results.

Request Body Example

{
    "vendorId": "ZdOoLkod"
}

Response Body Example

{
    "id": "ZdOoLkod",
    "paymentBasedId": null,
    "legalEntityType": "Corporation",
    "merchantId": "qDxngr8a",
    "vendorName": "Brandx",
    "vendorAliasName": null,
    "vendorDbName": "BXDB",
    "paymentMethodType": "Check",
    "notificationType": "Email",
    "vendorNotes": null,
    "phoneNumber": "9821646671",
    "isMobileNumber": false,
    "email": "[email protected]",
    "url": null,
    "vendorStatus": "Reviewing",
    "useSameAsPhysicalAddress": true,
    "physicalAddress": {
        "vendorId": "ZdOoLkod",
        "attention": "John Doe",
        "addressLine1": "142 1/2 10th Ave",
        "addressLine2": null,
        "city": "South Charleston",
        "state": "WV",
        "country": "US",
        "postalCode": "25303",
        "addressType": "Physical",
        "addressSource": "Smarty_lookup",
        "verificationStatus": "Valid"
    },
    "remittanceAddress": {
        "vendorId": "ZdOoLkod",
        "attention": "John Doe",
        "addressLine1": "142 1/2 10th Ave",
        "addressLine2": null,
        "city": "South Charleston",
        "state": "WV",
        "country": "US",
        "postalCode": "25303",
        "addressType": "Remittance",
        "addressSource": "Smarty_lookup",
        "verificationStatus": "Valid"
    },
    "verificationResults": [
        {
            "vendorId": "ZdOoLkod",
            "verificationType": "OFACCheck",
            "verificationStatus": "Incomplete",
            "verificationReason": null,
            "verifiedOn": "03-10-2025 20:58:46"
        },
        {
            "vendorId": "ZdOoLkod",
            "verificationType": "SmartyCheck",
            "verificationStatus": "Valid",
            "verificationReason": "",
            "verifiedOn": "03-10-2025 20:58:46"
        }
    ],
    "createdBy": "joeuser",
    "modifiedBy": "System",
    "createdOn": "03/10/2025 20:58:42",
    "modifiedOn": "03/10/2025 20:58:46",
    "approvedDate": null,
    "template": {
        "id": "KGx1n813",
        "templateName": "SystemDefaultTemplate",
        "templateJson": "[{ \"name\": \"Invoice\", \"type\":\"Text\" },{ \"name\": \"Amount\", \"type\":\"Decimal\" },{ \"name\":\"Date\", \"type\": \"Date\" }]",
        "isSystemDefault": true
    }
}

Search Across Multiple Vendors

Use the POST Search Vendors method to retrieve a list of vendors matching specific filter criteria such as vendor name or status. The results are paginated and include summary data for each matching vendor.

You can search for vendors using the following query string parameters:

Parameter Description
vendorName Filters results by the vendor's name.
attention Filters results by the attention line or contact person associated with the vendor.
vendorID Filters results by the unique vendor ID.
paymentMethodType Filters results by the type of payment method used (e.g., ACH, Checks, Wire).
createdOn Filters results by the date the vendor record was created. Format: MM-DD-YYYY.
createdBy Filters results by the user who created the vendor record.
vendorStatus Filters results by the vendor’s status.

Example Request
https://api.uat.anddone.com/vendorapi/secure/merchants/vendors/search?paymentMethodType=checks

Response Example

{
    "totalRowCount": 3,
    "data": [
        {
            "id": "VxjOQe98",
            "paymentBasedId": "CVxjOQe98",
            "legalEntityType": "LimitedLiabilityCompany",
            "merchantId": "Vn8M1N82",
            "vendorName": "Srilalitha Supplychain",
            "vendorAliasName": null,
            "vendorDbName": "Srilalitha Supplychain",
            "paymentMethodType": "Checks",
            "notificationType": "Email",
            "vendorNotes": null,
            "phoneNumber": "2147896321",
            "isMobileNumber": false,
            "email": "[email protected]",
            "url": null,
            "vendorStatus": "Deleted",
            "useSameAsPhysicalAddress": true,
            "physicalAddress": {
                "vendorId": "VxjOQe98",
                "attention": "Sri lalitha N",
                "addressLine1": "1055 Broadway Blvd",
                "addressLine2": "4th floor",
                "city": "Kansas City",
                "state": "MO",
                "country": "US",
                "postalCode": "64105",
                "addressType": "Physical",
                "addressSource": "Manual",
                "verificationStatus": "Valid"
            },
            "remittanceAddress": {
                "vendorId": "VxjOQe98",
                "attention": "Sri lalitha N",
                "addressLine1": "1055 Broadway Blvd",
                "addressLine2": "4th floor",
                "city": "Kansas City",
                "state": "MO",
                "country": "US",
                "postalCode": "64105",
                "addressType": "Remittance",
                "addressSource": "Manual",
                "verificationStatus": "Valid"
            },
            "verificationResults": [],
            "createdBy": "SriTestQATliveIP",
            "modifiedBy": "SriTestQATliveIP",
            "createdOn": "03-20-2025 04:57:24",
            "modifiedOn": "03-21-2025 11:02:53",
            "approvedDate": "03-21-2025 11:00:38",
            "template": null
        },
        {
            "id": "2v6LbQ28",
            "paymentBasedId": "C2v6LbQ28",
            "legalEntityType": "Individual",
            "merchantId": "Vn8M1N82",
            "vendorName": "Mia test",
            "vendorAliasName": null,
            "vendorDbName": "Mia test demo",
            "paymentMethodType": "Checks",
            "notificationType": "Email",
            "vendorNotes": null,
            "phoneNumber": "2147896321",
            "isMobileNumber": false,
            "email": "[email protected]",
            "url": null,
            "vendorStatus": "Approved",
            "useSameAsPhysicalAddress": true,
            "physicalAddress": {
                "vendorId": "2v6LbQ28",
                "attention": "Mia H",
                "addressLine1": "4900 Throne Hall Dr",
                "addressLine2": "",
                "city": "frisco",
                "state": "TX",
                "country": "US",
                "postalCode": "75033",
                "addressType": "Physical",
                "addressSource": "Manual",
                "verificationStatus": "Valid"
            },
            "remittanceAddress": {
                "vendorId": "2v6LbQ28",
                "attention": "Mia H",
                "addressLine1": "4900 Throne Hall Dr",
                "addressLine2": "",
                "city": "frisco",
                "state": "TX",
                "country": "US",
                "postalCode": "75033",
                "addressType": "Remittance",
                "addressSource": "Manual",
                "verificationStatus": "Valid"
            },
            "verificationResults": [],
            "createdBy": "SriTestQATliveIP",
            "modifiedBy": "SriTestQATliveIP",
            "createdOn": "03-21-2025 10:47:41",
            "modifiedOn": "03-25-2025 14:32:08",
            "approvedDate": "03-21-2025 10:53:51",
            "template": null
        },
        {
            "id": "bvl94AJx",
            "paymentBasedId": null,
            "legalEntityType": "Individual",
            "merchantId": "Vn8M1N82",
            "vendorName": "Vendor with Address more than 35 charcaters",
            "vendorAliasName": null,
            "vendorDbName": "Vendor with Address",
            "paymentMethodType": "Checks",
            "notificationType": "Email",
            "vendorNotes": null,
            "phoneNumber": "2147896321",
            "isMobileNumber": false,
            "email": "[email protected]",
            "url": null,
            "vendorStatus": "Reviewing",
            "useSameAsPhysicalAddress": true,
            "physicalAddress": {
                "vendorId": "bvl94AJx",
                "attention": "Sri lalitha N",
                "addressLine1": " 12345 long street Name That is Too Long for printing",
                "addressLine2": "12345 long street Name That is Too Long for printing",
                "city": "chargoggagoggmanchauggagoggchaubunagungamaugg",
                "state": "TX",
                "country": "US",
                "postalCode": "75033-3333",
                "addressType": "Physical",
                "addressSource": "Manual",
                "verificationStatus": "NA"
            },
            "remittanceAddress": {
                "vendorId": "bvl94AJx",
                "attention": "Sri lalitha N",
                "addressLine1": " 12345 long street Name That is Too Long for printing",
                "addressLine2": "12345 long street Name That is Too Long for printing",
                "city": "chargoggagoggmanchauggagoggchaubunagungamaugg",
                "state": "TX",
                "country": "US",
                "postalCode": "75033-3333",
                "addressType": "Remittance",
                "addressSource": "Manual",
                "verificationStatus": "Invalid"
            },
            "verificationResults": [],
            "createdBy": "SriTestQATliveIP",
            "modifiedBy": "System",
            "createdOn": "03-24-2025 17:10:18",
            "modifiedOn": "03-24-2025 17:10:22",
            "approvedDate": null,
            "template": null
        }
    ]
}