Payabli Vendor API
The Vendor API from Payabli — 5 operation(s) for vendor.
The Vendor API from Payabli — 5 operation(s) for vendor.
openapi: 3.1.0
info:
title: API reference Bill Vendor API
version: 1.0.0
servers:
- url: https://api-sandbox.payabli.com/api
description: Sandbox
- url: https://api.payabli.com/api
description: Production
tags:
- name: Vendor
paths:
/Vendor/single/{entry}:
post:
operationId: AddVendor
summary: Create vendor
description: Creates a vendor in an entrypoint.
tags:
- Vendor
parameters:
- name: entry
in: path
description: Entrypoint identifier.
required: true
schema:
type: string
- name: Authorization
in: header
description: 'OAuth2 Bearer access token from the client-credentials flow. See [OAuth authentication](/developers/oauth-authentication).
'
required: true
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliApiResponseVendors'
'400':
description: Bad request / invalid data.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
'401':
description: Unauthorized request.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
'500':
description: Internal server error.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
'503':
description: Database connection error.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/VendorData'
/Vendor/{idVendor}:
get:
operationId: GetVendor
summary: Get vendor
description: Retrieves a vendor's details, including enrichment status and payment acceptance info when available.
tags:
- Vendor
parameters:
- name: idVendor
in: path
description: Vendor ID.
required: true
schema:
type: integer
- name: Authorization
in: header
description: 'OAuth2 Bearer access token from the client-credentials flow. See [OAuth authentication](/developers/oauth-authentication).
'
required: true
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/VendorQueryRecord'
put:
operationId: EditVendor
summary: Update vendor
description: Updates a vendor's information. Send only the fields you need to update.
tags:
- Vendor
parameters:
- name: idVendor
in: path
description: Vendor ID.
required: true
schema:
type: integer
- name: Authorization
in: header
description: 'OAuth2 Bearer access token from the client-credentials flow. See [OAuth authentication](/developers/oauth-authentication).
'
required: true
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliApiResponseVendors'
'400':
description: Bad request / invalid data.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
'401':
description: Unauthorized request.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
'500':
description: Internal server error.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
'503':
description: Database connection error.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/VendorData'
delete:
operationId: DeleteVendor
summary: Delete vendor
description: Delete a vendor.
tags:
- Vendor
parameters:
- name: idVendor
in: path
description: Vendor ID.
required: true
schema:
type: integer
- name: Authorization
in: header
description: 'OAuth2 Bearer access token from the client-credentials flow. See [OAuth authentication](/developers/oauth-authentication).
'
required: true
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliApiResponseVendors'
'400':
description: Bad request / invalid data.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
'401':
description: Unauthorized request.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
'500':
description: Internal server error.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
'503':
description: Database connection error.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
/Vendor/enrich/{entry}:
post:
operationId: EnrichVendor
summary: Enrich vendor
description: Triggers AI-powered vendor enrichment for an existing vendor. Runs one or more enrichment stages (invoice scan, web search) based on the `scope` parameter. Can automatically apply extracted payment acceptance info and vendor contact information to the vendor record, or return raw results for manual review. Contact Payabli to enable this feature.
tags:
- Vendor
parameters:
- name: entry
in: path
description: Entrypoint identifier.
required: true
schema:
type: string
- name: Authorization
in: header
description: 'OAuth2 Bearer access token from the client-credentials flow. See [OAuth authentication](/developers/oauth-authentication).
'
required: true
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/VendorEnrichResponse'
'400':
description: Bad request / invalid data.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
'401':
description: Unauthorized request.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
'500':
description: Internal server error.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
'503':
description: Database connection error.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/VendorEnrichRequest'
/Vendor/enrich/schedule_call/{entry}:
post:
operationId: ScheduleEnrichmentCall
summary: Schedule outreach call
description: Schedules an AI outreach call to a vendor to collect their preferred payment method and contact email. This is the third enrichment stage. Calls are scheduled for the next business day at around 9 AM in the vendor's timezone, with retries on no-answer and a fallback payment method applied when retries are exhausted. This feature is opt-in at the org level. Contact your Payabli representative to enable it, provision a phone number, and discuss pricing.
tags:
- Vendor
parameters:
- name: entry
in: path
description: Entrypoint identifier.
required: true
schema:
type: string
- name: Authorization
in: header
description: 'OAuth2 Bearer access token from the client-credentials flow. See [OAuth authentication](/developers/oauth-authentication).
'
required: true
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/VendorScheduleCallResponse'
'400':
description: Bad request / invalid data.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
'401':
description: Unauthorized request.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
'429':
description: Too many requests. The calling system is rate limited.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
'500':
description: Internal server error.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
'503':
description: Database connection error.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/VendorScheduleCallRequest'
/Vendor/{idVendor}/enrichment/call-status:
get:
operationId: GetEnrichmentCallStatus
summary: Get outreach call status
description: Returns the latest AI outreach call activity for a vendor. The response is a composite object with a `state` discriminator (`none`, `scheduled`, `successful`, or `failed`); the block that matches the current state is populated. When the vendor has no call activity, `state` is `none` and the response returns HTTP 200.
tags:
- Vendor
parameters:
- name: idVendor
in: path
description: ID of the vendor to read call status for.
required: true
schema:
type: integer
format: int64
- name: Authorization
in: header
description: 'OAuth2 Bearer access token from the client-credentials flow. See [OAuth authentication](/developers/oauth-authentication).
'
required: true
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/VendorCallStatusResponse'
'401':
description: Unauthorized request.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
'500':
description: Internal server error.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
'503':
description: Database connection error.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
components:
schemas:
VendorCallStatusResponse:
type: object
properties:
vendorId:
type: integer
format: int64
description: ID of the vendor this status applies to.
state:
type: string
description: 'Current call state. Values are: `none` (no call activity for the vendor), `scheduled` (a call is queued or being retried), `successful` (a call completed and returned data), or `failed` (the call didn''t complete successfully).'
scheduled:
$ref: '#/components/schemas/VendorCallStatusScheduled'
description: Populated when `state` is `scheduled`.
completed:
$ref: '#/components/schemas/VendorCallStatusCompleted'
description: Populated when `state` is `successful`.
failed:
$ref: '#/components/schemas/VendorCallStatusFailed'
description: Populated when `state` is `failed`.
description: Latest AI outreach call activity for a vendor. The populated block depends on the `state` discriminator.
title: VendorCallStatusResponse
VendorScheduleCallResponse:
type: object
properties:
responseCode:
$ref: '#/components/schemas/Responsecode'
pageIdentifier:
$ref: '#/components/schemas/PageIdentifier'
roomId:
$ref: '#/components/schemas/RoomIdNotInUse'
isSuccess:
$ref: '#/components/schemas/IsSuccess'
responseText:
$ref: '#/components/schemas/ResponseText'
responseData:
$ref: '#/components/schemas/VendorScheduleCallResponseData'
required:
- responseText
description: Response from the schedule outreach call endpoint.
title: VendorScheduleCallResponse
ContactsField:
type: array
items:
$ref: '#/components/schemas/Contacts'
description: List of contacts.
title: ContactsField
AccountId:
type: string
description: Custom identifier for payment connector.
title: AccountId
BankName:
type: string
description: Name of bank for account.
title: BankName
PayabliErrorBodyResponseData:
type: object
properties:
explanation:
type: string
description: Human-readable explanation of what happened.
todoAction:
type: string
description: Suggested resolution.
description: Object with detailed error context.
title: PayabliErrorBodyResponseData
Email:
type: string
format: email
description: Email address.
title: Email
CityNullable:
type: string
description: The city.
title: CityNullable
RoomIdNotInUse:
type: integer
format: int64
description: Field not in use on this endpoint. It always returns `0`.
title: RoomIdNotInUse
RemitEmail:
type: string
format: email
description: 'Remittance email address. Used for sending virtual cards and other
information about payouts.
'
title: RemitEmail
PayeeName:
type: string
description: Alternative name used to receive paper check.
title: PayeeName
Entrypointfield:
type: string
description: The entrypoint identifier.
title: Entrypointfield
PayabliApiResponseVendors:
type: object
properties:
isSuccess:
$ref: '#/components/schemas/IsSuccess'
pageIdentifier:
$ref: '#/components/schemas/PageIdentifier'
responseCode:
$ref: '#/components/schemas/Responsecode'
responseData:
type: integer
description: If the request was successful, this field contains the identifier for the vendor.
responseText:
$ref: '#/components/schemas/ResponseText'
required:
- responseText
title: PayabliApiResponseVendors
PageIdentifier:
type: string
description: Auxiliary validation used internally by payment pages and components.
title: PageIdentifier
Vendorid:
type: integer
description: Payabli identifier for vendor record.
title: Vendorid
FileContent:
type: object
properties:
fContent:
type: string
description: 'Content of file, Base64-encoded. Ignored if `furl` is specified. Max
upload size is 30 MB.
'
filename:
type: string
description: The name of the attached file.
ftype:
$ref: '#/components/schemas/FileContentFtype'
furl:
type: string
description: Optional URL provided to show or download the file remotely.
description: Contains details about a file. Max upload size is 30 MB.
title: FileContent
VendorData:
type: object
properties:
vendorNumber:
$ref: '#/components/schemas/VendorNumber'
AdditionalData:
$ref: '#/components/schemas/AdditionalDataMap'
address1:
$ref: '#/components/schemas/AddressNullable'
description: Vendor's street address. If any address field is provided, this field is required along with `city`, `state`, and `zip`. Allowed characters are letters, numbers, spaces, and `. ,
address2:
$ref: '#/components/schemas/AddressAddtlNullable'
description: Additional line for vendor's address, such as a suite or unit number. Always optional.
billingData:
$ref: '#/components/schemas/BillingData'
description: Object containing vendor's bank information.
city:
type: string
description: Vendor's city. Required if any address field is provided.
contacts:
$ref: '#/components/schemas/ContactsField'
description: Array of objects describing the vendor's contacts.
country:
type: string
description: Vendor's country. Must be `US` or `CA`. Defaults to `US` if not provided.
customField1:
type: string
description: Custom field 1 for vendor
customField2:
type: string
description: Custom field 2 for vendor
customerVendorAccount:
type: string
description: Account number of paypoint in the vendor side.
ein:
$ref: '#/components/schemas/VendorEin'
email:
$ref: '#/components/schemas/Email'
description: Vendor's email address. Required for vCard.
internalReferenceId:
type: integer
format: int64
description: Internal identifier for global vendor account.
locationCode:
$ref: '#/components/schemas/LocationCode'
mcc:
$ref: '#/components/schemas/Mcc'
name1:
$ref: '#/components/schemas/VendorName1'
name2:
$ref: '#/components/schemas/VendorName2'
payeeName1:
$ref: '#/components/schemas/PayeeName'
payeeName2:
$ref: '#/components/schemas/PayeeName'
paymentMethod:
$ref: '#/components/schemas/VendorPaymentMethodString'
phone:
$ref: '#/components/schemas/VendorPhone'
remitAddress1:
$ref: '#/components/schemas/Remitaddress1'
remitAddress2:
$ref: '#/components/schemas/Remitaddress2'
remitCity:
$ref: '#/components/schemas/Remitcity'
remitCountry:
$ref: '#/components/schemas/Remitcountry'
remitEmail:
$ref: '#/components/schemas/RemitEmail'
remitState:
$ref: '#/components/schemas/Remitstate'
remitZip:
$ref: '#/components/schemas/Remitzip'
state:
type: string
description: Vendor's state or province. Required if any address field is provided. Must be a valid US state abbreviation (such as `CA`, `NY`) or Canadian province abbreviation (such as `ON`, `BC`), depending on the `country` value.
vendorStatus:
$ref: '#/components/schemas/Vendorstatus'
zip:
type: string
description: Vendor's ZIP or postal code. Required if any address field is provided. For US addresses, use five digits (`12345`) or ZIP+4 format (`12345-6789`).
defaultMethodId:
type: string
description: Identifier for the vendor's default stored payment method.
attachment:
$ref: '#/components/schemas/FileContent'
description: 'PDF invoice attachment for AI-powered vendor enrichment.
When this feature is enabled and you include an attachment, the invoice is scanned and extracted vendor information is merged into the request.
Fields in the request body take precedence over extracted data.
If the scan fails, vendor creation proceeds with the original request data.
See the [vendor enrichment guide](/guides/pay-out-vendor-enrichment-overview) for details.
Contact Payabli to enable this feature.'
title: VendorData
CreatedAt:
type: string
format: date-time
description: Timestamp of when record was created, in UTC.
title: CreatedAt
BinData:
type: object
properties:
binMatchedLength:
type: string
description: 'The number of characters from the beginning of the card number that
were matched against a Bank Identification Number (BIN) or the Card
Range table.'
binCardBrand:
type: string
description: 'The card brand. For example, Visa, Mastercard, American Express,
Discover.'
binCardType:
type: string
description: 'The type of card: `Credit` or `Debit`. Case can vary between
processors, so compare this value case-insensitively.'
binCardCategory:
type: string
description: 'The category of the card, which indicates the card product. For example: Standard, Gold, Platinum, etc. The binCardCategory for prepaid cards is marked `PREPAID`.'
binCardIssuer:
type: string
description: The name of the financial institution that issued the card.
binCardIssuerCountry:
type: string
description: The issuing financial institution's country name.
binCardIssuerCountryCodeA2:
type: string
description: The issuing financial institution's two-character ISO country code. See [this resource](https://www.iso.org/obp/ui/#search) for a list of codes.
binCardIssuerCountryNumber:
type: string
description: The issuing financial institution's ISO standard numeric country code. See [this resource](https://www.iso.org/obp/ui/#search) for a list of codes.
binCardIsRegulated:
type: string
description: Indicates whether the card is regulated.
binCardUseCategory:
type: string
description: The use category classification for the card.
binCardIssuerCountryCodeA3:
type: string
description: 'The issuing financial institution''s three-character ISO country code.
See [this resource](https://www.iso.org/obp/ui/#search) for a list of
codes.'
description: 'Object containing information related to the card. This object is `null`
unless the payment method is card. If the payment method is Apple Pay, the
binData will be related to the DPAN (device primary account number), not
the card connected to Apple Pay.'
title: BinData
VendorPhone:
type: string
description: 'Vendor''s phone number. Phone number can''t contain non-digit characters
like hyphens or parentheses.
'
title: VendorPhone
ResponseText:
type: string
description: 'Response text for operation: ''Success'' or ''Declined''.
'
title: ResponseText
Remitcountry:
type: string
description: 'Remittance address country. Used for mailing paper checks. Must be `US`
or `CA`. Defaults to `US` if not provided.
'
title: Remitcountry
EnrollmentStatus:
type: string
description: Enrollment status of vendor in payables program.
title: EnrollmentStatus
InternalReferenceId:
type: integer
format: int64
description: An internal reference ID.
title: InternalReferenceId
VendorName2:
type: string
description: 'Secondary name for vendor. If provided, allowed characters are the
same as the `name1` field.
'
title: VendorName2
PayabliErrorBody:
type: object
properties:
isSuccess:
type: boolean
description: Always `false` for error responses.
responseCode:
type: integer
description: 'Code for the response. Learn more in
[API Response Codes](/developers/api-reference/api-responses).
'
responseText:
type: string
description: Error text describing what went wrong.
responseData:
$ref: '#/components/schemas/PayabliErrorBodyResponseData'
description: Object with detailed error context.
required:
- isSuccess
- responseText
description: 'Shape returned by every Payabli API error response. The `responseData`
object carries human-readable error context.
'
title: PayabliErrorBody
VendorEnrichmentWebSearch:
type: object
properties:
phone:
type: string
description: Phone number found through web search. Format isn't guaranteed.
phoneType:
type: string
description: Phone classification. Values are `main`, `billing`, or `customer_service`.
email:
type: string
description: Email address.
emailType:
type: string
description: Email classification. Values are `billing`, `general`, or `customer_service`.
street:
type: string
description: Street address.
city:
type: string
description: City.
state:
type: string
description: State (two-letter abbreviation).
zipCode:
type: string
description: ZIP code.
country:
type: string
description: Country code.
addressType:
type: string
description: Address classification. Values are `business`, `headquarters`, or `mailing`.
paymentLink:
type: string
description: Payment portal URL.
paymentLinkType:
type: string
description: Link classification. Values are `payment_portal`, `billing_page`, or `general_website`.
cardAccepted:
type: string
description: Whether the vendor accepts card payments. Values are `yes`, `no`, or `unable to determine`.
achAccepted:
type: string
description: Whether the vendor accepts ACH payments. Values are `yes`, `no`, or `unable to determine`.
checkAccepted:
type: string
description: Whether the vendor accepts check payments. Values are `yes`, `no`, or `unable to determine`.
description: Vendor contact information and payment acceptance info found through web search.
title: VendorEnrichmentWebSearch
VendorCallStatusCompleted:
type: object
properties:
completedAt:
type: string
description: ISO-8601 timestamp when the call ended.
durationSeconds:
type: integer
description: Call duration in seconds.
summary:
type: string
description: Short summary of the call.
callId:
type: string
description: Reference identifier for the call.
transcript:
type:
- string
- 'null'
description: Full call transcript. `null` when no transcript is available.
extractedData:
$ref: '#/components/schemas/VendorCallStatusExtractedData'
description: Payment and contact details collected during the call.
description: Details of a completed outreach call that returned data.
title: VendorCallStatusCompleted
Vendorstatus:
type: integer
description: 'Vendor''s status. Allowed values:
- `0` Inactive
- `1` Active
- `-99` Deleted
'
title: Vendorstatus
BankAccountHolderType:
type: string
enum:
- Personal
- Business
description: Describes whether the bank is a personal or business account.
title: BankAccountHolderType
LocationCode:
type: string
description: A location code used to identify the vendor's location.
title: LocationCode
AdditionalDataString:
type: string
description: "Custom dictionary of key:value pairs. You can use this field to store any\ndata related to the object or for your system. Example usage:\n\n```json\n{\n \"additionalData\": {\n \"key1\": \"value1\",\n \"key2\": \"value2\",\n \"key3\": \"value3\"\n }\n}\n```\n"
title: AdditionalDataString
RoutingAccount:
type: string
description: Routing number of bank account.
title: RoutingAccount
VendorEnrichmentData:
type: object
properties:
invoiceScan:
$ref: '#/components/schemas/VendorEnrichmentInvoiceScan'
description: Results from the invoice scan stage, if it ran.
webSearch:
$ref: '#/components/schemas/VendorEnrichmentWebSearch'
description: Results from the web search stage, if it ran.
description: Container for enrichment stage results.
title: VendorEnrichmentData
VendorEin:
type: string
description: 'EIN/Tax ID for vendor. Must be nine digits formatted as `XX-XXXXXXX`
(for example, `12-3456789`).
'
title: VendorEin
IsSuccess:
type: boolean
description: 'Boolean indicating whether the operation was successful. A `true` value
indicates success. A `false` value indicates failure.
'
title: IsSuccess
Ein:
type: string
description: Business EIN or tax ID. This value is masked in API responses.
title: Ein
VendorCallStatusScheduled:
type: object
properties:
scheduledFor:
type: string
description: ISO-8601 timestamp of the next scheduled call attempt.
attemptsRemaining:
type: integer
description: Number of call attempts left before retries are exhausted.
maxAttempts:
type: integer
description: Maximum number of call attempts configured for this schedule.
description: Details of a queued or in-progress outreach call.
title: VendorCallStatusScheduled
Dbaname:
type: string
description: 'The alternate or common name that this business is doing business under,
usually referred to as a DBA name.
'
title: Dbaname
BillingDataResponse:
type: object
properties:
id:
type: integer
description: The bank's ID in Payabli.
accountId:
$ref: '#/components/schemas/AccountId'
description: An identifier for the bank account. If not provided during creation or update, the system generates one in the format `acct-{first_digit}xxxxx{last_4_digits}` based on the account number. If a duplicate exists within the same service at the paypoint, a numeric suffix is appended, such as `-2`. This value is also used as the identifier for the bank account's associated payment connector.
nickname:
type: string
bankName:
$ref: '#/components/schemas/BankName'
routingAccount:
$ref: '#/components/schemas/RoutingAccount'
accountNumber:
$ref: '#/components/schemas/AccountNumber'
typeAccount:
$ref: '#/components/schemas/TypeAccount'
bankAccountHolderName:
$ref: '#/components/schemas/BankAccountHolderName'
bankAccountHolderType:
$ref: '#/components/schemas/BankAccountHolderType'
bankAccountFunction:
type: integer
de
# --- truncated at 32 KB (57 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/payabli/refs/heads/main/openapi/payabli-vendor-api-openapi.yml